NHTSA VIN Decoder & Vehicle Specs Scraper
Decode any vehicle VIN into full specifications using the official US NHTSA vPIC database. Get make, model, year, trim, body class, engine, cylinders, horsepower, fuel type and plant. Export to JSON, CSV or Excel.
{ "vin": "1HGCR2F3XFA027534", "make": "HONDA", "makeId": 474, "model": "Accord", "modelId": 1861, "modelYear": "2015", "trim": "LX", "bodyClass": "Sedan/Saloon", "vehicleType": "PASSENGER CAR" }
Every run returns clean, typed records, ready for your CRM, spreadsheet or database.
- One clean record per result, deduped and normalized
- Stable schema in JSON, CSV or Excel, or read it via the Apify API
- Pay per use in the cloud, nothing to install or maintain
A real example record, exactly the shape you receive.
| Vin | Make | Make Id | Model |
|---|---|---|---|
| 1HGCR2F3XFA027534 | HONDA | 474 | Accord |
| 5YJ3E1EA7KF317634 | TESLA | 441 | Model 3 |
{ "vin": "1HGCR2F3XFA027534", "make": "HONDA", "makeId": 474, "model": "Accord", "modelId": 1861, "modelYear": "2015", "trim": "LX", "bodyClass": "Sedan/Saloon", "vehicleType": "PASSENGER CAR" }
Frequently asked questions
What kind of VIN can I decode?
Full 17-character VINs return the most complete specifications. Partial VINs also work if you replace the unknown characters with an asterisk, for example 5UXWX7C5*BA, which is useful when you only have the standardized part of the VIN.
Does it work for older vehicles?
Yes. The vPIC database covers vehicles across many model years, and the model year is derived from the VIN itself. For partial or wildcard VINs where the year cannot be read from the VIN, you can supply a Model Year hint to improve accuracy.
Why do different vehicles return a different set of fields?
The actor only includes fields the database actually has data for on each specific vehicle. A simple sedan and a fully optioned SUV will not carry the same fields, so empty values are dropped instead of filling your output with blank columns.
Can I decode many VINs in one run?
Yes. Paste your full list of VINs, one per line, and the actor decodes each one and returns a single dataset. Use Max Items to cap how many are processed if you only need a sample.
How do I know a VIN decoded correctly?
Every record carries errorCode and errorText. A code of 0 means the VIN decoded clean. Other codes flag issues such as an incomplete VIN or characters the manufacturer did not submit, so you can filter on them.
Ready when you are.
Run the scraper live on Apify right now, or have us build one tailored to exactly what you need.