NHTSA VIN Decoder — Make, Model & Safety Specs API
Pricing
from $2.40 / 1,000 successful lookups
NHTSA VIN Decoder — Make, Model & Safety Specs API
Decode any Vehicle Identification Number (VIN) against NHTSA's official vPIC database: make, model, year, engine, drivetrain, and airbag/safety systems. No API key needed. Charged only for VINs that decode cleanly - no charge on invalid or unrecognized VINs.
Pricing
from $2.40 / 1,000 successful lookups
Rating
0.0
(0)
Developer
Adrian Voss
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
NHTSA VIN Decoder
Decode any 17-character Vehicle Identification Number (VIN) against the U.S. National Highway Traffic Safety Administration's official vPIC decoder — make, model, year, body class, engine, drivetrain, fuel type, transmission, plant country, and airbag locations. No API key, no scraping — this hits NHTSA's own free, public government API directly.
Features
- VIN → full vehicle spec. Make, model, model year, manufacturer, vehicle type, and body class in one call.
- Engine & drivetrain detail. Cylinder count, horsepower, fuel type, transmission style, drive type, and the plant country of manufacture.
- Safety systems. Front/side/curtain airbag locations and ABS presence.
- Pay only for hits. VINs that don't decode cleanly cost nothing — see Pricing.
- Built for bulk. Feed in thousands of VINs; concurrency and proxy behavior are both configurable.
How to use NHTSA VIN Decoder — Make, Model & Safety Specs API
- In the Apify Console. Open the actor page and click Start — the
itemsfield is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found. - Via the API. Call it directly with a POST request — no Console needed once you have an API token:
curl "https://api.apify.com/v2/acts/accountable_eel~nhtsa-vin-decoder/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-X POST \-H "Content-Type: application/json" \-d '{"items":["1HGCM82633A004352"]}'
- On a schedule. Save this actor as an Apify Task with the input you want, then add a Schedule (hourly, daily, weekly) so it runs on its own — no server of your own required.
Input
{"items": ["1HGCM82633A004352", "5YJ3E1EA7KF317000"],"maxConcurrency": 5}
items is a list of 17-character VINs. One dataset row comes back per item. maxConcurrency
(default 5, max 20) caps how many VINs are decoded in parallel; this target has no browser
fallback, so a conservative value avoids rate-limit trouble on large batches.
proxyConfiguration lets you route through Apify Proxy (residential recommended) if needed.
Output
One row per VIN, for example:
{"query": "1HGCM82633A004352","found": true,"data": {"vin": "1HGCM82633A004352","make": "HONDA","model": "Accord","modelYear": "2003","manufacturer": "HONDA MOTOR CO., LTD","vehicleType": "PASSENGER CAR","bodyClass": "Sedan/Saloon","driveType": "FWD","engineCylinders": "6","engineHP": "240","fuelType": "Gasoline","transmissionStyle": "Automatic","plantCountry": "UNITED STATES (USA)","airbagLocations": { "front": "1st Row (Driver & Passenger)", "side": "1st Row (Driver & Passenger)", "curtain": "All Rows" },"abs": "Standard","errorText": null},"scrapedAt": "2026-08-20T12:00:00.000Z"}
A malformed, incomplete, or unrecognized VIN comes back as "found": false with no data —
these rows are never charged.
Use cases
- Vehicle listing enrichment. Auto-populate make/model/year/trim fields on marketplace or dealership listings from a bare VIN.
- Fleet management. Bulk-decode a fleet's VIN list to audit engine specs, drivetrain, and manufacturing origin.
- Insurance & claims. Verify vehicle identity and specs against a submitted VIN.
- Data cleaning. Backfill missing vehicle attributes in a dataset that only has VINs.
- Recall & compliance research. Confirm plant country and body class before cross-checking against recall databases.
Pricing
$4 per 1,000 results, plus a $0.005 start fee. Misses (found:false) are never charged.
Use it from Clay, n8n, Make, or an AI agent
This actor runs synchronously over plain HTTP — call it directly from a script, a workflow tool, or an AI agent, no Apify Console needed once you have an API token.
curl "https://api.apify.com/v2/acts/accountable_eel~nhtsa-vin-decoder/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-X POST \-H "Content-Type: application/json" \-d '{"items":["1HGCM82633A004352"]}'
n8n. Add an HTTP Request node: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~nhtsa-vin-decoder/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body Content Type JSON, JSON Body {"items":["1HGCM82633A004352"]} (swap in an expression from an earlier node for a real value).
Clay. Add an "HTTP API" column: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~nhtsa-vin-decoder/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body {"items":["{{value}}"]}, mapping the row's value into the items array.
MCP. In Claude, Cursor, or any MCP client with the Apify MCP server, ask for "NHTSA VIN Decoder | Apify" — the agent will find and run this actor.
FAQ
What counts as "not found"? NHTSA's vPIC API always returns HTTP 200, even for an invalid
VIN — there's no clean 404. This actor treats a VIN as not found when the API's own ErrorCode
isn't "0" (a clean decode) or when Make comes back empty, since NHTSA can occasionally
report a nonzero-but-informational code alongside a real decode.
Does the VIN need to be a specific length? The actor doesn't validate length itself — it passes whatever you give it straight to NHTSA and lets the API's own error reporting flag a malformed or too-short VIN as not found.
Is this data official? Yes — it comes directly from NHTSA's public vPIC decoder, the same system manufacturers report vehicle specs to.
Does this cover vehicles sold outside the US? Coverage depends on what's registered in NHTSA's vPIC database, which is strongest for VINs assigned under the North American VIN standard; import/grey-market vehicles may decode with partial or missing fields.
How fresh is the data? Live — every run queries NHTSA's API directly, not a cached snapshot.
What proxy should I use? Apify Proxy is enabled by default; NHTSA's public API is generally permissive, but residential proxies are available if you see blocks on large runs.