VIN Decoder API avatar

VIN Decoder API

Pricing

Pay per event

Go to Apify Store
VIN Decoder API

VIN Decoder API

Decode any 17-character VIN into year, make, model, trim, engine, transmission, drive, plant, recalls, owner complaints, NCAP safety ratings, EPA fuel economy, and EU homologation data — from free public sources, no captcha, no API keys.

Pricing

Pay per event

Rating

0.0

(0)

Developer

SR

SR

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

VIN Decoder API — full vehicle decode from a 17-character VIN

A free, no-key VIN decoder API that turns any 17-character Vehicle Identification Number into a curated spec sheet plus public risk and EU homologation data. One actor call returns year, make, model, trim, engine, transmission, drive type, plant, recalls, owner complaints, NCAP safety ratings, EPA fuel economy, and Swiss federal type-approval data — stitched together from five free public sources in a single response.

This is a pure VIN to year-make-model lookup and beyond. No API keys required, no captchas, no per-call surcharges from paid VIN history vendors. The data covers every US-market vehicle from 1981 onwards (via NHTSA vPIC) plus every European vehicle homologated for Swiss/EU registration (via autoref.eu). Pre-1981 vehicles and unknown WMIs still return manufacturer, country, and model year from the local WMI table — the lookup never returns nothing for a valid-format VIN.

What you get

  • Identification — year, make, model, trim, body class, country of origin, manufacturer name
  • Powertrain — engine cylinders, displacement (L), horsepower, fuel type, engine configuration, transmission style + speeds, drive type
  • Manufacturing — plant city, plant state, plant country, GVWR class
  • Recalls — up to 20 active NHTSA recall campaigns matched by year/make/model, with campaign number, component, summary, consequence, remedy, and report date
  • Owner complaints — total count plus the top 5 complaint themes (engine, transmission, brake, airbag, etc.) with mention counts
  • NCAP safety — overall, front driver/passenger, side driver/passenger, and rollover star ratings; investigation count
  • EPA fuel economy — city/highway/combined MPG, annual fuel cost, CO2 per mile, greenhouse gas score, fuel type, drive, vehicle class, transmission
  • EU homologation (when the VIN matches a Swiss-registered car) — DIN horsepower, kW, torque, dimensions in mm, NEDC/WLTP CO2, EU energy efficiency class, factory tire sizes, top speed, first-circulation date

Why decode a VIN with this actor

Most VIN decoder APIs fall into one of two buckets. A handful are free but return only year/make/model — a tiny slice of what's actually encoded in the 17 characters. The rest are paid VIN history reports that bundle title, lien, and accident records into a per-call charge of several dollars, and require an account with a US-only provider.

This actor sits between the two. The output is broader than the free NHTSA vPIC endpoint (which returns ~130 raw fields with no recall, complaint, NCAP, or EPA correlation), and the data sources are all free public APIs — NHTSA vPIC, NHTSA recalls, NHTSA complaints, NHTSA SafetyRatings, EPA fueleconomy.gov, carapi.app, and autoref.eu. No keys, no quotas, no per-call billing from third parties. If you need title-history data, you still need a paid service; for spec, recall, and safety data, this is enough.

The pipeline is six layers deep: a primary NHTSA vPIC decode, a carapi.app augmentation when NHTSA leaves a hole, a local WMI floor that always answers for valid VINs, and four parallel enrichers (recalls, complaints, NCAP, EPA) plus an autoref.eu European homologation lookup. Each enricher is fail-soft — a flaky upstream never breaks the response, it just gets recorded under errors.

Input

FieldTypeRequiredDefaultNotes
vinstringyes1HGCM82633A00435217-character VIN. Case-insensitive. Letters I, O, Q forbidden by ISO 3779.
augmentbooleannotrueWhen false, skip the carapi.app augmentation hop (~0.5s faster on US VINs you know NHTSA covers).
debugbooleannofalseWhen true, the output includes debug.nhtsa_raw — the full NHTSA vPIC field dump (~130 fields).

The VIN is validated against ^[A-HJ-NPR-Z0-9]{17}$ before any network calls run. Bad input never costs latency.

Output

One dataset item per run. Abbreviated example for a 2003 Honda Accord coupe:

