Skip to main content
Passport OCR · Live

Every passport, parsed in about 20 seconds.

Drop a passport — one page or several — and get back structured JSON with every field, confidence scores, and validation status. No setup required.

The response

One call in, one document out.

A clean JSON envelope with every field, a per-field confidence score, an MRZ checksum result, and a request id you can quote in support tickets.

  • Passport number
  • Last name
  • First name
  • Middle name
  • Gender
  • Nationality
  • Birth date
  • Issue date
  • Expiry date
  • Country of issue
  • Place of issue
  • Place of birth
  • Mother name
  • Father name
  • Spouse name
response.json
{
  "success": true,
  "request_id": "req_8c4ae2…",
  "latency_ms": 19840,
  "fields": {
    "surname":         { "value": "GARCIA",         "confidence": 99.6, "band": "verified" },
    "given_names":     { "value": "MARÍA ELENA",    "confidence": 98.4, "band": "verified" },
    "document_number": { "value": "AB1234567",      "confidence": 99.8, "band": "verified" },
    "nationality":     { "value": "ESP",            "confidence": 99.9, "band": "verified" },
    "date_of_birth":   { "value": "1989-04-12",     "confidence": 99.7, "band": "verified" },
    "date_of_expiry":  { "value": "2032-08-09",     "confidence": 99.5, "band": "verified" },
    "mrz_valid":       { "value": true,             "confidence": 100,  "band": "verified" }
  },

  // Added only when you request a target language (here: language=Arabic).
  // The English "fields" above never change. Each entry keeps the value exactly
  // as printed on the document ("native") plus its translation ("translatory").
  "translation": {
    "fields": {
      "surname":       { "label": "اسم العائلة",   "native": "GARCIA",      "translatory": "غارثيا",       "band": "verified" },
      "given_names":   { "label": "الاسم",          "native": "MARÍA ELENA", "translatory": "ماريا إيلينا", "band": "verified" },
      "nationality":   { "label": "الجنسية",        "native": "ESP",         "translatory": "إسبانيا",      "band": "verified" },
      "date_of_birth": { "label": "تاريخ الميلاد",  "native": "1989-04-12",  "translatory": "١٩٨٩-٠٤-١٢",   "band": "verified" }
    }
  }
}
Why teams pick OnPoint

Designed for the hardest 1% of passports.

Most OCRs handle clean scans. We're built for blurry, glare-flecked phone shots, off-angle bio pages, and visa stamps that bleed into the MRZ.

Every ICAO 9303 field

Names, dates, document number, MRZ, issuing state, gender, nationality — the full visual inspection zone returned in a single response, plus optional family fields where present.

About 20 seconds, synchronously

Around 20 seconds end to end, measured on production traffic. No queueing, no warmup — built for synchronous KYC.

MRZ checksum validation

Every machine-readable line is checksum-verified per ICAO. Tampered or printed-by-hand passports fail loudly, not silently.

Multi-page intelligent merge

Drop a bio page, a visa page, and a stamps page in any order. Fields are reconciled across pages and conflicts surfaced.

Per-field confidence scores

Five confidence bands per field, not per document. Auto-route uncertain extractions to a reviewer instead of failing the whole call.

Images never stored · results purged in 30 days

The document image is processed in memory and never written to disk. The extracted fields are kept for up to 30 days so they appear in your extraction history, then purged — and purged immediately if you delete your account.

Coverage

If it's a passport, we read it.

180+ issuing countries with continuous benchmarking against fresh in-the-wild documents. Every UN member state. Every modern e-passport variant.

180+ issuing countries
All UN member states
Biometric e-passports
Diplomatic & service passports
Damaged / handheld scans
PDF + JPG + PNG + HEIC
Try it on us

2 free instantly. 5 with a free account. No card.

Test the full production API end-to-end before you ever talk to billing. Volume pricing kicks in automatically when you keep going.

Put it in front of real customer documents.

One API key, every modern passport, in production this afternoon.