Hosted pdf-inspector · API + MCP
PDFs in.
Markdown out.
Send a PDF and get back Markdown with the headings, lists, tables and reading order intact. We host Firecrawl's open-source pdf-inspector engine and add OCR for scanned pages. You can set it up with one prompt in Lovable, Bolt, Cursor or Claude.
- Files deleted after processing
- OCR for scanned pages
- Credits from $10, no subscription needed
Q3 Report
Revenue by region
Revenue grew in every region. Europe led with 17% growth, driven by the new self-serve plan.
| Region | Q2 | Q3 |
|---|---|---|
| EU | 1.2M | 1.4M |
| US | 2.1M | 2.3M |
| APAC | 0.6M | 0.7M |
# Q3 Report ## Revenue by region Revenue grew in every region. Europe led with 17% growth, driven by the new self-serve plan. | Region | Q2 | Q3 | |---|---|---| | EU | 1.2M | 1.4M | | US | 2.1M | 2.3M | | APAC | 0.6M | 0.7M |
Sparse Retrieval at Scale
1 Introduction
Dense retrievers need large indexes and GPUs at query time. We show that a sparse model with learned term weights matches their recall on three benchmarks.
2 Method
Each passage is scored with a vocabulary-sized vector. We prune weights below 0.1, which cuts the index by 60% with no loss in recall.
# Sparse Retrieval at Scale A. Chen, M. Okafor ## 1 Introduction Dense retrievers need large indexes and GPUs at query time. We show that a sparse model with learned term weights matches their recall on three benchmarks. ## 2 Method Each passage is scored with a vocabulary-sized vector. We prune weights below 0.1, which cuts the index by 60% with no loss in recall.
HARBOR DENTAL CLINIC
12 March 2026
Dear Ms. Patel,
Your next appointment is on 4 April at 10:30. Please bring your insurance card and arrive ten minutes early.
Kind regards,
Dr. L. Moreau
**HARBOR DENTAL CLINIC**
12 March 2026
Dear Ms. Patel,
Your next appointment is on 4 April at 10:30. Please bring your insurance card and arrive ten minutes early.
Kind regards,
Dr. L. Moreau
Try it
Try it without a key
Put our URL in front of any PDF link to get Markdown back. It works in a browser, in curl, or in any agent that can fetch a URL.
https://api.pdfinspector.com/md/https://example.com/report.pdf
Without a key you get one test call a day, up to 10 text pages, without OCR. For more, buy credits.
Output
What you get back
Markdown you can put straight into a prompt, plus details about the file so your app can decide what to do next.
| Structured Markdown | Headings (H1–H4), lists, bold, italics, links and code blocks. Page numbers and broken hyphenation are removed. |
|---|---|
| Tables | Ruled and borderless tables become Markdown tables, including financial tables and tables that continue onto the next page. |
| Reading order | Multi-column pages are read one column at a time, not straight across. |
| Scanned pages | Each page is checked first. Text pages are extracted in milliseconds. Only scanned pages go through OCR, and only those are billed at the OCR rate. |
| File details | Title, author, dates, page count, which pages have tables or columns, and whether the PDF is text-based, scanned or mixed. |
| Text positions | Optionally, every text snippet with its position and font. |
| Not included | |
| Field extraction | You get Markdown, and your own LLM pulls out invoice numbers, totals or names. That's cheaper and more accurate than sending the LLM the raw PDF. |
| Charts and images | Charts aren't read and images aren't described. |
| Copies of your file | Once it's processed, we can't give it back to you. |
Setup
Set it up with one prompt
The prompt points your AI builder at our machine-readable docs, so it writes the integration correctly, including keeping your key on the server.
Add PDF upload to my app using PDF Inspector. Read https://pdfinspector.com/llms.txt first and follow it. - Let users upload a PDF (max 50 MB). - Send it to POST https://api.pdfinspector.com/v1/convert - Use the API key from the secret PDFINSPECTOR_API_KEY. Call the API from a server function, never from the browser. - Show a progress state (scanned PDFs can take a few seconds). - Show the returned "markdown" nicely formatted. - Then send the markdown to our AI and summarize the document.
claude mcp add --transport http pdfinspector https://pdfinspector.com/mcp
Convert ./q3-report.pdf to Markdown and pull the revenue table into a CSV.
{
"mcpServers": {
"pdfinspector": {
"url": "https://pdfinspector.com/mcp",
"headers": { "Authorization": "Bearer sk_live_YOUR_KEY" }
}
}
}
- Get an API key and buy credits.
- Paste the prompt into your tool.
- Upload a PDF in your app to test it.
The setup guides show where the key goes in Lovable, Bolt, v0, Replit, Windsurf and the Claude app.
Benchmark
Fastest in the benchmark, and best at tables
pdf-inspector's own benchmark on the 200-PDF opendataloader-bench corpus, comparing local parsers without OCR.
Table accuracy
TEDS score, 0 to 1. Higher is better.
Time for all 200 PDFs
Seconds, run locally. Shorter is better.
All scores
| Engine | Overall | Reading order | Tables | Headings | 200 PDFs |
|---|---|---|---|---|---|
| pdf-inspector | 0.875 | 0.915 | 0.814 | 0.788 | 0.47 s |
| LiteParse | 0.873 | 0.913 | 0.693 | 0.811 | 0.75 s |
| OpenDataLoader | 0.831 | 0.902 | 0.489 | 0.739 | 2.57 s |
| PyMuPDF4LLM | 0.735 | 0.886 | 0.401 | 0.424 | 17.1 s |
| MarkItDown | 0.589 | 0.844 | 0.273 | 0.000 | 16.2 s |
Source: pdf-inspector README, refreshed July 31, 2026 on an Apple M4 Pro. Native-text extraction only. The hosted API adds network time, and OCR pages take a few seconds.
Privacy
We don't keep your files
People upload contracts, bank statements, medical letters and CVs. PDF Inspector holds each file only while converting it, then deletes it. This applies on every plan.
- Deleted after processing
- Files exist only while your request runs.
- Not logged
- File contents and extracted text never appear in our logs, error logs included.
- Not used for training
- Your documents never train AI models.
- Results expire
- Long-document results are deleted when you fetch them, or after one hour.
What we keep: timestamp, key ID and page count, for billing. Details
For AI agents
How an agent uses PDF Inspector
Every step is an HTTP call or an MCP tool, and every error says what to call next. Paying is the one step that needs a person.
-
Test without a key
One call a day, up to 10 text pages.
GET https://api.pdfinspector.com/md/https://example.com/report.pdf 200 OK · text/markdown # Q3 Report … -
Create a key
The key is returned right away, with no credits. The agent gives its user the checkout link.
POST https://api.pdfinspector.com/v1/keys { "email": "you@example.com" } 201 Created { "key": "sk_live_…", "credits_remaining": 0, "checkout_url": "https://pdfinspector.com/checkout/…" } -
Run out of credits
The error names the next step and links to checkout for the user.
402 Payment Required { "error": { "code": "insufficient_credits", "next_action": { "type": "buy_credits", "url": "https://pdfinspector.com/checkout/…" } } }
Pricing
Pricing
Text pages cost 1 credit each, and scanned pages that need OCR cost 15. Buy credit packs as you need them, or subscribe for a lower price per page.
| Plan | Price | Credits | Per text page | |
|---|---|---|---|---|
| Credit pack | $10 | 10,000, valid 12 months | $0.001 | Buy |
| Credit pack | $50 | 60,000, valid 12 months | $0.00083 | Buy |
| Builder | $12 / month | 20,000 a month, 60 requests / min | $0.0006 | Subscribe |
| Scale | $49 / month | 100,000 a month, priority queue, invoice billing | $0.00049 | Subscribe |
How credits work
- Checking a PDF with
/v1/inspectis free, and so are failed requests. - Subscription credits reset monthly and don't roll over. Pack credits last 12 months. Subscription credits are used first.
Spending controls
- Auto top-up buys a pack when your balance drops below a limit you set.
- Per-key spend caps stop a runaway loop from draining your balance.
- When credits run out, your agent gets a checkout link to pass to you. Agents can't pay. Only you can.
Questions
- Is this the official pdf-inspector?
- No. PDF Inspector is an independent service that hosts Firecrawl's open-source pdf-inspector library (MIT license) and adds OCR, API keys and an MCP server. It isn't affiliated with or endorsed by Firecrawl. The library itself is free on crates.io, PyPI and npm if you'd rather run it yourself.
- Is there a free tier?
- No. Without a key you can make one test call a day, up to 10 text pages. After that you buy credits, starting with a $10 pack.
- Why pay for a hosted API when the library is free?
- You don't have to compile or bundle anything or set up OCR. The API runs from edge functions and frontend-only apps where native modules don't, accepts URLs, and agents can use it through MCP.
- Do I need a backend?
- No. A publishable key (
pk_) is locked to your domain and works from the browser. If your app has a backend or edge functions, use a secret key (sk_) there. The setup prompts do this by default. - How big can a PDF be?
- Up to 50 MB and 500 pages. Send
pages, for example1-5, to convert part of a long document and pay only for those pages.