Passport VIZ Extraction API for Airlines
Eliminate boarding friction and check-in queues. Accurately extract passenger data from both the MRZ and Visual Inspection Zone (VIZ) using an ultra-fast, zero-retention API.

The Vulnerability of MRZ-Only Scanning
For airlines and Online Travel Agencies (OTAs), seamless passenger check-in is critical. However, relying solely on Machine Readable Zone (MRZ) scanners often leads to bottlenecks when passports are damaged, obscured, or non-standard. When the MRZ fails, human agents must manually verify documents against the Passenger Name Record (PNR), causing flight delays and frustrating travelers. For a broader look at modernizing passenger flows, explore our travel identity verification solutions.
StructOCR: The MRZ + VIZ Dual Engine
Powered by our core Passport OCR engine, StructOCR automatically prioritizes the MRZ but intelligently falls back to the Visual Inspection Zone (VIZ) when needed. Operating entirely on Cloudflare's global edge network, our API-first architecture eliminates the need for bulky SDKs, allowing you to instantly deploy highly accurate, sub-second passport parsing directly into custom airport kiosks or web booking engines.
Live Demo: Passport scanner
No registration required. Upload a file to test the extraction.
Drop files here or click to browse
JPG · PNG · WebP · up to 500 files · max 4.5 MB each
Core Aviation & Travel Applications
Self-Service Airport Kiosks
Integrate pure HTTP API calls directly into Linux or Windows-based kiosks where traditional mobile SDKs cannot be deployed, ensuring fast baggage drop and check-in.
Global OTA Flight Booking
Autofill passenger details instantly from user uploads. We natively support USDT/Crypto payments to bypass traditional fiat friction for global SaaS and travel platforms. View our straightforward API pricing.
Automated PNR Matching
Extract deterministic, ISO 8601 formatted names and dates from the VIZ to programmatically cross-reference with Amadeus or Sabre PNR databases.
Pre-Flight Visa & APIS Checks
Capture accurate passport expiry dates and issuing countries in milliseconds to validate Advance Passenger Information Systems (APIS) requirements before boarding.
Technical Specs
- Dual Engine Fallback: Automatically targets the MRZ and seamlessly falls back to VIZ layout parsing if optical data is degraded.
- Strict ISO 8601 Normalization: Guarantees dates are returned as `YYYY-MM-DD` for flawless integration with global GDS (Global Distribution Systems).
- Edge Deployment: Deployed across Cloudflare's network to guarantee sub-1.2s latency for kiosks located in international airports.
- API-First Architecture: 100% RESTful integration eliminates the need to install mobile SDKs on diverse proprietary kiosk hardware.
Key Features
- Universal Coverage: Supports visual layout extraction from over 195+ countries, including complex non-standard passports.
- Base64 & File Native: Stream passenger document data securely without exposing PII on intermediary public URLs.
- Zero Data Retention: Designed for strict aviation compliance. Passenger images and JSON payloads are instantly purged from RAM.
Integration & AI Prompts
Bypass SDK compatibility issues completely. Stream Base64 image data directly from your check-in terminal to our edge nodes. For complete payload schemas, consult our official Passport OCR Developer Documentation.
import requests
import base64
# 📚 Developer Docs: https://structocr.com/developers/passport-ocr
# Note: StructOCR is strictly API-first. Send Base64 directly
# from any kiosk backend or booking server—no SDK required.
with open("passenger_passport.jpg", "rb") as image_file:
base64_image = base64.b64encode(image_file.read()).decode('utf-8')
url = "https://api.structocr.com/v1/passport"
headers = {
"x-api-key": "YOUR_API_KEY",
"Content-Type": "application/json"
}
payload = {
"img": base64_image
}
try:
# Processed securely in RAM at the edge and instantly destroyed
print("Extracting VIZ/MRZ Data for PNR Match...")
response = requests.post(url, headers=headers, json=payload)
result = response.json()
if result.get('success'):
print("✅ Passenger Data Extraction Complete!\n")
# Standardized ISO 8601 Data for Airline Systems (Amadeus/Sabre)
core = result['data']
print(f"Passenger: {core.get('surname')}, {core.get('given_names')}")
print(f"Doc No: {core.get('passport_number')} ({core.get('country_code')})")
print(f"DOB: {core.get('date_of_birth')} (ISO 8601 Validated)")
print(f"Expiry: {core.get('date_of_expiry')} (ISO 8601 Validated)")
else:
print(f"❌ Extraction Failed: {result.get('error')} - {result.get('message')}")
except Exception as e:
print(f"Error: {e}")Standardized JSON Output
Receive highly deterministic, cleanly structured passenger data ready for immediate insertion into your departure control system.
{
"success": true,
"data": {
"type": "passport",
"country_code": "IND",
"nationality": "INDIAN",
"passport_number": "Z1234567",
"surname": "SHARMA",
"given_names": "RAHUL",
"sex": "M",
"date_of_birth": "1988-07-22",
"place_of_birth": "NEW DELHI",
"date_of_issue": "2021-04-10",
"date_of_expiry": "2031-04-09",
"issuing_authority": "MINISTRY OF EXTERNAL AFFAIRS",
"country_specific": {
"last_page": {
"father_name": "AMIT SHARMA",
"mother_name": "SITA SHARMA",
"spouse_name": "PRIYA SHARMA",
"address": "FLAT 4B, GREENWOOD APARTMENTS, NEW DELHI PIN: 110001, INDIA",
"old_passport_number": "P7654321",
"old_passport_issue_date": "2010-01-05",
"old_passport_issue_place": "DELHI",
"file_no": "DL1076071103622",
"ecr_status": null
}
}
}
}Frequently Asked Questions
Why extract data from the VIZ instead of just the MRZ?
While the MRZ is highly standardized, physical damage, glare, or poor lighting at airport kiosks frequently cause MRZ scans to fail. By falling back to the Visual Inspection Zone (VIZ), our API can still extract critical passenger details, dramatically reducing the need for manual agent intervention.
Can we integrate this directly into airport check-in kiosks?
Yes. Because StructOCR is a pure REST API and does not rely on mobile SDKs, it can be integrated instantly into any internet-connected kiosk running Linux, Windows, or a web-based UI by simply sending a Base64 image via HTTP POST.
How does the API handle date formatting for airline systems?
Our engine strictly normalizes all extracted dates (Date of Birth, Issue, Expiry) into the ISO 8601 `YYYY-MM-DD` format. This ensures deterministic, error-free data matching when cross-referencing passenger identities against legacy GDS platforms like Amadeus or Sabre.
Explore More Travel & KYC Solutions
Proof of Address (PoA) OCR API
Automate PoA verification. Extract and validate permanent residential addresses from Indian passport back pages. Zero-retention API-first integration.
Remote Hiring Identity OCR API
Automate global remote hiring with our zero-retention identity OCR API. Extract passport data securely without SDKs. Upload an image to test our free live demo.
REST API for Global Passport MRZ
Extract global passport MRZ data instantly via our fast, zero-retention REST API. No SDK required. Upload an image to test our live demo for free.
Right-to-Work Passport Verification API
Automate global HR compliance. Extract passport data instantly with our zero-retention OCR API. No SDK required. Upload an image to test our free live demo.
Zero-Retention Passport OCR for Neo-Banks
Secure your digital onboarding with our zero-retention passport OCR API for neo-banks. Process global KYC data in-memory. Upload an image to test free.
Automated Hotel Check-In Passport Scanner API
Streamline hotel check-ins with our automated passport scanner API. Extract global guest data instantly without SDKs. Upload an image to test our free live demo.
Crypto KYC Passport API (No SDK Required)
Zero-retention Passport OCR API for Web3 and Crypto KYC. Extract global MRZ and VIZ data instantly without SDK bloat. Upload an image to test our free live demo.
DPDP Compliant Indian Passport OCR
DPDP-compliant, zero data retention OCR API for Indian passports. Securely extract back-page PII (Address, Parents' Names) for KYC workflows. File, Base64, and URL supported.
GDPR-Compliant Passport Data Extraction
Extract passport data securely with our GDPR-compliant, zero-retention OCR API. No data stored or logged. Upload an image to test our free live demo.
India Passport Address Extraction API
Extract highly complex address blocks and PII from Indian passport back pages. Zero-retention OCR API built for global KYC workflows. Supports Base64, URLs, and direct file uploads.
Technical Comparisons & Integrations
Explore platform integrations and competitive analysis
Add Passport OCR using Cursor in 5 Minutes
Step-by-step guide to integrating the StructOCR Passport scanner API using the Cursor AI code editor. Build travel, hospitality, and global KYC flows rapidly.
Extracting ECR Status & File Numbers: Generic OCR vs. StructOCR Indian Passport API
Learn why generic text extractors fail to capture critical Indian KYC fields like ECR status and File Numbers, and how a specialized API structures this data automatically.
Heavy KYC SDKs vs. StructOCR Passport API for Mobile Apps
Discover why modern app developers are abandoning bulky on-device OCR SDKs in favor of lightweight, edge-deployed Passport APIs.
Add Passport OCR to Your Lovable.dev App in 5 Minutes
Step-by-step guide to integrating the StructOCR Passport scanner API into a Lovable.dev app through a secure server-side function for travel and KYC flows.
Add Passport OCR to Your Replit App in 5 Minutes
Step-by-step guide to integrating the StructOCR Passport scanner API into a Replit application. Build travel, hospitality, and global KYC flows using Replit Agent and Secrets.
Tesseract & PassportEye vs. StructOCR Passport API
A technical evaluation for developers deciding between open-source MRZ scanners and a dedicated cloud-based Passport OCR API.
From tutorial to production in 5 minutes.
You've seen the code. Now get your API key, grab your 200 free credits, and see it work with your own images. No credit card required.