ForHosting KIT · OCR & Data Extraction

Scan a business card

A stack of business cards from a trade show is a pile of contacts that don't exist yet in any CRM. This endpoint reads a photo of a card and returns name, title, company, phone, email and address as structured JSON, so a handshake turns into a lead record without anyone typing.

● StablePer request + per image$0.010
Use it from WebAPIEmailApp soonTelegram soon

Run this on our servers with your account. Free tools run in your browser; this one bills your KIT balance per the price above.

The card that never quite gets entered

Business cards survive as a networking ritual precisely because they're fast to exchange, but that speed comes at a cost afterward: the card sits in a jacket pocket, a drawer, a shoebox, until eventually it's thrown out unread because typing forty contacts into a CRM after a conference is nobody's idea of a good Monday. The card did its job at the moment of the handshake; this endpoint finishes the job it started, closing the gap between a good conversation and a usable follow-up.

Who scans cards instead of typing them

Sales teams processing a trade-show badge scanner's haul of card photos into CRM leads, networking apps that let a user snap a card and save a contact on the spot, event organizers offering attendees a lead-capture feature, and anyone digitizing an inherited Rolodex of paper cards before it gets lost for good.

The contact record you get back

Send the photo, get a task_id immediately, and the finished job returns full name, job title, company, phone numbers, email address and physical address as separate JSON fields — the same shape a contact form asks for, ready to insert straight into a CRM or address book instead of a block of unstructured text.

How it fits a lead-capture flow

Because the call is asynchronous and billed per image, a batch from a conference — dozens of cards photographed in a row — is simply dozens of parallel requests: a mobile app uploads each shot as it's taken, and the webhook returns each contact record independently, ready to push into the CRM the moment it's parsed rather than after a manual entry session back at the office.

Why a card is harder to read than it looks

A business card packs several distinct fields — a name, a title, a company, multiple phone numbers, an email, sometimes a logo doubling as a company name — into a small rectangle with no consistent layout between designs, fonts or languages. Reading the text is only half the job; correctly labeling which line is the title and which is the company is what turns raw text into a usable contact.

Trade-show lead capture

A sales rep photographs cards collected at a booth, and each one becomes a structured CRM lead by the end of the day.

Networking app contact save

A networking app lets a user snap a new contact's card and saves name, title and phone directly to their address book.

Event lead-capture feature

An event organizer offers exhibitors a scanning feature that turns attendee card photos into a downloadable contact list.

Digitizing a legacy card file

An office digitizes a drawer of accumulated paper business cards into a searchable contact database in one batch.

How do I use the Business Card Scanner API?

Send a photo to POST /ocr/business-card, receive a task_id right away, and get the contact record back by webhook or a signed link once it's ready.

Is there a free trial?

There's no free tier — free tiers get abused and slow everyone down. Access runs on a prepaid ForHosting KIT balance: top up from $10.00 (it never expires) and each request is charged at its published price, so a call with no balance returns HTTP 402. No subscription, no tokens, no invented credits, and a failed task is never charged.

What's the price?

$0.010 per request plus $0.0575 per image, published and flat per card scanned.

What fields does it extract?

Name, job title, company, phone numbers, email address and physical address, each as its own JSON field rather than one block of text.

Does it work with cards in different languages?

Yes, it reads cards across common languages and scripts and returns the fields it can identify on the card.

Can I scan a whole stack of cards at once?

Each request handles one card image and returns its own task_id, so a stack is simply parallel requests collected by webhook, not a single bulk upload.

What if the card has an unusual layout or a logo instead of a company name?

It does its best to identify company and title even on non-standard layouts, but very stylized or logo-only cards may return fewer fields.

Am I charged if the scan fails?

No. A failed task is retried automatically up to three times and is never charged; you receive a clear error instead.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/ocr/business-card

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, and soon from our app, email and Telegram.

curl -X POST https://api.kit.forhosting.com/ocr/business-card \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"image":"https://ejemplo.com/imagen.jpg"}'
{
  "image": "https://ejemplo.com/imagen.jpg"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "ocr.business_card",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.010
Per image$0.0575

Published price — no tokens, no invented credits. A failed task is never charged.

max_mb25
max_pages10
HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.
422task_failedThe task failed after 3 retries. You are never charged for it.

Read the full KIT documentation →