Data extraction API for PDFs, scans, and Office files

Parse PDFs, scans, images, and Office files into spatial JSON or Markdown, with coordinates, confidence, and page context for text and tables. Alternatively, pull named fields with citations through the extract endpoint. Deterministic output for agents, RAG, search, automation, and human review.


Trusted by enterprises, governments, and AI-native teams building document workflows at scale.

Used by Lufthansa, Disney, Autodesk, UBS, Dropbox, IBM
Lufthansa
Disney
Autodesk
UBS
Dropbox
IBM

Capabilities

Structured data extraction from PDFs, scans, and Office files

Parse

Turn complex files into document structure


Detect every document element

Identify tables, forms, formulas, images, charts, handwriting, headings, lists, and reading order across complex files.


Preserve page context

Keep elements connected to page position, confidence, and reading order so teams can validate, highlight, and use results downstream.


Choose speed, cost, or depth

Select the processing mode that fits the document — from low-cost Markdown to AI-augmented parsing for complex visual layouts.


Handle real-world files

Process PDFs, images, Office files, scans, and multilingual documents through one API. Scans are read with OCR as part of the same request; to make a scan searchable without extracting fields, use the PDF OCR API.


A merged document separated into three documents: pages 1–3, pages 4–5, and pages 6–9

Split

Separate merged PDFs into individual documents


Automatic document separation

Send one merged PDF or scan. Split finds where every document starts and ends, with no page ranges, barcodes, or separator sheets.


A confidence score per boundary

Accept high-confidence boundaries automatically and send low-confidence ones to a person for review.


Page ranges, files, or both

Get the page range of each document as JSON, a ZIP with one PDF per document, or both.


Split, then classify

Send each document to classify for its type and to extract for the fields you need.


Classify

Score documents against labels before you extract anything


Score against labels you define

Send at least two labels with the request, or the ID of a classifier saved in Studio. Zero-shot: no training data or templates required.


Get a ranked list, not one guess

Every candidate label comes back with an independent confidence score from 0 to 1, highest first, so close calls stand out.


Route before you extract

Send each document to the correct queue, schema, or team based on its top label, and hold ambiguous or low-scoring documents for manual review.


Flat per-page pricing

A new document type just needs a new label list, not a new model. Priced per page, independent of parse mode.


Extract

Extract data for systems, agents, and review


Map data to your schema

Define a JSON Schema for the fields you need, or scaffold one from example documents using the schema generator in Studio. Every extracted value comes back with bounding boxes, match labels, and confidence scores.


Extract complex tables

Extract tables, forms, images, and handwriting with rows, columns, spans, captions, and footnotes preserved. For tables alone, the table extraction API converts them straight to Excel, and the key-value pair extraction API handles form-like fields on their own.


Trace every value

Keep values connected to page position, confidence scores, reading order, and source evidence for review.


Send downstream

Return output ready to map into databases, ERPs, CRMs, review queues, and document workflows.


Structure

Return predictable output your systems can use


Spatial JSON for structured operations

Use spatial JSON for layout-aware elements, tables, coordinates, confidence scores, and page context.


Markdown for AI and search

Use Markdown for fast, cost-efficient content for RAG, search indexing, knowledge bases, and content migration. When Markdown is the only output needed, the PDF-to-Markdown API and PDF-to-markup API do just that.


Predictable output for the next step

Return results in predictable formats so downstream systems can validate, route, review, automate, or feed AI and search workflows.


Forms

Detect and fill form fields without templates


Detect fields without a template

Find text fields and checkboxes in documents and scans without building a template for every layout.


Label fields with AI

Identify what each field represents — a name, date, or address — so it maps cleanly to your data.


Fill forms with your data

Return a filled document, or take the detected fields as JSON and fill them in a later request.


See what happened to every value

Scan and fill both return warnings naming each field that was adjusted or skipped, so nothing changes silently.


Pay only for the steps you use

Detection, AI labeling, and fill bill separately per page. Reusing detected fields skips detection.


Process

Build governed document workflows, from extraction to downstream use


Validate before automating

Use confidence scores, coordinates, and word-level details to review the output before sending it downstream.


Route exceptions

Move clean results forward and hold low-confidence, incomplete, or mismatched files for review.


Reconcile and map

Compare extracted values against business rules, records, or downstream systems before posting.


Support review and recovery

Keep results tied to the source so teams can trace, fix, and recover issues.


Automate downstream workflows

Send typed JSON to business systems and review queues, or send Markdown to AI, search, knowledge bases, and content pipelines.


