parsr.

Live playground

Drop a document. See JSON.

The fastest way to know whether parsr fits your stack: upload a real bank statement, payslip, receipt, or invoice and watch structured output appear with confidence scores and citations. Sign up takes sixty seconds, and the playground is included on every plan — free tier included.

What you can do

Three minutes from upload to integration

01 / Sign up

Sixty-second signup

Email, password, region (EU or US). No credit card. Your account ships with 200 free pages a month plus a 500-credit signup bonus that's plenty to evaluate every parser end-to-end.

02 / Upload

Drop a real document

PDF, JPG, PNG, or HEIC. Use a real customer document or one of our anonymized fixtures. Pick a built-in parser (bank statement, payslip, receipt, invoice) or paste a JSON Schema for custom extraction.

03 / Ship

Copy as curl, paste, ship

Once the output is what you want, the playground hands you a one-line curl command — or a copy-paste TypeScript or Python snippet — that hits the same region-bound endpoint your production code will use.

What you'll see

Structured JSON. Confidence on every field.

The playground runs the same endpoint your production code will call. Every field comes back with a confidence score and, where the model could ground the value, a bounding box pinned to the source page.

Domain-specific validators (balance-chain on bank statements, net-pay-match on payslips, totals-reconcile on invoices) run on the response before it hits your code, so you find out about integrity issues in the playground — not in production.

Once the output looks right, click Copy as curl and you have a one-line request that hits the same region-bound endpoint your API key is locked to. From there it's a paste into your codebase.

response.jsonjson
{
  "doc_type": "bank_statement",
  "schema_version": "v2",
  "account": {
    "iban": { "value": "BE68 5390 0754 7034", "confidence": 0.99 },
    "holder": { "value": "Acme NV", "confidence": 0.97 },
    "currency": { "value": "EUR", "confidence": 0.99 }
  },
  "period": {
    "from": { "value": "2026-04-01", "confidence": 0.98 },
    "to":   { "value": "2026-04-30", "confidence": 0.98 }
  },
  "balance": {
    "opening": { "value": 12480.55, "confidence": 0.98 },
    "closing": { "value": 14122.10, "confidence": 0.98 }
  },
  "transactions": [
    {
      "date":        { "value": "2026-04-03", "confidence": 0.99 },
      "description": { "value": "SEPA — Stripe payout", "confidence": 0.96 },
      "amount":      { "value": 1845.22,  "confidence": 0.99 },
      "balance_after": { "value": 14325.77, "confidence": 0.97 },
      "bbox": { "page": 1, "x": 0.08, "y": 0.42, "w": 0.84, "h": 0.03 }
    }
  ],
  "validators": {
    "balance_chain": "ok",
    "iban_checksum": "ok",
    "period_bounds": "ok"
  }
}

What it costs

Free to try. No card. No call.

Free tier

200 pages / month

Plus a one-time 500-credit signup bonus that lasts 90 days. Enough to evaluate every parser, run a real-data spike, and ship a prototype.

Per request

Up to 50 pages, 30 MB

Single-request limits in the playground match the production API. Multi-page documents are first-class — you don't need to split.

Region-bound

EU stays in EU

Pick EU at signup and your playground uploads land in Exoscale Zürich; pick US and they land in Hetzner Ashburn. No cross-region transit, ever.

Test-mode keys (sk_*_test_*) return mock JSON without burning credits, so you can wire end-to-end tests without ever touching a real document. See /pricing for the full plan ladder.

One upload is worth a thousand sales calls.

Sign up, paste a real document, and see whether the JSON parsr returns is the JSON your stack needs. If it isn't, walk away — no lock-in, no follow-up email.