NHTSA VIN Decoder & Vehicle Specs Scraper avatar

NHTSA VIN Decoder & Vehicle Specs Scraper

Pricing

from $6.15 / 1,000 results

Go to Apify Store
NHTSA VIN Decoder & Vehicle Specs Scraper

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

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

Share

NHTSA VIN Decoder & Vehicle Specs Scraper

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

Apify Coverage Output Billing

Table of contents

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

FieldTypeRequiredDefaultDescription
vinsstring[]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.
maxVinsintegerno(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.
modelYearintegerno(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.

FieldTypeDescription
vinstringThe decoded VIN (unique per record).
make / makeIdstring / integerVehicle make and its vPIC ID.
model / modelIdstring / integerVehicle model and its vPIC ID.
modelYearstringModel year.
trim / trim2 / series / series2stringTrim and series designations, when present.
bodyClassstringBody class, for example Coupe, Sedan.
vehicleTypestringVehicle type, for example PASSENGER CAR.
basePricenumberBase price, when present.
doors / seats / seatRows / axles / wheelsintegerConfiguration counts, when present.
wheelBaseShort / wheelBaseLong / wheelSizeFront / wheelSizeRear / trackWidth / topSpeedMPHnumberDimensions and capacity, when present.
engineCylindersintegerNumber of cylinders.
displacementL / displacementCC / displacementCInumberEngine displacement in liters, cc and cubic inches.
engineConfiguration / engineCycles / engineHP / engineKW / engineModel / engineManufacturermixedEngine details, when present.
coolingType / turbo / valveTrainDesign / otherEngineInfostringMore engine attributes.
fuelTypePrimary / fuelTypeSecondary / electrificationLevelstringFuel and electrification.
driveType / transmissionStyle / transmissionSpeeds / steeringLocationstringDrivetrain and steering.
gvwr / gvwrTostringGross vehicle weight rating range.
brakeSystemType / abs / tpmsstringBraking and tire-pressure systems.
seatBeltsAll / pretensioner / airBagLocFront / airBagLocSide / airBagLocCurtain / airBagLocKnee / otherRestraintSystemInfostringRestraint and airbag configuration.
esc / tractionControl / forwardCollisionWarning / crashImminentBraking / dynamicBrakeSupport / pedestrianAutomaticEmergencyBraking / blindSpotMon / blindSpotIntervention / laneDepartureWarning / laneKeepSystem / laneCenteringAssistance / adaptiveCruiseControl / rearCrossTrafficAlert / rearVisibilitySystem / parkAssiststringADAS and active-safety equipment, when present.
daytimeRunningLight / lowerBeamHeadlampLightSource / semiautoHeadlampBeamSwitching / adaptiveHeadlights / keylessIgnition / eventDataRecorderstringLighting and other equipment.
manufacturer / manufacturerIdstring / integerManufacturer name and vPIC ID.
plantCity / plantState / plantCountry / plantCompanyNamestringManufacturing plant.
destinationMarketstringDestination market, when present.
note / vehicleDescriptorstringvPIC note and the VIN descriptor pattern.
errorCode / errorTextstringvPIC decode status; 0 means decoded clean.
recallsobject[]Open NHTSA recall campaigns for the vehicle (see below). Present when the recall lookup succeeds.
recallCountintegerNumber of recall campaigns returned.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull 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:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "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 (result event). 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 vin and a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on 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.

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.