ForHosting KIT · OCR & Data Extraction

Read a filled-in form

A filled-out paper form is exactly the kind of document computers were supposed to have retired years ago, yet intake desks, clinics and government offices still run on them. This endpoint reads a scanned or photographed form field by field — printed text, handwriting, checked boxes — and returns the answers as structured JSON instead of a flat image.

● StablePer request + per page$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 last mile that stayed on paper

Plenty of processes went digital decades ago, but the actual point of data capture — a patient intake sheet, a survey filled out at a kiosk, a government application completed by hand at a counter — often stayed stubbornly on paper, because forcing every person filling it out onto a screen isn't always realistic. This endpoint exists for that last mile: it takes the paper form as it was actually completed and turns it into data without asking anyone to retype it.

What the endpoint actually reads

Unlike a generic OCR pass that returns undifferentiated text, this endpoint understands the form as a set of fields: it locates labels, reads what was written or typed next to them, interprets checked boxes and selected options, and returns each answer tied to its field name. Send the scanned or photographed form to POST /ocr/form, get a task_id immediately, and receive the structured answers through a signed webhook or a signed link valid for 24 hours once processing finishes.

Why forms are harder than they look

A form looks simple compared to a contract or a resume, but it's deceptively demanding to parse well: handwriting varies wildly from one respondent to the next, a checkbox can be a checkmark, an X, a filled square or a circled option depending on who filled it in, and the same form template photographed at an angle looks nothing like its scanned twin. Reading a form reliably means handling that inconsistency at the field level, not just running text recognition over the whole page.

Where automated form reading pays off

Clinics and hospitals use it to digitize patient intake sheets without a data-entry clerk retyping every field; government and municipal offices use it to process paper applications submitted at a counter; market research firms use it to turn a stack of paper survey responses into a spreadsheet ready for analysis, all without redesigning the form or asking respondents to change how they fill it out.

Pricing reflects the field-level work involved

This endpoint costs $0.010 per request plus $0.0575 per page, higher than plain text extraction because reading discrete fields, handwriting and checkboxes accurately is genuinely more work; you're billed only when a form is successfully processed, and a failed attempt is retried automatically up to three times before returning a clear error at no charge. There's no free tier or trial — access requires prepaid balance, which keeps the endpoint fast and reserved for real submissions.

Patient intake digitization

Convert handwritten patient intake sheets from a clinic's front desk into structured records without manual data entry.

Government application processing

Read paper applications submitted at a counter into a database, replacing manual re-keying by office staff.

Market research survey capture

Turn a stack of paper survey responses, including checkboxes and handwritten comments, into a spreadsheet ready for analysis.

Insurance claim form intake

Extract policyholder information and checked options from scanned claim forms to speed up initial claim triage.

Can the form data extraction api read handwriting?

Yes, it interprets handwritten entries as well as printed text and checked boxes, returning each answer tied to its field.

What file types can I submit?

Scanned pages and photographs of filled paper forms, as well as native digital form documents.

Is there a free tier for the form data extraction api?

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.

Why does form extraction cost more than plain text extraction?

Reading discrete fields, handwriting and checkboxes accurately requires more processing than extracting flat text, which is reflected in the $0.010 per request plus $0.0575 per page price.

How do I receive the extracted form data?

Through a signed webhook when the task completes, or from a signed link that stays valid for 24 hours.

Am I charged if the form fails to process?

No. Failed tasks are retried automatically up to three times and are never billed if they still fail.

Does it handle checkboxes and selected options?

Yes, it interprets checkmarks, X marks, filled boxes and circled selections as part of each field's answer.

Can I process multi-page forms in bulk?

Yes, pricing is per page and each submission runs as its own asynchronous task, so large batches process concurrently.

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/form

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/form \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input":"…"}'
{
  "input": "…"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "ocr.form",
  "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 page$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.
413input_too_largeThe file exceeds the size limit.
422task_failedThe task failed after 3 retries. You are never charged for it.

Read the full KIT documentation →