NHTSA VIN Decoder & Vehicle Specs Scraper
Pricing
from $6.15 / 1,000 results
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.
Pricing
from $6.15 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
Share
NHTSA VIN Decoder & Vehicle Specs Scraper
Here is one real result (the recalls array holds 24 real campaigns for this VIN; it is trimmed to 2 entries here, every value kept unchanged):
{"vin": "1HGCM82633A004352","make": "HONDA","makeId": 474,"model": "Accord","modelId": 1861,"modelYear": "2003","trim": "EX-V6","bodyClass": "Coupe","vehicleType": "PASSENGER CAR","doors": 2,"engineCylinders": 6,"displacementL": 2.998832712,"displacementCC": 2998.832712,"displacementCI": 183,"engineConfiguration": "V-Shaped","engineHP": 240,"engineModel": "J30A4","valveTrainDesign": "Single Overhead Cam (SOHC)","fuelTypePrimary": "Gasoline","transmissionStyle": "Automatic","transmissionSpeeds": "5","gvwr": "Class 1C: 4,001 - 5,000 lb (1,814 - 2,268 kg)","gvwrTo": "Class 1: 6,000 lb or less (2,722 kg or less)","seatBeltsAll": "Manual","airBagLocFront": "1st Row (Driver and Passenger)","airBagLocSide": "1st Row (Driver and Passenger)","airBagLocCurtain": "1st and 2nd Rows","otherRestraintSystemInfo": "Seat Belt (Rr center position)","manufacturer": "AMERICAN HONDA MOTOR CO., INC.","manufacturerId": 988,"plantCity": "MARYSVILLE","plantState": "OHIO","plantCountry": "UNITED STATES (USA)","vehicleDescriptor": "1HGCM826*3A","errorCode": "0","errorText": "0 - VIN decoded clean. Check Digit (9th position) is correct","observedAt": "2026-08-10T14:17:18.362Z","error": null,"recalls": [{"campaignNumber": "19V182000","manufacturer": "Honda (American Honda Motor Co.)","component": "AIR BAGS:FRONTAL:DRIVER SIDE:INFLATOR MODULE","summary": "Honda (American Honda Motor Co.) is recalling specific 2003 Acura 3.2CL, 2013-2016 ILX ... and 2001-2007 and 2009 Honda Accord ... vehicles. The affected vehicles received a replacement driver air bag inflator as part of a previous Takata inflator recall remedy ... Due to a manufacturing error, in the event of a crash necessitating deployment of the driver frontal air bag, these inflators may explode.","consequence": "An explosion of an inflator within the driver frontal air bag module may result in sharp metal fragments striking the driver, front seat passenger or other occupants resulting in serious injury or death.","remedy": "Honda will notify owners, and dealers will replace the driver's air bag inflator with an alternate inflator, free of charge. The recall began April 10, 2019. Honda owners may contact customer service at 1-888-234-2138.","reportReceivedDate": "06/03/2019","parkIt": false,"parkOutSide": false,"overTheAirUpdate": false},{"campaignNumber": "04V176000","manufacturer": "HONDA (AMERICAN HONDA MOTOR CO.)","component": "POWER TRAIN:AUTOMATIC TRANSMISSION","summary": "ON SOME MINI VANS, SPORT UTILITY AND PASSENGER VEHICLES, CERTAIN OPERATING CONDITIONS CAN RESULT IN HEAT BUILD-UP BETWEEN THE COUNTERSHAFT AND SECONDARY SHAFT SECOND GEARS IN THE AUTOMATIC TRANSMISSION, EVENTUALLY LEADING TO GEAR TOOTH CHIPPING OR GEAR BREAKAGE.","consequence": "GEAR FAILURE COULD RESULT IN TRANSMISSION LOCKUP, WHICH COULD RESULT IN A CRASH.","remedy": "ON VEHICLES WITH 15,000 MILES OR LESS, THE DEALER WILL UPDATE THE TRANSMISSION WITH A SIMPLE REVISION TO THE OIL COOLER RETURN LINE ... OWNERS SHOULD CONTACT HONDA AT 1-800-999-1009 OR ACURA AT 1-800-382-2238.","reportReceivedDate": "15/04/2004","parkIt": false,"parkOutSide": false,"overTheAirUpdate": false}],"recallCount": 24}
The most complete NHTSA VIN decoder available. It returns every populated field the official NHTSA vPIC database exposes for a VIN, plus a bonus that a plain decoder never gives you: the open NHTSA safety recall campaigns tied to the decoded vehicle.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor decodes each VIN you pass against the official US NHTSA vPIC database and writes one normalized record per VIN to the run's dataset. Each record carries the vehicle's identity (make, model, year, trim, series, body class), dimensions, engine and drivetrain, safety and ADAS equipment, and manufacturing plant, plus the open NHTSA safety recall campaigns for that make, model and year. Only populated fields are included, numeric fields are parsed to numbers, and empty vPIC variables are dropped so the columns stay clean. Full 17-character VINs give the most complete results; partial VINs with an asterisk wildcard also work.
Data comes from the official NHTSA vPIC and recalls APIs. No account, key or login is required.
Quickstart
Open the actor, paste this into the input, and press Run. It decodes two VINs and attaches their open recall campaigns.
{"vins": ["1HGCM82633A004352", "5UXWX7C5*BA"],"maxVins": 10}
Add a modelYear hint to improve accuracy for partial or wildcard VINs where the year cannot be derived from the VIN itself.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
vins | string[] | yes | (see prefill) | Vehicle Identification Numbers to decode, one per line. Full 17-character VINs give the most complete results; partial VINs with an asterisk wildcard (for example 5UXWX7C5*BA) also work. Case-insensitive. |
maxVins | integer | no | (all) | Maximum number of VINs to decode. Leave empty to decode every VIN in the list. Free Apify plans are capped at 10 per run. |
modelYear | integer | no | (none) | Optional model year hint. Improves accuracy for partial or wildcard VINs. Applied to every VIN in the list. |
Output reference
One dataset item per VIN. Fields that vPIC returns empty for a given vehicle are omitted, so records only contain populated fields. Types: string, number, integer, boolean, object[], or null.
| Field | Type | Description |
|---|---|---|
vin | string | The decoded VIN (unique per record). |
make / makeId | string / integer | Vehicle make and its vPIC ID. |
model / modelId | string / integer | Vehicle model and its vPIC ID. |
modelYear | string | Model year. |
trim / trim2 / series / series2 | string | Trim and series designations, when present. |
bodyClass | string | Body class, for example Coupe, Sedan. |
vehicleType | string | Vehicle type, for example PASSENGER CAR. |
basePrice | number | Base price, when present. |
doors / seats / seatRows / axles / wheels | integer | Configuration counts, when present. |
wheelBaseShort / wheelBaseLong / wheelSizeFront / wheelSizeRear / trackWidth / topSpeedMPH | number | Dimensions and capacity, when present. |
engineCylinders | integer | Number of cylinders. |
displacementL / displacementCC / displacementCI | number | Engine displacement in liters, cc and cubic inches. |
engineConfiguration / engineCycles / engineHP / engineKW / engineModel / engineManufacturer | mixed | Engine details, when present. |
coolingType / turbo / valveTrainDesign / otherEngineInfo | string | More engine attributes. |
fuelTypePrimary / fuelTypeSecondary / electrificationLevel | string | Fuel and electrification. |
driveType / transmissionStyle / transmissionSpeeds / steeringLocation | string | Drivetrain and steering. |
gvwr / gvwrTo | string | Gross vehicle weight rating range. |
brakeSystemType / abs / tpms | string | Braking and tire-pressure systems. |
seatBeltsAll / pretensioner / airBagLocFront / airBagLocSide / airBagLocCurtain / airBagLocKnee / otherRestraintSystemInfo | string | Restraint and airbag configuration. |
esc / tractionControl / forwardCollisionWarning / crashImminentBraking / dynamicBrakeSupport / pedestrianAutomaticEmergencyBraking / blindSpotMon / blindSpotIntervention / laneDepartureWarning / laneKeepSystem / laneCenteringAssistance / adaptiveCruiseControl / rearCrossTrafficAlert / rearVisibilitySystem / parkAssist | string | ADAS and active-safety equipment, when present. |
daytimeRunningLight / lowerBeamHeadlampLightSource / semiautoHeadlampBeamSwitching / adaptiveHeadlights / keylessIgnition / eventDataRecorder | string | Lighting and other equipment. |
manufacturer / manufacturerId | string / integer | Manufacturer name and vPIC ID. |
plantCity / plantState / plantCountry / plantCompanyName | string | Manufacturing plant. |
destinationMarket | string | Destination market, when present. |
note / vehicleDescriptor | string | vPIC note and the VIN descriptor pattern. |
errorCode / errorText | string | vPIC decode status; 0 means decoded clean. |
recalls | object[] | Open NHTSA recall campaigns for the vehicle (see below). Present when the recall lookup succeeds. |
recallCount | integer | Number of recall campaigns returned. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. On a failed VIN, a single item with vin and a populated error field is written instead. |
Each recalls entry contains: campaignNumber, manufacturer, component, summary, consequence, remedy, reportReceivedDate, parkIt, parkOutSide, overTheAirUpdate.
Example output record
Real record from a live run (input {"vins":["1HGCM82633A004352"],"maxVins":10}). See the hero record above for the full field set and recall entries.
{"vin": "1HGCM82633A004352","make": "HONDA","model": "Accord","modelYear": "2003","trim": "EX-V6","bodyClass": "Coupe","vehicleType": "PASSENGER CAR","engineCylinders": 6,"displacementL": 2.998832712,"engineHP": 240,"fuelTypePrimary": "Gasoline","transmissionStyle": "Automatic","plantCity": "MARYSVILLE","plantCountry": "UNITED STATES (USA)","errorCode": "0","errorText": "0 - VIN decoded clean. Check Digit (9th position) is correct","recallCount": 24,"observedAt": "2026-08-10T14:17:18.362Z","error": null}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~nhtsa-vin-decoder-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"vins":["1HGCM82633A004352","5UXWX7C5*BA"],"maxVins":25}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~nhtsa-vin-decoder-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"vins":["5UXWX7C5*BA"],"modelYear":2011}'
Apify CLI:
apify call scrapers_lat/nhtsa-vin-decoder-scraper \--input '{"vins":["1HGCM82633A004352"]}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per VIN record returned (
resultevent). See the pricing tab for the current per-result price. - No charge on failure. If a VIN cannot be decoded, the actor writes a single item with the
vinand a populatederrorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run. Upgrade for higher
maxVins.
FAQ and troubleshooting
Do I get vehicle specs and recalls in one record?
Yes. Each decoded VIN includes the full vPIC specification fields plus the open NHTSA safety recall campaigns for that make, model and year, with recallCount.
Can I decode a partial VIN?
Yes. Use an asterisk wildcard, for example 5UXWX7C5*BA. Add a modelYear hint to improve accuracy where the year cannot be derived from the VIN.
Why do some fields not appear? vPIC returns many variables empty for a given vehicle. The actor drops empty fields, so a record only contains populated data. Nothing is invented.
What does errorCode 0 mean?
The VIN decoded clean and the check digit is correct. Non-zero codes are passed through in errorCode and errorText.
Is this an official NHTSA tool? No. This actor is independent and has no affiliation with NHTSA. It reads only the public NHTSA vPIC and recalls APIs. Use the results in accordance with the source's terms.
Related scrapers
- FAA Aircraft Registry Scraper: US aircraft registration records.
- NHTSA Recalls Scraper: US vehicle safety recall campaigns.
- Copart Scraper: Salvage vehicle auction lots.
- FMCSA Motor Carrier Scraper: US motor carrier and trucking records.
- CPSC Recalls Scraper: US consumer product recalls.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with NHTSA. Accesses only the public NHTSA vPIC and recalls data. Use the results in accordance with the source's terms.
