NHTSA VIN Decoder API — Batch vPIC VIN Lookup avatar

NHTSA VIN Decoder API — Batch vPIC VIN Lookup

Pricing

from $2.75 / 1,000 results

Go to Apify Store
NHTSA VIN Decoder API — Batch vPIC VIN Lookup

NHTSA VIN Decoder API — Batch vPIC VIN Lookup

Batch-decode VINs via NHTSA vPIC into compact, normalized rows: make, model, year, body class, drivetrain, engine, GVWR, and plant country. One clean row per VIN. Built for fleet, auto-insurance underwriting, and used-car marketplace enrichment. Keyless government data.

Pricing

from $2.75 / 1,000 results

Rating

0.0

(0)

Developer

Kyle Maloney

Kyle Maloney

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

15 hours ago

Last modified

Share

Decode a batch of VINs into clean, normalized rows using the official NHTSA vPIC database (keyless, free, US government source). This actor takes the raw ~130-field vPIC response, keeps only the high-value fields, drops the ~100 empty ones, and returns one tidy row per VIN — ready to join straight into your fleet, underwriting, or marketplace pipeline.

VIN decoder API for bulk vehicle lookups — make, model, year, body class, drivetrain, engine, GVWR, and plant, normalized and batchable.

Who it's for

  • Fleet & telematics teams — enrich vehicle rosters with make/model/year/body/engine from just the VIN.
  • Auto insurers & underwriting — pull standardized vehicle attributes for rating and risk enrichment.
  • Used-car marketplaces & dealership tools — auto-fill listing specs from a VIN at scale.
  • Warranty & lending providers — verify vehicle class, drivetrain, and weight rating before issuing coverage.
  • Data teams — a compact, stable-schema VIN feed you can decode thousands at a time.

What it does

  • Accepts an array of VINs (plain strings or { vin, modelYear } objects; a * can stand in for the check digit / unknown positions).
  • Decodes each VIN via the NHTSA vPIC decodevinvalues GET endpoint (optional extended mode for extra variables).
  • Normalizes to snake_case fields and drops every empty field vPIC returns, so rows stay compact.
  • Adds a decode_valid boolean derived from vPIC's ErrorCode ("0" = fully clean decode).

Example input

{
"vins": ["5UXWX7C5*BA", "1HGBH41JXMN109186", { "vin": "1FTFW1ET5DFC10312", "modelYear": 2013 }],
"extended": false
}

Output fields (one row per VIN)

fielddescription
vinThe VIN that was decoded
makeVehicle make / brand
modelVehicle model
model_yearModel year
manufacturerManufacturing company
vehicle_typeNHTSA vehicle type
body_classBody class / style
seriesSeries (when present)
trimTrim level
drive_typeDrivetrain (FWD/RWD/AWD/4WD)
engine_cylindersCylinder count
displacement_lEngine displacement (liters)
fuel_type_primaryPrimary fuel type
doorsNumber of doors
gvwrGross Vehicle Weight Rating class
plant_countryAssembly plant country
plant_stateAssembly plant state (when present)
error_codevPIC ErrorCode (0 = clean)
error_textHuman-readable vPIC status
decode_validtrue only when ErrorCode is 0

Empty vPIC fields are omitted per row, so partial decodes (e.g. very old VINs) return just the fields NHTSA actually has.

Use as an MCP tool

This actor is callable by AI agents (Claude, Cursor, etc.) via mcp.apify.com. Its clean field-level output descriptions make it a good chainable VIN enrichment tool: pass an agent a list of VINs and get back structured vehicle specs to feed the next step.

FAQ

Is this a free VIN decoder? It runs on NHTSA vPIC, which is free and keyless. You pay only Apify's per-result usage for the convenience of batch decoding + normalization.

Can I decode VINs in bulk? Yes — pass an array of VINs; the actor loops the reliable per-VIN GET decode and emits one row each. Use maxVins to cap a run.

What about incomplete or old VINs? vPIC still returns what it knows plus an ErrorCode. decode_valid is true only for a clean ErrorCode 0; otherwise inspect error_code / error_text.

Can I get extra fields (battery, safety, etc.)? Set extended: true to use vPIC's extended endpoint. This actor keeps a curated high-value subset by default for a compact schema.

How do I disambiguate older VINs? Provide the model year with { "vin": "...", "modelYear": 2013 }.


Data source: U.S. NHTSA vPIC (vpic.nhtsa.dot.gov). Not affiliated with or endorsed by NHTSA.