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
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.
Capabilities
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 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.
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.
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.
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
Switch processing modes and inspect live output from a sample invoice as rendered Markdown, raw Markdown, or spatial JSON.
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.
document.pdf and run the sample from the same folder. The Markdown comes back in output.markdown.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"}}'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\"}}"package com.example.nutrient;
import java.io.File;import java.io.IOException;import java.nio.file.Files;import java.nio.file.Paths;
import org.json.JSONObject;
import okhttp3.MediaType;import okhttp3.MultipartBody;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.RequestBody;import okhttp3.Response;
public final class NutrientParseExample { public static void main(final String[] args) throws IOException { final RequestBody body = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart( "file", "document.pdf", RequestBody.create( MediaType.parse("application/pdf"), new File("document.pdf") ) ) .addFormDataPart( "instructions", new JSONObject() .put("mode", "text") .put("output", new JSONObject() .put("format", "markdown") ).toString() ) .build();
final Request request = new Request.Builder() .url("https://api.nutrient.io/extraction/parse") .method("POST", body) .addHeader("Authorization", "Bearer your_api_key_goes_here") .build();
final OkHttpClient client = new OkHttpClient().newBuilder().build(); final Response response = client.newCall(request).execute();
if (response.isSuccessful()) { // The response is JSON. The Markdown is in output.markdown. final JSONObject payload = new JSONObject(response.body().string()); final String markdown = payload .getJSONObject("output") .getString("markdown");
Files.writeString(Paths.get("result.md"), markdown); } else { throw new IOException(response.body().string()); } }}using System;using System.IO;using System.Text.Json;using RestSharp;
namespace NutrientParseDemo{ class Program { static void Main(string[] args) { var client = new RestClient("https://api.nutrient.io/extraction/parse");
var request = new RestRequest(Method.POST) .AddHeader("Authorization", "Bearer your_api_key_goes_here") .AddFile("file", "document.pdf") .AddParameter( "instructions", "{\"mode\":\"text\",\"output\":{\"format\":\"markdown\"}}" );
var response = client.Execute(request);
if (response.IsSuccessful) { // The response is JSON. The Markdown is in output.markdown. using var document = JsonDocument.Parse(response.Content); var markdown = document.RootElement .GetProperty("output") .GetProperty("markdown") .GetString();
File.WriteAllText("result.md", markdown); } else { Console.Write(response.Content); } } }}// This code requires Node.js. Do not run this code directly in a web browser.import fs from "node:fs";
const form = new FormData();form.append("file", await fs.openAsBlob("document.pdf"), "document.pdf");form.append( "instructions", JSON.stringify({ mode: "text", output: { format: "markdown" } }),);
const response = await fetch("https://api.nutrient.io/extraction/parse", { method: "POST", headers: { Authorization: "Bearer your_api_key_goes_here" }, body: form,});if (!response.ok) throw new Error(await response.text());
const result = await response.json();fs.writeFileSync("result.md", result.output.markdown);import requests
response = requests.post( "https://api.nutrient.io/extraction/parse", headers={"Authorization": "Bearer your_api_key_goes_here"}, files={"file": open("document.pdf", "rb")}, data={ "instructions": '{"mode":"text","output":{"format":"markdown"}}' },)response.raise_for_status()
result = response.json()print(result["output"]["markdown"])<?php
$curl = curl_init();
curl_setopt_array($curl, array( CURLOPT_URL => 'https://api.nutrient.io/extraction/parse', CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_POSTFIELDS => array( 'instructions' => '{"mode":"text","output":{"format":"markdown"}}', 'file' => new CURLFILE('document.pdf') ), CURLOPT_HTTPHEADER => array( 'Authorization: Bearer your_api_key_goes_here' ),));
$response = curl_exec($curl);$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($status !== 200) { throw new Exception($response);}
// The response is JSON. The Markdown is in output.markdown.$payload = json_decode($response, true);
file_put_contents('result.md', $payload['output']['markdown']);AGENT DEMOS
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.
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.
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.
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
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
Structure
Spatial JSON with OCR, tables, bounds, confidence, and page context for scans with simple layouts
Agentic
Agent-guided extraction with visual reasoning for cursive handwriting, degraded scans, and dense layouts that need deeper review and recovery
NUTRIENT MCP
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 mcp add --transport http --scope user nutrient https://mcp.nutrient.io/mcpRun /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.
All four processing modes tested on public benchmarks, including opendataloader-bench’s 200 PDFs.
Side-by-side breakdowns on accuracy, deployment, output format, and price.
INDUSTRIES AND DOCUMENTS
Structured output for high-stakes teams.
Invoices · Purchase orders · Line items
Loan documents · Appraisals · Title reports
Receipts · Expense reports · Line items
ID cards · Passports · Driver’s licenses
Patient intake forms · Medical records · Claim forms
Contracts · Legal filings · Applications
Claims forms · Policies · ACORD forms · Loss runs
Bank statements · Pay stubs · Tax forms
Prior authorization forms · Referrals · Clinical packets
ROI requests · Patient records · Chart packets
Court filings · Deeds · Clerk records
Output formats
Elements, bounds, confidence, metadata, and usage. Choose output: "json" or Markdown per request.
Spatial JSON
For extraction · validation · review
{ "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
# 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
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
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.
A selected public mortgage-assistance form populated with privacy-safe demo values.
A selected public government crash report populated with privacy-safe demo values.
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).
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Developer resources
Prefer to self-host, or to try it on your own Mac first? The same engine runs as an embedded SDK and in the Nutrient Extract Studio desktop app.
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.