Try it live

Try it on your own document

Switch processing modes and inspect live output from a sample invoice as rendered Markdown, raw Markdown, or spatial JSON.

Make your first request

This example sends a PDF to the parse endpoint and returns the document as Markdown. The same key and endpoint family handle extract and classify.


  1. Save a PDF as document.pdf and run the sample from the same folder. The Markdown comes back in output.markdown.
  2. The samples use text mode, which reads born-digital PDFs only. For scanned PDFs or images, change the mode to structure, understand, or agentic.
curl -X POST https://api.nutrient.io/extraction/parse \
-H "Authorization: Bearer your_api_key_goes_here" \
-F "file=@document.pdf" \
-F 'instructions={"mode":"text","output":{"format":"markdown"}}'

AGENT DEMOS

Build a document app with a coding agent

Give a coding agent the Data Extraction skill, a business problem, and sample documents. It builds a working app on the API. Both builds below use fictional data.

Find underpaid medical claims with AI: Remittance vs. contract

Find underpaid medical claims

Checks each remittance line against the contracted rate and drafts an invoice for the difference. The demo flags 13 underpaid lines worth $6,308.83. More on healthcare data extraction.

Extract Schedule K-1 data with AI, even when the box says STMT

Trace Schedule K-1 values to their source

Follows each “STMT” box to its supporting statement, such as $37,480 for Box 13, code W. The video shows the full build in Codex, from first prompt to finished app.

Start free

Data extraction API pricing

No credit card required.

Your free plan includes:

    • 5,000 Data Extraction API credits each month
    • Parse and extract from PDFs, images, and Office files
    • Markdown or spatial JSON output
    • Four explicit modes: text, structure, understand, and agentic, plus auto routing
Nutrient Extract Studio for macOS

Try Data Extraction on your own Mac

Extract Studio is a desktop app that runs this API’s engine on your Mac. With an AI model running locally through Ollama or LM Studio, your documents stay on the machine. It runs on Apple silicon Macs. You need a Nutrient account, and each run uses Data Extraction credits.

Processing modes

AI document parsing API with four explicit modes and auto routing

Start with auto to route each page to structure, understand, or agentic. Choose a fixed mode explicitly when you need to control processing depth and cost.

Text

Low-cost Markdown for born-digital PDFs and Office files

Text extraction API PDF to Markdown RAG Search

Structure

Spatial JSON with OCR, tables, bounds, confidence, and page context for scans with simple layouts

Scans Photos Tables

Understand

AI document parsing for forms, complex layouts, printed handwriting, formulas, and OCR correction, and the recommended mode for pulling named fields through the extract endpoint

Agentic

Agent-guided extraction with visual reasoning for cursive handwriting, degraded scans, and dense layouts that need deeper review and recovery

Cursive handwriting Degraded scans Charts and images

NUTRIENT MCP

Use it from your AI agent

Connect Claude, Claude Code, or Codex to Nutrient MCP with one URL, and sign in with your Nutrient account. Describe the fields you need in plain words, and your agent extracts them with citations. It uses the same credits as the API.

Claude Code
claude mcp add --transport http --scope user nutrient https://mcp.nutrient.io/mcp

Run /mcp, choose nutrient, and select Authenticate. Once you’re signed in, ask something like: “Extract the invoice number, date, and total from invoice.pdf.” Using the Claude app, Codex, or another client? See the setup steps.


0.93 accuracy in understand mode

All four processing modes tested on public benchmarks, including opendataloader-bench’s 200 PDFs.

How does it compare to Textract, Reducto, LlamaIndex, or Unstructured?

Side-by-side breakdowns on accuracy, deployment, output format, and price.

INDUSTRIES AND DOCUMENTS

Data extraction for invoices, mortgages, insurance, and healthcare

Structured output for high-stakes teams.

INVOICES

AP capture, three-way matching, ERP sync

Invoices · Purchase orders · Line items

MORTGAGE

Loan applications, underwriting, closing disclosures

Loan documents · Appraisals · Title reports

RECEIPTS

Expense capture, policy checks, reconciliation

Receipts · Expense reports · Line items

KYC

Identity capture, verification review, onboarding

ID cards · Passports · Driver’s licenses

MEDICAL

Patient onboarding, record digitization, claim review

Patient intake forms · Medical records · Claim forms

LEGAL

Contract review, discovery, due diligence

Contracts · Legal filings · Applications

INSURANCE

Claims intake, underwriting, policy servicing

Claims forms · Policies · ACORD forms · Loss runs

