NEW v0.9 — public beta is open

Turn a folder of
documents into a
live API.

Drop a PDF. Get structured JSON. No code, no schema setup, no signup.

No credit card 100 pages free / mo Self-serve
LIVE DEMO

Try it with a sample:

You've tried the demo a few times. Sign up to keep extracting — it's free.

Demo is taking a short break. Sign up to keep using parseapi.dev.

JSON
1-minute setup 5+ AI providers Self-hosted-ready Auto-generated OpenAPI
LIVE parseapi.dev / system metrics updated just now
Avg. latency
2.4s
From upload to JSON
Schema accuracy
99.2%
First-pass field match
AI providers
5+
Anthropic, OpenAI, Gemini, Ollama, more
Free tier
100pg / mo
Forever, no card required
Sixty-second tour

It really is this simple.

Three steps. One minute. From folder to live endpoint — without writing a line of glue code.

01 Name a folder

Pick your namespace.

That name becomes your permanent API URL — you'll never need to change it.

Your URL

api.parseapi.dev
/v1/you/invoices

02 Drop in documents

Upload anything. We figure it out.

PDFs, scans, images, Word docs. We parse them in seconds and auto-detect a JSON schema from the first batch.

jan.pdf PARSED
feb.pdf PARSING...
03 Query the API

Your endpoint is live.

The moment the first document finishes parsing, your URL is callable. Use curl, fetch, requests — anything that speaks HTTP.

Request

$ curl api.parseapi.dev

/v1/you/invoices

→ 200 OK · 14 records

Editable extractions

AI gets it wrong?
Fix it in one click.

Every field is editable. Click, correct, save — your API serves the new value instantly.

  • Click any field to edit it inline No re-uploading. No re-running the model.
  • Original AI output is preserved forever Audit trail for every correction, on every record.
  • Webhook fires on every correction Your downstream systems stay in sync automatically.
invoice_001.pdf · folder: invoices

ACME CORP

123 Market St, San Francisco CA

Invoice #: INV-001

Date: 2024-02-15

Amount due: $1,250.00

{
"invoice_number": "INV-001",
"amount": 1250.00 EDITED
"vendor": "Acme Corp",
"due_date": "2024-02-15"
}
Bring your own brain

Pick your model.
Switch anytime.

We don't lock you into one AI. Route per folder, per document type, or globally. Bring your own key on the Scale plan — your bill stays predictable.

ready A Anthropic claude-sonnet · opus
ready O OpenAI gpt-4o · gpt-4o-mini
ready G Gemini gemini-1.5-pro · flash
ready Ol Ollama llama3 · qwen · local
ready + OpenAI-compatible Together · Groq · vLLM
Built for developers

It's curl. That's the whole SDK.

Stable URLs. Predictable JSON. A real OpenAPI spec. Build against ParseApi in any language that speaks HTTP.

# Fetch the latest extraction from your invoices folder
curl https://api.parseapi.dev/v1/you/invoices/latest \
  -H "Authorization: Bearer pk_live_xxx"
const res = await fetch("https://api.parseapi.dev/v1/you/invoices/latest", {
  headers: { "Authorization": `Bearer ${process.env.PARSEAPI_KEY}` }
});
const { result } = await res.json();
console.log(result.amount); // → 1250.00
import os, requests

r = requests.get(
    "https://api.parseapi.dev/v1/you/invoices/latest",
    headers={"Authorization": f"Bearer {os.environ['PARSEAPI_KEY']}"},
)
print(r.json()["result"]["amount"])  # → 1250.00
req, _ := http.NewRequest("GET",
    "https://api.parseapi.dev/v1/you/invoices/latest", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("PARSEAPI_KEY"))

res, _ := http.DefaultClient.Do(req)
defer res.Body.Close() // → 200 OK
200 OK Returned in 214ms · Trace a8c2…91f4
By the numbers

Small enough to launch in a minute.
Reliable enough to put in production.

10,243+
Pages parsed · 30 days

Across all beta tenants

0%
First-pass accuracy

Schema-match on golden set

0s
Avg. extraction

Upload to JSON, P50

$0
To get started

100 pages / month, no card

Pricing

Start free.
Pay as you grow.

Free

Get started, no card.

$0 / month
  • 100 pages / month
  • 2 folders
  • JSON API + auth
  • Editable extractions
Popular

Hobby

For solo developers.

$19 / month
  • 1,000 pages / month
  • 10 folders
  • All auth modes
  • Priority extraction
  • Webhooks

Need scale? See Pro and Scale →

FAQ

The questions you'd ask
if we were on a call.

How is this different from calling Claude or GPT-4 directly?
You'd still need to design the JSON schema, validate the model's output, retry on bad responses, store the documents and results, scrape bounding boxes for the source highlighting, build the audit trail, expose it as an API, handle auth, throttle by tenant, swap models when one is down, track cost per extraction… ParseApi does all of that. You bring the folder; we bring the rest.
Where are my documents stored, and for how long?
Files go to Cloudflare R2, encrypted at rest, in the region closest to your tenant. Retention defaults to 30 days for documents and extractions, configurable per folder up to permanent. Delete a folder and we wipe everything within minutes — there's no hidden backup we keep around for ourselves.
Do you train AI models on my data?
No. Your documents are never used to train our models, and Anthropic / OpenAI / Gemini have explicit no-train policies for paid API traffic — which is all we send them. If you're on Ollama or your own endpoint, your data never leaves your infrastructure to begin with.
Can I switch AI providers later without losing extractions?
Yes — per folder. Old extractions stay intact (they're stored as JSON, not as model outputs). New uploads use the new provider. The schema doesn't change. Most users start on Claude or GPT-4o and switch when they want to optimize cost or latency.
Can I self-host this?
On the Scale plan, yes. ParseApi is a single .NET 9 Docker container plus Postgres and an S3-compatible bucket — runs on your Render, Fly, Kubernetes, or anywhere else you can run a container. We ship the same image we run in production.
What happens after the free tier? Do I get cut off mid-extraction?
No. Hitting the limit pauses new uploads and shows an upgrade prompt — anything already in flight finishes, and your existing API endpoints keep serving. You only get charged when you opt into a paid plan. There's no surprise overage bill.
What if the model gets a field wrong?
Click the field, fix it, save. Your API serves the new value the moment you save. The original model output is preserved forever — you can A/B compare or restore it. And if you turn on webhooks, every correction fires a extraction.corrected event so your downstream systems stay in sync.
One more thing

Stop wrestling
with PDFs.

Spin up your first folder in under a minute. Free forever for 100 pages a month.