{
"vin": "1HGCM82633A004352",
"valid_format": true,
"year": 2003,
"year_alt": null,
"make": "HONDA",
"model": "Accord",
"trim": "EX-V6",
"country": "United States",
"specs": {
"body_class": "Coupe",
"vehicle_type": "PASSENGER CAR",
"doors": 2,
"engine_cylinders": 6,
"engine_displacement_l": 3.0,
"engine_hp": 240,
"engine_fuel": "Gasoline",
"engine_configuration": "V-Shaped",
"engine_model": "J30A4",
"transmission_style": "Automatic",
"transmission_speeds": 5,
"manufacturer": "AMERICAN HONDA MOTOR CO., INC.",
"plant_country": "UNITED STATES (USA)",
"plant_city": "MARYSVILLE",
"plant_state": "OHIO",
"gvwr_class": "Class 1C: 4,001 - 5,000 lb"
},
"recalls": [
{
"campaign_number": "19V182000",
"component": "AIR BAGS:FRONTAL:DRIVER SIDE:INFLATOR MODULE",
"summary": "Honda is recalling specific Acura and Honda Accord vehicles…",
"consequence": "An explosion of an inflator within the driver frontal air bag module…",
"remedy": "Honda will notify owners, and dealers will replace the driver's air bag inflator…",
"report_received_date": "06/03/2019"
}
],
"complaints": {
"count": 2011,
"top_themes": [
{"theme": "transmission", "mentions": 848},
{"theme": "brake", "mentions": 284},
{"theme": "engine", "mentions": 264}
]
},
"safety_rating": {
"vehicle_id": 4739,
"description": "2003 Honda Accord 2-DR. w/SAB",
"overall": null,
"front_driver": 5,
"front_passenger": 5,
"complaints_count": 2011,
"investigation_count": 5
},
"fuel_economy": {
"mpg_city": 21,
"mpg_highway": 31,
"mpg_combined": 25,
"annual_fuel_cost_usd": 2700,
"co2_g_per_mile": 355.48,
"fuel_type": "Regular Gasoline",
"drive": "Front-Wheel Drive",
"vehicle_class": "Midsize Cars",
"transmission": "Automatic 5-spd"
},
"eu_specs": null,
"sources": ["nhtsa", "nhtsa_recalls", "nhtsa_complaints", "nhtsa_safety", "epa_fuel_economy"],
"errors": [],
"duration_seconds": 1.47
}

The sources array always reflects which layers actually contributed. A European VIN typically returns ["nhtsa", "autoref_eu"] with a 20-field eu_specs block populated; an unknown VIN falls through to ["wmi"] with make and country from the local table.

Use cases

Used-car marketplace listings. When a seller submits a VIN, decode it server-side to auto-fill year, make, model, trim, body class, engine, and drive type — so the buyer sees a complete spec card before clicking through. Pull recall data into a "safety" tab and complaint themes into a "known issues" callout. A free vin lookup integrated this way cuts your listing-creation drop-off by removing every "what year is this?" round trip.

Fleet management software. Decode a fleet's VIN list once per quarter to surface every active NHTSA recall that applies to a managed vehicle. Pair the recall campaign number with the report-received date to prioritize fleet maintenance windows. The NHTSA recall lookup is the same data field service techs use, just delivered as a structured API call instead of a CSV download.

Insurance and warranty quoting. The specs block returns engine cylinders, displacement, horsepower, and GVWR class — every variable the underwriting model needs. The fuel-economy block returns combined MPG and CO2 g/mile, which slot directly into a green-vehicle discount lookup. For EU-market vehicles, the autoref.eu eu_specs block returns the exact NEDC/WLTP CO2 value and EU energy efficiency class an insurer needs for European homologation rules.

Automotive content sites. Pre-render a VIN-anchored landing page per popular VIN family — the recalls, complaints, and NCAP star ratings are exactly what a buyer Googles when researching "is the 2003 Honda Accord reliable?" The output covers the same data points a paid VIN history report would, minus the title/lien layer, at a fraction of the per-call cost. Pair the European VIN decoder branch with a Swiss/EU spec page anchored on power_din_hp, co2_nedc_g_km, and tire_sizes.

How it compares

SourceCoverageWhat it returnsAuth needed
NHTSA vPIC directUS-market 1981+~130 raw fields, no recalls or NCAP correlationNone
Paid VIN history reportsUS + some EUTitle, lien, accidents, specs, recalls — bundledAPI key + per-call charge
carapi.app free tierAll VINsYear/make/model only; trim+model redacted outside 2015-2020None
This actorUS 1981+ AND EU homologatedSpecs + recalls + complaints + NCAP + EPA MPG + EU specsNone