LENDING

Bank statements, income verification, underwriting

Bank statements · Pay stubs · Tax forms

PRIOR AUTHORIZATION

Authorization requests, appeals, referral intake

Prior authorization forms · Referrals · Clinical packets

HEALTH INFORMATION MANAGEMENT

Release of information, chart retrieval, fulfillment

ROI requests · Patient records · Chart packets

COURT RECORDS

Court filings, land records, clerk indexing

Court filings · Deeds · Clerk records

Output formats

Output formats: spatial JSON or Markdown

Elements, bounds, confidence, metadata, and usage. Choose output: "json" or Markdown per request.

Spatial JSON

For extraction · validation · review

.json
{
"elements": [
{
"type": "paragraph",
"role": "Title",
"text": "Invoice INV-20241108",
"id": "p_x1y2z3",
"bounds": { "x": 82, "y": 128, "width": 202, "height": 24 },
"confidence": 0.98,
"readingOrder": 0,
"page": { "pageIndex": 0, "pageNumber": 1 }
},
{
"type": "table",
"id": "tbl_a1b2c3",
"bounds": { "x": 70, "y": 320, "width": 446, "height": 162 },
"confidence": 0.96,
"rowCount": 3,
"columnCount": 3,
"page": { "pageIndex": 0, "pageNumber": 1 },
"cells": [
{ "row": 0, "column": 0, "text": "Item", "confidence": 0.99, "bounds": { "x": 70, "y": 320, "width": 200, "height": 26 } },
{ "row": 0, "column": 1, "text": "Qty", "confidence": 0.99, "bounds": { "x": 270, "y": 320, "width": 80, "height": 26 } },
{ "row": 0, "column": 2, "text": "Total", "confidence": 0.99, "bounds": { "x": 350, "y": 320, "width": 100, "height": 26 } },
{ "row": 1, "column": 0, "text": "Visual identity", "confidence": 0.97, "bounds": { "x": 70, "y": 350, "width": 200, "height": 26 } },
{ "row": 1, "column": 1, "text": "1", "confidence": 0.98, "bounds": { "x": 270, "y": 350, "width": 80, "height": 26 } },
{ "row": 1, "column": 2, "text": "$8,500", "confidence": 0.97, "bounds": { "x": 350, "y": 350, "width": 100, "height": 26 } }
]
}
]
}

Markdown

For RAG · search · knowledge bases

.md
# Invoice INV-20241108
**From** Acme Studios LLC
**Issued** Nov 8, 2024
## Line items
| Item | Qty | Total |
| --- | ---: | ---: |
| Visual identity | 1 | $8,500 |
| Brand guidelines | 1 | $2,200 |
**Total · $13,500.00**

Built for production

Deterministic document infrastructure for trusted AI workflows

Handle messy real-world files

Process PDFs, photos, scans, Office files, and archives without building a separate parser for each format.

Return source-grounded outputs

Return coordinates, confidence, page context, and review paths so AI outputs stay tied to source evidence.

Flag uncertainty before automation

Use confidence scores and page context to catch extraction issues before agents or automations rely on them.

Choose speed, cost, or depth

Pick the cheapest mode that meets your accuracy bar. Then increase depth only when documents require it.

Prepare schema-ready data

Use /extract to pull specific fields from any document. Each value comes back with bounding boxes and match labels, so you can validate it, route it to human review, or send it downstream.

Connect the full workflow

Parse first. Then convert, redact, generate, sign, view, edit, or approve across Nutrient DWS and SDKs.

Reviewed extraction examples

See what three reviewed API runs actually returned

One live response per selected public form exactly matched 26 of 30 predeclared fields. All 30 returned fields included page-bounded primary source regions. Four mismatches stayed visible for review. The forms contain privacy-safe demo values. This is a three-document demonstration and not an accuracy, production, or performance benchmark.

Reviewed mortgage verification extraction with source regions and two retained mismatches
0:00
0:00

Mortgage verification

A selected public mortgage-assistance form populated with privacy-safe demo values.

Exact
6/8 selected fields
Source
8 returned primary source regions
Review
2 issues retained
Reviewed insurance claim intake extraction with 11 exact fields and returned source regions
0:00
0:00

Insurance claim intake

A selected public government crash report populated with privacy-safe demo values.

Exact
11/11 selected fields
Source
11 returned primary source regions
Review
0 issues retained
Reviewed prior authorization extraction with source regions and two retained mismatches
0:00
0:00

Prior authorization intake

