PresentID MRZ Detection API localizes and recognizes Machine Readable Zone / Travel Documents (MRZ / MRTD) from a single input image.
**Features**
- You don't need to adjust the camera/image to define a Region Of Interest (ROI)
-Y High accuracy in states that MRZ lines are small, far away, blurred, partially occluded, skewed or slanted
- Support all MRZ types (Travel Documents 1/2/3, MRVA, MRVB...) - regardless of the font, content, shape, or country
- Run at less than 1 second on Core i7-6700 device
- Support IOS, Android, Windows, and Mac devices.
- Easy integration with your app.
**Rules & Restrictions**
- Send data via Base64 or an image URL or an image file.
- Image size should not exceed 8 MB.
- Also, the images should not be larger than 5000 pixels and smaller than 50 pixels.
**Use Cases**
- Digital banking app
- Online Payment apps
- NeoBanking apps
Python quick start
import requests
url = "https://mrz-scanner.p.rapidapi.com/ScanMRZ"
payload = "imageBase64=%3CREQUIRED%3E"
headers = {
'content-type': "application/x-www-form-urlencoded",
'x-rapidapi-host': "mrz-scanner.p.rapidapi.com",
'x-rapidapi-key': "f485496ab8msh2ea068a0bbe333cp179f86jsn2b4afe8962dd"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Send document image as a Base64 string
Object | Description |
---|---|
imageBase64 |
[Required] |
{
"statusCode": 200,
"statusMessage": "MRZ information has extracted completely",
"hasError": false,
"data": {
"header": {
"type": "TD3",
"type_label": "Passport",
"text": "P<FRASPECIMEN<<NATACHA<<<<<<<<<<<<<<<<<<<<<<\n60RF197658FRA8407122F2007058<<<<<<<<<<<<<<06",
"box": {
"bottomLeftX": "24",
"bottomLeftY": "350",
"bottomRightX": "561",
"bottomRightY": "396",
"topLeftX": "24",
"topLeftY": "350",
"topRightX": "562",
"topRightY": "351"
}
},
"fields": {
"surname": "SPECIMEN",
"name": "NATACHA",
"country": "FRA",
"country_english": "France",
"country_native": "Frañs",
"country_2letters": "FR",
"nationality": "FRA",
"nationality_english": "France",
"nationality_native": "Frañs",
"nationality_2letters": "FR",
"birth_date": "840712",
"expiry_date": "200705",
"sex": "F",
"sex_label": "Female",
"document_type": "P",
"document_number": "60RF19765",
"optional_data": "",
"birth_date_hash": "2",
"expiry_date_hash": "8",
"document_number_hash": "8",
"optional_data_hash": "0",
"optional_data_2": ""
}
}
}
curl --location --request POST 'https://zylalabs.com/api/3964/mrz+scanner+-+api/4729/send+image+as+base64?imageBase64=jhgj' --header 'Authorization: Bearer YOUR_API_KEY'
Scan MRZ with public address.
Object | Description |
---|---|
linkFile |
[Required] |
{
"statusCode": 200,
"statusMessage": "MRZ information has extracted completely",
"hasError": false,
"data": {
"header": {
"type": "TD3",
"type_label": "Passport",
"text": "P<FRASPECIMEN<<NATACHA<<<<<<<<<<<<<<<<<<<<<<\n60RF197658FRA8407122F2007058<<<<<<<<<<<<<<06",
"box": {
"bottomLeftX": "24",
"bottomLeftY": "350",
"bottomRightX": "561",
"bottomRightY": "396",
"topLeftX": "24",
"topLeftY": "350",
"topRightX": "562",
"topRightY": "351"
}
},
"fields": {
"surname": "SPECIMEN",
"name": "NATACHA",
"country": "FRA",
"country_english": "France",
"country_native": "Frañs",
"country_2letters": "FR",
"nationality": "FRA",
"nationality_english": "France",
"nationality_native": "Frañs",
"nationality_2letters": "FR",
"birth_date": "840712",
"expiry_date": "200705",
"sex": "F",
"sex_label": "Female",
"document_type": "P",
"document_number": "60RF19765",
"optional_data": "",
"birth_date_hash": "2",
"expiry_date_hash": "8",
"document_number_hash": "8",
"optional_data_hash": "0",
"optional_data_2": ""
}
}
}
curl --location --request POST 'https://zylalabs.com/api/3964/mrz+scanner+-+api/4730/send+image+with+url?linkFile=https://i.ibb.co/HtQzJnf/mrz2.jpg' --header 'Authorization: Bearer YOUR_API_KEY'
Send image as a file to API
Object | Description |
---|---|
Request Body |
[Required] File Binary |
{
"statusCode": 200,
"statusMessage": "MRZ information has extracted completely",
"hasError": false,
"data": {
"header": {
"type": "TD3",
"type_label": "Passport",
"text": "P<FRASPECIMEN<<NATACHA<<<<<<<<<<<<<<<<<<<<<<\n60RF197658FRA8407122F2007058<<<<<<<<<<<<<<06",
"box": {
"bottomLeftX": "24",
"bottomLeftY": "350",
"bottomRightX": "561",
"bottomRightY": "396",
"topLeftX": "24",
"topLeftY": "350",
"topRightX": "562",
"topRightY": "351"
}
},
"fields": {
"surname": "SPECIMEN",
"name": "NATACHA",
"country": "FRA",
"country_english": "France",
"country_native": "Frañs",
"country_2letters": "FR",
"nationality": "FRA",
"nationality_english": "France",
"nationality_native": "Frañs",
"nationality_2letters": "FR",
"birth_date": "840712",
"expiry_date": "200705",
"sex": "F",
"sex_label": "Female",
"document_type": "P",
"document_number": "60RF19765",
"optional_data": "",
"birth_date_hash": "2",
"expiry_date_hash": "8",
"document_number_hash": "8",
"optional_data_hash": "0",
"optional_data_2": ""
}
}
}
curl --location 'https://zylalabs.com/api/3964/mrz+scanner+-+api/4731/send+image+by+file++multipart+formdata' \
--header 'Content-Type: application/json' \
--form 'image=@"FILE_PATH"'
After signing up, every developer is assigned a personal API access key, a unique combination of letters and digits provided to access to our API endpoint. To authenticate with the MRZ Scanner - API REST API, simply include your bearer token in the Authorization header.
Header | Description |
---|---|
Authorization
|
[Required] Should be Bearer access_key . See "Your API Access Key" above when you are subscribed. |
No long term commitments. One click upgrade/downgrade or cancellation. No questions asked.
An MRZ document scanning service (Passports, Visas and ID Cards)
Fast and accurate extraction of data from MRZs. Support for multiple document types including passports, visas, and various national ID cards. Integration capability with existing systems for seamless data verification.
The API primarily uses the POST method, where you can send images of documents, and it returns the parsed MRZ data in a structured json format.
We prioritize data security by implementing industry-standard security measures such as SSL/TLS encryption for all data transmissions. We ensure that all data is handled and processed securely to maintain confidentiality and integrity.
400 Bad Request: Indicates an issue with the input data (e.g., corrupted or unclear images). 401 Unauthorized: Occurs if your API key is missing or invalid. 500 Internal exception
Zyla API Hub is, in other words, an API MarketPlace. An all-in-one solution for your developing needs. You will be accessing our extended list of APIs with only your user. Also, you won't need to worry about storing API keys, only one API key for all our products is needed.
Prices are listed in USD. We accept all major debit and credit cards. Our payment system uses the latest security technology and is powered by Stripe, one of the world’s most reliable payment companies. If you have any trouble with paying by card, just contact us at [email protected]
Sometimes depending on the bank's fraud protection settings, a bank will decline the validation charge we make when we attempt to be sure a card is valid. We recommend first contacting your bank to see if they are blocking our charges. If more help is needed, please contact [email protected] and our team will investigate further
Prices are based on a recurring monthly subscription depending on the plan selected — plus overage fees applied when a developer exceeds a plan’s quota limits. In this example, you'll see the base plan amount as well as a quota limit of API requests. Be sure to notice the overage fee because you will be charged for each additional request.
Zyla API Hub works on a recurring monthly subscription system. Your billing cycle will start the day you purchase one of the paid plans, and it will renew the same day of the next month. So be aware to cancel your subscription beforehand if you want to avoid future charges.
Just go to the pricing page of that API and select the plan that you want to upgrade to. You will only be charged the full amount of that plan, but you will be enjoying the features that the plan offers right away.
Yes, absolutely. If you want to cancel your plan, simply go to your account and cancel on the Billing page. Upgrades, downgrades, and cancellations are immediate.
You can contact us through our chat channel to receive immediate assistance. We are always online from 9 am to 6 pm (GMT+1). If you reach us after that time, we will be in contact when we are back. Also you can contact us via email to [email protected]
Service Level:
100%
Response Time:
4,401ms
Service Level:
100%
Response Time:
11,188ms
Service Level:
97%
Response Time:
678ms
Service Level:
100%
Response Time:
552ms
Service Level:
100%
Response Time:
2,452ms
Service Level:
100%
Response Time:
204ms
Service Level:
100%
Response Time:
482ms
Service Level:
100%
Response Time:
605ms
Service Level:
100%
Response Time:
69ms
Service Level:
100%
Response Time:
137ms
Service Level:
100%
Response Time:
238ms
Service Level:
100%
Response Time:
10,012ms
Service Level:
100%
Response Time:
962ms
Service Level:
100%
Response Time:
157ms
Service Level:
99%
Response Time:
2,316ms
Service Level:
100%
Response Time:
1,574ms