MRZ Passport & ID Reader avatar

MRZ Passport & ID Reader

Pricing

from $5.00 / 1,000 parsed mrzs

Go to Apify Store
MRZ Passport & ID Reader

MRZ Passport & ID Reader

Reads ICAO Machine Readable Zones from passport and ID images. Extracts document number, names, nationality, dates, and validates check digits. No LLM API key required.

Pricing

from $5.00 / 1,000 parsed mrzs

Rating

0.0

(0)

Developer

Robin p

Robin p

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Read ICAO Machine Readable Zones from passport and ID images (or paste raw MRZ text) and return structured identity fields with check-digit validation.

Uses local OCR (Tesseract) + the standard mrz parser — no LLM / Google Vision API key.

What it extracts

FieldMeaning
formatTD3 (passport), TD2, or TD1 (ID card)
documentCode / documentNumberDocument type and number
issuingState / nationalityISO 3166-1 alpha-3 codes (as printed in MRZ)
lastName / firstNameNames (Latin transliteration per ICAO)
sexmale / female / unspecified
birthDate / expirationDateNormalized YYYY-MM-DD
personalNumberOptional personal number when present
checkDigitsValidAll MRZ check digits passed
validParser’s full validation (includes known state-code checks)
mrzLinesRaw MRZ lines used for the parse

MRZ is Latin-only by ICAO design (A–Z, 0–9, <). Non-Latin names are already transliterated on the document.

Pricing

  • $0.01 per successfully parsed MRZ ($10.00 / 1,000 results)
  • Failed images and invalid/non-MRZ inputs go to the errors dataset and are not billed

How to use

  1. Paste passport/ID image URLs (MRZ must be visible), or paste raw MRZ lines in mrzTexts
  2. Keep onlyValidMrz enabled unless you want partial OCR dumps billed
  3. Start the Actor
  4. Read structured records from the Dataset

Example input (raw text — great for testing)

{
"mrzTexts": [
"P<UTOERIKSSON<<ANNA<MARIA<<<<<<<<<<<<<<<<<<<\nL898902C36UTO7408122F1204159ZE184226B<<<<<10"
],
"onlyValidMrz": true,
"maxConcurrency": 3
}

Example input (images)

{
"imageUrls": [
"https://example.com/passport-mrz.jpg"
],
"onlyValidMrz": true,
"maxConcurrency": 3
}

Example dataset item

{
"imageId": "mrz-1",
"hasMrz": true,
"format": "TD3",
"documentCode": "P",
"documentNumber": "L898902C3",
"issuingState": "UTO",
"nationality": "UTO",
"lastName": "ERIKSSON",
"firstName": "ANNA MARIA",
"sex": "female",
"birthDate": "1974-08-12",
"expirationDate": "2012-04-15",
"checkDigitsValid": true,
"confidence": 1,
"error": null
}

Notes

  • Prefer sharp, well-lit photos of the MRZ band (bottom of the data page).
  • Specimen country code UTO is used in ICAO examples; check digits pass, but valid may be false because UTO is not a real ISO state.
  • Document images contain personal data — handle outputs according to your privacy obligations.