A selected public Centers for Medicare and Medicaid Services (CMS) prior authorization form populated with privacy-safe demo values and no protected health information (PHI).

Exact
9/11 selected fields
Source
11 returned primary source regions
Review
2 issues retained

Grounding makes mistakes reviewable. It doesn’t make them correct.

The videos use an extract → source evidence → decision gate schematic. It’s a workflow concept, not a shipped product UI.

“Reviewed” means the evidence audit was recorded. It doesn’t mean a reviewer approved the result.

SOC 2 Type 2 audited

Audited annually. Reports available under NDA.

Regional processing options

Choose supported processing regions for enterprise deployments.

Trust and compliance

Security, compliance, and
accuracy benchmarks

0.93 accuracy in understand mode

200 public PDFs. Three metrics. Full results published.

HTTPS/TLS encryption

API communication is encrypted by default, and unencrypted requests are rejected.


Data extraction API FAQ

What is a data extraction API?

A data extraction API parses documents — PDFs, scans, images, and Office files — and returns structured data rather than just readable text. Instead of manually pulling values from documents or building custom parsers for each file format, send a document to the API. It returns structured output: spatial JSON with element types, coordinates, confidence scores, and page context, or Markdown for AI and search workflows. Nutrient Data Extraction API offers four explicit processing modes — text, structure, understand, and agentic — plus auto routing. Start with auto to route each page to structure, understand, or agentic, or select a mode explicitly to control speed, cost, or depth. See the what is intelligent data extraction blog for the broader concept, or how to extract data from a PDF for a hands-on developer walkthrough.

How is a data extraction API different from OCR?

OCR makes scanned or image-based documents machine-readable by identifying text on a page. A data extraction API goes further. It identifies which values matter, where they sit in the document, how they relate to each other, and how to structure them for downstream use. OCR gives you a wall of text. A data extraction API gives you typed fields with coordinates, confidence scores, page references, and reading order. A system can validate, route, and act on that output without additional processing.

What types of documents work with a data extraction API?

The API supports most document formats used in business and regulated workflows. These include PDFs (digital, scanned, and image-based), images, and Office files such as Word, Excel, and PowerPoint. Within those formats, the API handles forms, tables, handwriting, revision histories, stamps, and mixed layouts. Different document types — invoices, contracts, requests for information (RFIs), submittals, medical records, permits — carry different data in different formats. Extraction workflows therefore often define document-specific schemas instead of a single generic approach. To extract invoice data from PDF files and scans, see the invoice data extraction API.

What file formats can this document parsing API process?

The Data Extraction API processes PDFs, images, Word, Excel, PowerPoint, and other common document formats. Upload files directly, send raw binary content, or point the API at a hosted document URL. It handles scanned PDFs, fillable forms, and mixed digital/image-based documents without requiring a separate OCR pipeline.

Can I extract JSON from PDFs, scans, and forms?

Yes. The /extract API maps a document to your JSON Schema and returns the requested fields with per-field citations. Every value therefore traces to an exact location in the original document. It works with PDFs, scans, images, and Office files.

How is this different from using a general LLM for document extraction?

A general large language model (LLM) can reason over document text, but it doesn’t give you a document processing layer by itself. The Data Extraction API returns layout-grounded elements with reading order, coordinates, confidence scores, and page references, so teams can validate, route, highlight, and automate with traceability.

Can I get spatial JSON and Markdown in the same request?

Spatial JSON and Markdown are separate output formats on the same API. Choose spatial JSON when your workflow needs structured elements with layout context, or Markdown for clean structured content in RAG, search, or document Q&A. Send two requests if your pipeline needs both.

How do I validate and review extracted data before sending it downstream?

Every extracted element comes back with confidence scores, page references, coordinates, and word-level details. You can compare outputs across sample documents and flag low-confidence fields for human review. You can also highlight results on the original document and route exceptions to a review queue. Because results stay connected to the source document, teams can trace outputs back to the original page and correct downstream records when needed.

Can the Data Extraction API support full document workflows?

Yes. Use the Data Extraction API as the parsing layer. Then connect the output to other Nutrient products. Use AI Document Processing for templates and validation. Use DWS Processor for conversion, redaction, generation, and signing. Use Nutrient SDKs when humans need to review, edit, annotate, or approve documents in your application.

How accurate is the Data Extraction API?

Nutrient’s Data Extraction API scores 0.93 accuracy in understand mode on opendataloader-bench, a public set of 200 PDFs. The scores come from Nutrient’s own tests and aren’t independently verified; see the Data Extraction benchmarks for every mode. In spatial output, every element also carries a confidence score from 0 to 1, so low-confidence values can go to review.

