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.

Automated passport scanning and data extraction for hotel self check-in kiosks.

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 milliseconds. Whether a passport is scanned at the front desk or via a guest's smartphone before arrival, the data is instantly parsed and purged, ensuring complete privacy.

Live Demo: Passport scanner

No registration required. Upload a file to test the extraction.

1
Upload
2
Results

Drop files here or click to browse

JPG · PNG · WebP  ·  up to 500 files · max 4.5 MB each

No files selected

Ready to use this in production? Get 20 free API calls — no credit card needed.

Get 20 Free API Calls →

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.
  • Zero Data Retention: Process-and-forget architecture instantly purges RAM, ensuring total compliance with global hospitality privacy standards.

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 sub-second 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?

No. StructOCR operates on a strict zero-data-retention policy. When your PMS sends a document, it is processed in-memory at our Cloudflare edge nodes and instantly purged after the JSON response is delivered, ensuring compliance with global data privacy laws.

Explore More Travel & KYC Solutions

Precise Data Extraction and Seamless Integration with AI-powered OCR API.

Empower your solutions with automated data extraction by integrating best-in class StructOCR via API seamlessly.

No credit card required • Full API access included