VIN OCR API
& SDK

Read the 17-character VIN from a photo of a windshield, door-jamb label, barcode sticker or registration document, and get it back as JSON to pre-fill your CRM, dealership or auction software. 1 credit per scan, with Python and Node.js SDKs.

200 VIN scans • No credit card required
POST /v1/vin
curl -X POST 
https://api.structocr.com/v1/vin \
-H "x-api-key: YOUR_KEY" \
-d '{"img": "data:image/jpeg;base64,/9j/4A..."}'
RESPONSE 200 OK
{
  "success": true,
  "data": {
    "vin": "1M8GDM9A6KP042788",
    "confidence": "High",
    "carrier_type": "windshield"
  }
}

Deployed in extreme environments globally

Powering Auto Auctions in Dallas
High-Speed Checkpoints in Dubai

Built for Automotive Business

Smart Correction

Automatically fixes common OCR confusions based on allowed VIN characters (e.g., correcting 'I' to '1', 'Q' to '0').

Multi-Surface Support

Trained on diverse datasets to read from curved windshields, B-pillar stickers, metal plates, and registration documents.

Low Latency

Optimized for mobile workflows: one photo in, the VIN back in a few seconds, so check-ins and quotes don't wait on typing.

Glare Removal

Advanced pre-processing algorithms filter out glass reflections and shadows common in outdoor scanning.

Carrier Detection

Intelligently identifies the source type (e.g., 'windshield' vs 'sticker') to provide context.

Clean JSON

No parsing required. Get the normalized 17-character VIN string directly in your API response.

Dot-Matrix Support

Specialized models trained to read dot-matrix (stippled) fonts often found on chassis and engine blocks.

Privacy First

Images and results are kept for at most 24 hours for quality checks, then deleted automatically.

Flowchart demonstrating the VIN OCR process: extracting the 17-character Vehicle Identification Number from an image into structured JSON

How it works

Integrate vehicle data capture into your insurance or fleet app in minutes.You can experience the complete extraction flow right now using our free VIN OCR scanner tool.

01

Capture Image

User snaps a photo of the VIN (Windshield, Door Jamb, or Document) via your mobile app or web interface.

02

AI Analysis

We locate the VIN and apply character logic to filter out illegal characters (like I, O, Q) for cleaner results.

03

Extracted Data

Receive the corrected 17-character VIN and confidence score instantly to pre-fill your forms.

response.json
{
  "success": true,
  "data": {
    "vin": "1M8GDM9A6KP042788",
    "confidence": "High",
    "carrier_type": "windshield"
  }
}
Data Output

Exact Data Extraction

Our API focuses on the most critical data point: The 17-character VIN. It automatically normalizes results (uppercase, no spaces) and filters out disallowed characters.

VIN (17 chars)

Key: vin

Confidence Score

Key: confidence

Carrier Type

Key: carrier_type

Live Demo: VIN Barcode Scanner

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

1
Upload
2
Results
↑

Drop files here or click to browse

JPG · PNG · PDF · TIFF  ·  up to 500 files · max 4.5 MB each

Photograph the VIN plate at the bottom of the windshield or the label on the driver-side door jamb.

No document handy?

No files selected
Need more testing? Create a free account to get 200 free credits(equals 200 VIN scans)

Trusted by Automotive Leaders

From insurance apps to auction houses, businesses rely on our VIN accuracy.

We audit thousands of cars weekly at our auction lot. The instant prefill API allows our field agents to reconcile inventory in seconds instead of manually typing numbers.

Operations Director
Large-Scale Auto Auction
Dallas, USA

Scanning VINs under the extreme desert sun used to fail constantly. StructOCR's glare removal handles it perfectly, keeping our high-speed checkpoints moving without delays.

CTO
Checkpoint Security Solutions
Dubai, UAE

Scanning VINs from windshields used to be a nightmare due to glare. StructOCR handles it perfectly, speeding up our insurance quoting process by 40%.

Product Manager
InsurTech Startup
Global

VIN Scanner SDK for Python and Node.js

The official SDKs send the image, handle authentication and return the VIN with a confidence level, so your server-side code stays a few lines long. Each successful scan costs 1 credit.

Python SDK

pip install --upgrade structocr
import os
from structocr import StructOCR

client = StructOCR(os.environ["STRUCTOCR_API_KEY"])
result = client.scan_vin("windshield.jpg")
print(result["data"]["vin"], result["data"]["confidence"])
View Python SDK documentation

Node.js SDK

npm install structocr
const StructOCR = require("structocr");

const client = new StructOCR(process.env.STRUCTOCR_API_KEY);
client.scanVin("windshield.jpg")
    .then(result => console.log(result.data.vin, result.data.confidence));
View Node.js SDK documentation

Built for Developers,
Optimized for Automotive

We abstract away the complexity of computer vision, giving you a clean endpoint to verify vehicles.

Rapid Integration

Standardized REST API that works with any language (Python, Node, Go). Get up and running in minutes.

High Availability

Served from serverless edge infrastructure, with requests that fail on our side refunded automatically.

Auto-Correction Logic

Stop writing RegEx. We handle the 17-char validation and character correction logic for you.

Clear Documentation

Comprehensive guides and code samples to help you handle edge cases like older vehicles or damaged plates.

Ready to Build with StructOCR?

Get your API key in under a minute. New users receive 200 free credits to test Passport, VIN, License Plate, Container, Receipt, HIN, Driver License, ID Card, Vehicle Registration, Weighbridge Ticket, ATM Cassette and Invoice OCR APIs.

✓ No credit card required · ✓ Instant API key · ✓ Full API access

Frequently Asked Questions