Is the Data Extraction API SOC 2 compliant?

Yes. The API is backed by Nutrient’s broader security practices, including SOC 2 Type 2-audited infrastructure and TLS-encrypted transport — built for use in business-critical and regulated workflows.

Can I run Data Extraction locally on my Mac?

Yes, with Nutrient Extract Studio, a desktop app for Apple silicon Macs on macOS Tahoe 26.4 or later. It runs the same engine as this API, so you can parse documents, extract fields, and classify files on your Mac without calling the API.

Classification needs no AI model. Extraction does. Connect one running on your Mac through Ollama, LM Studio, or vLLM, and your documents stay on the machine. If you use your own OpenAI or Anthropic key instead, page images and your schema go to that provider. In every setup, Nutrient receives only page counts, for billing.

You sign in with a free Nutrient account over the internet, and each run uses Data Extraction credits, as API calls do. When a result looks right, viewing the code in the app shows the Python code for the same extraction. That code runs with the Data Extraction SDK on your own servers. Learn about Extract Studio for macOS.

Can I build with Claude Code, Codex, or other coding agents?

Nutrient’s Data Extraction agent skill shows a coding agent how to call the API. It covers parse for whole documents and extract for schema fields with citations. Install it with npx skills add pspdfkit-labs/nutrient-skills --skill document-extraction-api. It works with Claude Code, Codex, Cursor, Gemini CLI, and other agents that support Agent Skills.

Two videos on this page show what an agent can build. One is a tool that finds underpaid medical claims. The other is a review desk for Schedule K-1 tax forms. Both use fictional data. Watch the builds or get the skill on GitHub.

How does pricing work, and what’s included in the free tier?

New accounts get 5,000 free Data Extraction API credits per month with no credit card required. Start with auto for per-page routing to structure, understand, or agentic; usage depends on the mode selected for each page. You can also choose a mode explicitly: text is for low-cost Markdown extraction, structure is for spatial JSON, understand is for AI-augmented parsing, and agentic is for advanced extraction workflows.

Can the Data Extraction API classify documents?

Yes. The classify endpoint scores a document against labels you send with the request. It returns a ranked list, so you can route each file before extracting from it. Classification is zero-shot, with no training data or templates, and costs a flat 1 credit per page.

Can the Data Extraction API split merged documents?

Yes. The split endpoint finds where each document in a merged PDF or scan starts and ends, with a confidence score for each boundary. It returns the page ranges as JSON, a ZIP with one PDF per document, or both, at a flat 3 credits per page.

How do I define a schema for extraction?

Use the schema generator in Studio. Upload up to five example documents and describe the document type, and the generator creates a JSON Schema you can use directly with /extract. You can also write the schema manually. Refer to the documentation for supported field types, constraints, and size limits.

What is understand mode?

Understand mode is Nutrient’s AI data extraction mode for complex documents. It adds AI augmentation on top of OCR for tables, multicolumn layouts, nested structures, formulas, form fields, and printed-style handwriting.

Who offers an API for extracting structured data from uploaded documents?

Nutrient offers the Data Extraction API for this. Upload a PDF, scan, image, or Office file to /extraction/extract with a JSON Schema describing the fields you want. The response returns those fields typed, each with a confidence score and the region of the page it was read from. The same request needs no template and no per-vendor setup, so it works across document layouts.

What API can return confidence scores for extracted document fields?

The Nutrient Data Extraction API returns a confidence score for every extracted field, not one score for the document. Each value also carries a match label and a bounding box pointing at where on the page it came from. A workflow can then accept high-confidence values automatically and route uncertain ones to a person before anything reaches a downstream system.

What API can map captured document fields to our internal schema?

The Nutrient Data Extraction API maps to your schema rather than its own. You send a JSON Schema describing the field names, types, and constraints your system already expects. The response comes back in that shape, so no translation layer sits between the API and your ERP, accounting system, or database.

Can the API extract form fields and checkboxes?

Yes. The Nutrient Data Extraction API pulls form fields without a template. Name the fields in a JSON Schema, and the extract endpoint returns each value with a citation. The parse endpoint marks selected and unselected checkboxes with their own roles, so a checked box is machine-readable rather than an image. Handwritten entries are read too, each with its own confidence score.


Documents in, structured data out

5,000 free Data Extraction API credits per month — no credit card required. Parse PDFs, images, scans, and Office files into spatial JSON or Markdown for AI workflows, automation, and human review.