Automated Hotel Check-In Passport Scanner API
Eliminate front desk queues and elevate the guest experience. Instantly extract and verify international passport data via a pure REST API for seamless PMS and kiosk integration.
200 free credits = 100 Passport scans, no credit card. Then from $5 for 500 credits, pay as you go. See pricing

The Front Desk Bottleneck
Long check-in queues remain one of the biggest drivers of negative hotel reviews. Manual passport data entry by front desk staff is slow and prone to costly typos. Furthermore, integrating traditional OCR solutions into self-service kiosks is notoriously difficult because legacy vendors rely on heavy mobile SDKs that conflict with the web or Windows-based environments typically used in hospitality hardware. For a broader look at modernizing global guest onboarding, explore our travel identity verification solutions.
StructOCR: API-First Hospitality Integration
Powered by our core Passport OCR engine, StructOCR completely eliminates SDK bloat. We provide a pure, lightweight REST API that seamlessly accepts Base64 strings and direct file uploads. Hosted on Cloudflare's ultra-fast edge network, our engine processes guest documents from 195+ countries in seconds. Whether a passport is scanned at the front desk or on a guest's smartphone before arrival, the data is parsed in seconds and the image is deleted within 24 hours.
Live Demo: Passport scanner
No registration required. Upload a file to test the extraction.
Drop files here or click to browse
JPG · PNG · PDF · TIFF · up to 500 files · max 4.5 MB each
No document handy?
Core Hospitality Applications
Self-Service Kiosks
Integrate pure HTTP API calls directly into your lobby's check-in hardware, bypassing the need for complex native SDK integrations.
Global Property Management (PMS)
Scale operations for international hotel chains. We natively support USDT/Crypto payments to eliminate cross-border friction for global hospitality SaaS operators. View our straightforward API pricing.
Mobile Concierge Web Apps
Allow guests to complete pre-arrival check-ins using their mobile browser by directly uploading a photo of their passport.
Automated Police Registration
Automatically extract deterministic, ISO 8601 formatted demographic data required for mandatory local law enforcement reporting.
Technical Specs
- API-First Architecture: 100% HTTP/JSON based. Zero SDK dependencies, ensuring perfect compatibility with web apps and custom hotel kiosks.
- Base64 & File Native: Stream image data directly to our endpoints securely without exposing guest PII on public cloud storage.
- Edge Processing: Sub-1.2s latency globally, powered by Cloudflare's distributed edge network.
- 24-Hour Data Retention: Images and results are deleted within 24 hours, which helps with hospitality privacy obligations.
Key Features
- MRZ + VIZ Dual Engine: Automatically extracts the Machine Readable Zone and intelligently falls back to the Visual Inspection Zone for worn or damaged passports.
- Glare & Low-Light Resilient: Pre-processing pipeline handles shadows and glare commonly found in hotel lobby lighting environments.
- Strict Normalization: Normalizes all dates to reliable ISO 8601 (`YYYY-MM-DD`) formatting for error-free database entry.
Integration & AI Prompts
Call the REST API directly from your hotel's backend or kiosk terminal using standard HTTP requests. For comprehensive payload schemas, consult our Passport OCR Developer Documentation.
import requests
import base64
# 📚 Developer Docs: https://structocr.com/developers/passport-ocr
# Note: StructOCR is strictly a REST API. Send Base64 natively
# from your PMS backend or kiosk software without installing any SDKs.
with open("guest_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:
# Relayed through Cloudflare Edge for fast parsing
print("Processing Guest Check-In...")
response = requests.post(url, headers=headers, json=payload)
result = response.json()
if result.get('success'):
print("✅ Guest Data Extraction Complete!\n")
# Standardized Data for the PMS
core = result['data']
print(f"Guest: {core.get('given_names')} {core.get('surname')}")
print(f"Nationality: {core.get('nationality')}")
print(f"Doc No: {core.get('passport_number')} ({core.get('country_code')})")
print(f"DOB: {core.get('date_of_birth')} (ISO 8601)")
else:
print(f"❌ Extraction Failed: {result.get('error')} - {result.get('message')}")
except Exception as e:
print(f"Error: {e}")Standardized JSON Output
Receive deterministic, cleanly structured demographic data ready for immediate insertion into your property management 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 use a REST API instead of an SDK for hotel check-in kiosks?
Hotel kiosks often run on diverse operating systems (Windows, Linux, or web-based wrappers) where deploying native iOS/Android SDKs is impossible. A pure REST API allows you to build a fully custom frontend UI and simply pass the Base64 image securely to our backend, avoiding vendor lock-in and hardware compatibility issues.
How does the API handle glare from lobby lights or poor-quality mobile uploads?
Our models are trained heavily on 'in-the-wild' document captures. The pre-processing pipeline automatically handles perspective distortion, shadows, and the harsh glare typically found when scanning laminated passports under lobby downlights.
Is guest data stored on your servers?
Only briefly. Uploaded images and results are kept for at most 24 hours for quality spot-checks, then deleted.
Explore More Travel & KYC Solutions
Crypto KYC Passport API (No SDK)
Passport OCR API for Web3 and Crypto KYC, with 24-hour data retention. Extract global MRZ and VIZ data instantly without SDK bloat. Upload an image to test our free live demo.
DPDP Compliant Indian Passport OCR API
DPDP-friendly OCR API for Indian passports, with 24-hour data retention. Securely extract back-page PII (Address, Parents' Names) for KYC workflows. File, Base64, and URL supported.
GDPR Compliant Passport OCR API
Extract passport data securely with our OCR API; images are deleted within 24 hours. 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. OCR API built for global KYC workflows, with 24-hour data retention. Supports Base64, URLs, and direct file uploads.
Indian Passport OCR for KYC
Automate digital KYC. Extract MRZ, family, and address details from Indian Passports for RBI compliance. Upload a test image for a free live API demo.
Indian Passport Family Details OCR
Extract Father, Mother, and Spouse names from the back page of Indian passports for background verification. API-first integration with 24-hour data retention.
ISO 8601 Passport Date Parsing API
Stop writing complex regex. Automatically extract and normalize passport dates to strict ISO 8601 (YYYY-MM-DD) format. Upload an image to test our free live demo.
Passport VIZ Extraction API for Airlines
Automate airline check-ins by extracting both MRZ and VIZ passport data instantly via a pure REST API. Upload an image to test our free live demo today.
Proof of Address (PoA) OCR India
Automate PoA verification. Extract and validate permanent residential addresses from Indian passport back pages. API-first integration with 24-hour data retention.
Remote Hiring Identity OCR API
Automate global remote hiring with our identity OCR API; images are deleted within 24 hours. Extract passport data securely without SDKs. Upload an image to test our free live demo.
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.