Pricing
Pricing
Three products, one API, priced per page. See the pricing page for the full comparison.
| Product | What you get | Standard rate |
|---|---|---|
| Extract | The document as Markdown with layout blocks and bounding boxes, plus the fields you ask for as JSON when you send a schema | $15 per 1,000 pages |
| Deep Extract | Two OCR engines, adjudicated disagreements, a verification pass on every value | $35 per 1,000 pages |
| Deep Extract Fast | Deep Extract about twice as fast, same accuracy (Standard and Enterprise) | $90 per 1,000 pages |
Which product runs is decided per request:
pipeline=extractis Extract andpipeline=deep-extractis Deep Extract, with or without a schema;pipeline=deep-extractwithspeed=fastis Deep Extract Fast. One API key can mix all three.speed=fastonpipeline=extractis charged at the Extract rate. (Until October 2026 a one-pass job without a schema was sold as Parse at $10; jobs from then still reportproduct: "parse".)
How long each product takes, in seconds per document, is under How long it takes on the benchmarks page: a 1–2 page document is about 13 s on Extract, 1 min 26 s on Deep Extract and 38 s on Deep Extract Fast.
Plans
| Free | Standard | Enterprise | |
|---|---|---|---|
| Price | $0 | Pay as you go, per page, from prepaid credits | Custom |
| Pages per month | 2,000 | Unlimited | Unlimited |
| Pages per document | 50 | 1,000 | 2,000 (the hard maximum) |
| File size | 15 MB | 50 MB | 500 MB |
| Products | Extract, Deep Extract | All three | All three, volume rates |
| Playground (signed in, runs against your quota) | Yes | Yes | Yes |
| Review UI | Yes | Yes | Yes |
| Webhooks, blueprints, optimizer | No | Yes | Yes |
| PII redaction, form fill, retention controls, incognito | No | No | Yes |
| Support | Community | Priority, dedicated |
Free includes every product so you can test the accuracy tier you will actually buy. Standard has no allowance: every page draws from your credits at the rate of the product that ran it.
Credits and billing
Standard is prepaid: buy credits, and every page draws down at the rate of the
product that ran it. The billing page does all of this:
buy a pack ($50, $100, $500 or a custom amount from $20 to $5,000) through
Stripe Checkout, see the balance and the recent activity, set auto-recharge,
and manage the saved card and receipts in Stripe's own portal, so card details
never pass through DeepRead. The same calls are open to your own tooling with a
dashboard session (Authorization: Bearer <token>).
- Balance —
GET /dashboard/v1/billing/creditsreturns what is available, purchased, promotional, held for running jobs and frozen, plus the last fifty ledger entries. - Spend per key —
GET /dashboard/v1/keys/lists every key with what it has spent this month and in each of the last six (charged, plus held by its jobs still running), and its monthly limit if it has one. One key per project is one budget per project. Set a limit when creating a key or withPATCH /dashboard/v1/keys/{id}and{"monthly_limit_usd": 50}(nullremoves it); a job that would take the key past its limit is refused with402andkey_limit_reacheduntil the month turns (UTC) or the limit is raised. The account's balance still has the last word. - Packs —
POST /dashboard/v1/billing/credits/checkoutwith{"pack": "50" | "100" | "500" | "custom", "custom_usd": N}returns a Stripe Checkout URL for a one-time pack; the card is saved for auto-recharge. Both calls answer503while credits are not enabled on the server. - Auto-recharge —
GET /dashboard/v1/billing/credits/rechargereturns the settings, the saved card (brand, last four, expiry) if there is one, the consent text and whether a recharge is in progress.PUTthe same path withenabled,threshold_usd,amount_usd,monthly_cap_usd,cooldown_secondsandconsent. Enabling needsconsent: trueand a saved card (buy a pack first); otherwise400says which. When a job's hold leaves the available balance under the threshold, one recharge ofamount_usdis charged off-session to the saved card — one at a time, never past the monthly cap, never within the cooldown of the last one. The card is the one your last pack saved; change or remove it from the billing page's "Manage card and receipts", which opens Stripe's portal (POST /dashboard/v1/billing/portal). With no card on file the next recharge attempt fails and is not retried until a pack saves a new one. - Leaving Standard —
POST /dashboard/v1/billing/downgrade(the billing page's Downgrade) moves a prepaid account back to Free straight away: Free's allowance and limits apply, auto-recharge is turned off, and the credits stay on the account until the next pack moves it back to Standard. A subscription from before credits cancels from the same page instead (it ends with its cycle), an invoice account changes plans through its account manager, and a frozen account answers409until its dispute closes. - Enterprise —
GET /dashboard/v1/billing/enterprisereturns the account's purchase orders, what is granted and what remains of the line, what is held for running jobs, the contract rates per product, the month to date by product and the last twelve invoices. A purchase order is a credit line: jobs hold and settle against it at the contract rate, the month is invoiced through Stripe (net 30), and a job past the line is refused with402until a new purchase order is recorded. Enterprise accounts can also buy credit packs by card on the billing page and use auto-recharge.
File types
| Plan | Accepted uploads |
|---|---|
| Free | PDF, PNG, JPEG |
| Standard | PDF, PNG, JPEG, TIFF (multi-page), WebP, BMP, GIF, DOCX, TXT |
| Enterprise | The Standard list, plus APNG, PSD, PCX, PPM, CUR, DCX, FTEX, PIXAR, DOC, DOTX, ODT, RTF, WPD, PPT, PPTX, ODP, HTML, CSV, XLSX, XLSM, XLS, XLTX, XLTM, ODS |
A type the plan does not accept is refused with 415 and a body naming the plan that has it. Everything that is not a PDF, PNG or JPEG is converted to PDF before the page count, and the converted page count is what is charged; spreadsheets paginate sheet by sheet, so wide sheets produce many pages. A file that cannot be converted is 400 with the reason. The job then runs on the PDF and reports it as such.
What counts as a page
Billing counts pages processed, not API calls. A 10-page PDF sent to
POST /v1/process is 10 pages whichever product runs it. One image is one page.
A file that is converted to PDF first (an Office document, a spreadsheet, a
multi-frame image) is charged for the pages the conversion produced.
When you hit the Free limit
Requests return 429 once the monthly allowance is used, and keep returning
429 until your cycle resets. Your cycle resets every month on the day you signed
up, and unused pages do not carry over. Nothing is charged unless you move to
Standard.
Authenticated responses carry your current standing:
| Header | Meaning |
|---|---|
X-RateLimit-Limit | Your monthly page allowance |
X-RateLimit-Remaining | Pages left this cycle |
X-RateLimit-Used | Pages used this cycle |
X-RateLimit-Reset | Unix timestamp when the cycle resets |
Enterprise
Enterprise plans are priced per product against your volume and can include your own model keys (OpenAI, Google or OpenRouter), so model spend stays on your account. DeepRead processes the document; the model calls run on your key. See Bring Your Own Key.
Next steps
- Pricing page — the full comparison
- Contact Sales — volume pricing and enterprise agreements