Parse
POST /parsePDF or imageelements + markdown
Turn PDFs and images into JSON. Check extracted values against the source page.
{ "invoice_no": "INV-2026-0718","due_date": "2026-08-13","total_due": 1440.00}
POST /parsePDF or imageelements + markdown
POST /extractparse + JSON schematyped JSON
grounding: "field"extracted fieldsource region + history
Supported OCR providers
Inspect source text, model output, and edits in the lineage graph.

Contact us to arrange EU processing for your document volume.
Keep documents and results in EU regions.
We run open-weight models on EU GPUs and use cloud providers' EU regions.
We delete files and results after processing and do not use them for training.
Choose an ocr_model for POST /parse. Prices below are per 1,000 pages.
Open-weight hosted. General documents at the lowest page price.
Complex, visually rich docs when quality matters more than price.
Clean markdown without bounding-box regions.
Microsoft-centric deployments and layout-heavy enterprise PDFs.
Search and indexing in Microsoft environments.
Google Cloud deployments needing structured OCR.
Low-cost text detection for AWS-native pipelines.
Headings, sections, and layout-aware reading order on AWS.
Forms and financial docs with important tables in AWS.
Try a request with cURL, TypeScript, or Python.
curl https://api.openparser.dev/parse \
-H "Authorization: Bearer $OPENPARSER_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-F 'request={"ocr_model": "paddleocr-vl-1.6"};type=application/json' \
-F "file=@invoice.pdf"{
"document_id": "doc_3f9a2c",
"elements": [
{
"id": "elem-total",
"kind": "text",
"text": "Total due: €1.440,00",
"locations": [{
"page_number": 1,
"bbox": { "left": 468, "top": 712, "right": 1118, "bottom": 760 }
}],
"confidence": { "score": 0.98 }
}
],
"markdown": "# INVOICE\n…"
}Upload a document and inspect the parsed text and extracted fields.
Upload a document, pick an OCR model, and switch on extraction.
Start free, then pay only for the pages you parse and the tokens you extract.
At signup. About 10,000 pages on open-weight models.
On open-weight models. Cloud OCR bills at its own page rate.
Billed on the tokens of the llm_model you pick.
Choose your models and use a shared document format.
Set ocr_model per request, including sync, async, and batch calls.
Hosted open-weight models start at $1 per 1,000 pages.
Read the same element fields across OCR models.
Set llm_model to fill your JSON schema from a parsed document.
Use element_id citations to highlight the source region on a page.
Use @openparser/schema and @openparser/adapters in hosted or self-hosted projects.
You send a PDF to the REST API, choose among nine hosted OCR engines, and receive the same OpenParser elements and markdown. You pay per page.
Nine public models today: paddleocr-vl-1.6, mistral-ocr-4, mistral-ocr-3, azure-di-layout, azure-di-read, google-docai-ocr, aws-textract-detect, aws-textract-layout, and aws-textract-tables-layout. Discover live pricing and options with GET /models/ocr.
OCR bills per page: open-weight hosted models start at $1 per 1,000 pages (for example PaddleOCR-VL), and other models list their own rates on the pricing page. Extract bills the tokens of the LLM you choose. Lineage is included with every grounded extract at no extra cost. New accounts get $10 in free credits.
Every model returns the same OpenParser document graph: provenance, pages, elements, reading-order text, and best-effort markdown. Element locations can include page numbers and bounding boxes. Scoped OCR confidence is included when the engine supplies it.
OCR (POST /parse) turns a document into an OpenParser document graph of elements and markdown. Extract (POST /extract) fills your JSON schema from that graph using the LLM you pick. Lineage comes back when you set grounding to field: each value cites the element it came from, plus the model and review steps that produced it.
Yes. The API supports synchronous, asynchronous, and batch parsing and extraction, plus job endpoints for checking status and retrieving results.
Usually no. Change ocr_model on the request and keep the same response shape. For self-hosted or direct provider calls, use the open-source @openparser/schema and @openparser/adapters packages.
The hosted API runs in AWS US regions today. EU-only processing and self-hosted deployments are available on request for teams with GDPR or DORA data-location requirements. Book a call from the EU processing page and tell us your volume and requirements.
Upload a PDF to Studio to get started.