See exactly where it read.

Typed blocks, pixel-accurate boxes, parsed tables and clean markdown from one API call. Drop a file and watch it work. No account, no card.

Drop a PDF or image, or click to choose. 5 MB · 50 free credits a day
first token ~0.34s16 block typesboxes in real pixels
0.34sFirst text on screenStreamed, so your users watch it fill in.
x, y, w, hBoxes in real pixelsAgainst your image’s own dimensions.
rows[][]Tables parsed, not pastedIterate cells, or take the markdown.

Every run accounted for

An account comes with a console, not just a key. Watch your quota, chart thirty days of traffic, and open any request by its id when something looks wrong, with the error code and latency already next to it.

  • Usage and errors per day, exportable as CSV
  • Keys you can issue and revoke without emailing anyone
  • GST invoices the moment a payment clears
Create a free account →

One call, two ways to receive it

Same endpoint, same response shape, same price. Stream when someone is watching; wait for the whole thing when nobody is.

Wait for the whole resultPOST /api/v1/ocr

One response, fully structured. The right choice for a job queue.

curl -X POST https://ocr.run/api/v1/ocr \
  -H "Authorization: Bearer $KEY" \
  -F "file=@invoice.pdf"

# {
#   "pages": 1,
#   "blocks": [
#     { "type": "title", "text": "ACME CORPORATION",
#       "bbox": { "x": 74, "y": 91, "width": 515, "height": 49 } }
#   ],
#   "markdown": "## ACME CORPORATION ..."
# }
Stream it as it is parsedPOST /api/v1/ocr/stream

First text in ~0.34s. Deltas can split mid-token; the structured answer arrives once, at the end.

curl -N -X POST https://ocr.run/api/v1/ocr/stream \
  -H "Authorization: Bearer $KEY" \
  -F "file=@invoice.pdf"

# -N disables buffering, or you get the whole
# thing at once and lose the point.

# data: {"type":"meta","id":"ocr_3fa2","pageCount":1}
# data: {"type":"delta","delta":"ACME","page":1}
# data: {"type":"delta","delta":" CORPORATION","page":1}
# data: {"type":"result","result":{ ... }}
# data: [DONE]

Every response carries its rate-limit and quota headers, so your code can see its own position without guessing. Read the docs →

Pricing, GST included

The figure you see is the figure you pay. Start free, upgrade when the daily limit starts to bite.

Prices for Rest of World.Show India
Free
200 credits a day, no card
₹0forever
  • 200 credits a day
  • Files up to 5 MB
  • 10 pages per run
  • 1 document at once
  • Web playground only
  • Results kept 24 hours
Starter
For a side project that is starting to get real
₹499/ month

Includes ₹76.12 GST · ₹422.88 + 18%

  • 5,000 credits a day
  • Files up to 25 MB
  • 50 pages per run
  • 3 documents at once
  • 3 API keys
  • Results kept 7 days
Pro
Popular
Production workloads with room to spike
₹1,999/ month

Includes ₹304.93 GST · ₹1,694.07 + 18%

  • 50,000 credits a day
  • Files up to 50 MB
  • 200 pages per run
  • 6 documents at once
  • 10 API keys
  • Results kept 14 days
  • Priority queue
Business
High volume, with a person to talk to
₹7,999/ month

Includes ₹1,220.19 GST · ₹6,778.81 + 18%

  • 1,000,000 credits a day
  • Files up to 100 MB
  • 500 pages per run
  • 10 documents at once
  • 50 API keys
  • Results kept 30 days
  • Webhooks on every run
  • Email support, with a person to talk to
Pay withCards· One payment. We email you before access ends, and nothing is debited automatically · All prices include 18% GST · Cancel any time, access runs to the end of the period

Signed out you get 50 credits a day at up to 5 MB, 10 pages a run. The rate is 1 credit per page, plus 1 credit per 100 output tokens, so that is a few short documents. Billing questions →