Compared to hitting NHTSA vPIC directly, you save the work of curating ~130 fields down to a useful ~18-field specs block, plus you get the recalls/complaints/NCAP/EPA correlation NHTSA doesn't bundle. Compared to a paid VIN history report, you skip the title/lien layer (still need a paid service for that) but pay nothing per call for the spec, safety, and emissions data.

Pricing

Pay-per-event — one charge per VIN successfully decoded. No actor-start fee, no per-compute-unit charges; you only pay for results you receive. A decode that returns a populated dataset item (even one with all enrichers empty — the local WMI floor still answers) counts as one event. A run that fails validation before any network calls (bad VIN format) charges nothing.

Limits and gotchas

  • Synthetic test VINs match poorly against autoref.eu. The Swiss type-approval database indexes on the first 10 characters of a VIN, which includes the check digit at position 9. Real-user VINs (from actual registrations) have valid check digits and resolve cleanly; synthetic VINs (WAUZZZ8T8C… with arbitrary check digits) match a much smaller set of records or none at all.
  • EPA fuel economy uses fuzzy model matching. NHTSA returns F-150; EPA expects F150 Pickup 2WD. The actor handles the most common normalization (dash strip, prefix match) automatically, but unusual trims (Model S AWD - 60D) may not resolve.
  • NCAP "Overall" rating is null for older cars. NHTSA introduced the composite Overall rating in 2010. Pre-2010 vehicles return null for overall but populate the front/side/rollover sub-ratings.
  • Recalls are matched by year/make/model, not by VIN range. A recall campaign covering "2003-2007 Honda Accord" will appear on a 2003 Accord even if the specific VIN's serial number falls outside the campaign's actual scope. Use the campaign number to dig deeper at the NHTSA recall site.
  • Non-EU, non-US VINs may return only make + country. Brazilian-domestic, Argentine, and some Asian-domestic VINs aren't in NHTSA vPIC and aren't in autoref.eu. The local WMI table still resolves the manufacturer.
  • Cold runs take 1.5-3 seconds. All five enrichers run in parallel via asyncio.gather; the slowest single hop is usually EPA fueleconomy.gov (~0.6s) or autoref.eu (~0.8s). NHTSA vPIC is consistently 0.2-0.4s.
  • 30-year cycle ambiguity surfaces in year_alt. VIN position 10 wraps every 30 years (A = 1980 or 2010 or 2040). When NHTSA picked a different cycle than the local fallback, year_alt carries the alternative so you can disambiguate from other signals.

FAQ

Can I decode a VIN without an API key? Yes. This actor calls only free public endpoints (NHTSA vPIC, NHTSA recalls/complaints/SafetyRatings, EPA fueleconomy.gov, carapi.app, autoref.eu). No keys, no quotas, no captchas. You just need the 17-character VIN.

Does this work as a European VIN decoder? Yes. For Swiss/EU-registered vehicles, the actor pulls from autoref.eu (Switzerland's federal type-approval database) and returns 20+ EU-specific fields including DIN horsepower, kW, NEDC/WLTP CO2, EU energy efficiency class, and exact dimensions in millimetres. Real production VINs perform much better than synthetic test VINs — the autoref.eu match relies on the first 10 characters including a valid check digit.

How is this different from a paid VIN history report? Paid VIN history bundles spec, recall, title, lien, and accident data into a per-call charge of several dollars. This actor returns spec, recall, owner complaint, NCAP safety, EPA fuel economy, and EU homologation data — but not title, lien, or accident history. If you only need to decode and enrich a VIN (not check ownership records), this is significantly cheaper.

What's a NHTSA VIN decoder API and why does this beat hitting it directly? NHTSA vPIC is the US National Highway Traffic Safety Administration's public VIN decode endpoint. It returns ~130 raw fields per VIN but no recall, complaint, or NCAP correlation — those are separate NHTSA APIs (recalls, complaints, SafetyRatings) and the EPA's fueleconomy.gov is a fourth one. This actor stitches all of them together in a single response and curates the spec fields you actually want.

What happens when I submit a malformed VIN? The VIN must match ^[A-HJ-NPR-Z0-9]{17}$ — exactly 17 characters, only digits and A-Z, never I/O/Q. Anything else is rejected as bad_input before any network calls run, so a bad VIN never burns latency or counts as a billable event.