NHTSA VIN Decoder Scraper - Car Specs, Recalls & Ratings avatar

NHTSA VIN Decoder Scraper - Car Specs, Recalls & Ratings

Pricing

from $6.15 / 1,000 results

Go to Apify Store
NHTSA VIN Decoder Scraper - Car Specs, Recalls & Ratings

NHTSA VIN Decoder Scraper - Car Specs, Recalls & Ratings

Decode any VIN into 150+ vehicle specs from the official NHTSA vPIC database: make, model, year, engine, safety and ADAS. Bulk VIN lookup, no API key. Paid add-ons: open recalls, NCAP crash-test ratings, complaints and EPA fuel economy. Export 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

4 days ago

Last modified

Share

NHTSA VIN Decoder Scraper - Car Specs, Recalls & Ratings

NHTSA VIN Decoder Scraper - Car Specs, Recalls & Ratings

Decode any VIN into full vehicle specifications from the official US NHTSA vPIC database, in bulk, with no API key and no login. This VIN decoder returns 150+ specification fields per vehicle: make, model, year, trim, body class, engine, horsepower, fuel type, drivetrain, EV battery, weight ratings, airbags and the full set of ADAS and active-safety equipment. Optional paid add-ons attach open safety recalls, NCAP crash-test ratings, consumer-complaint summaries and EPA fuel economy (MPG) to each decoded VIN.

Here is one real decoded record (base result, engine and safety fields trimmed for space):

{
"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,
"displacementCI": 183,
"engineConfiguration": "V-Shaped",
"engineHP": 240,
"engineModel": "J30A4",
"valveTrainDesign": "Single Overhead Cam (SOHC)",
"fuelTypePrimary": "Gasoline",
"transmissionStyle": "Automatic",
"transmissionSpeeds": "5",
"driveType": "FWD/Front-Wheel Drive",
"gvwr": "Class 1C: 4,001 - 5,000 lb (1,814 - 2,268 kg)",
"seatBeltsAll": "Manual",
"airBagLocFront": "1st Row (Driver and Passenger)",
"airBagLocSide": "1st Row (Driver and Passenger)",
"airBagLocCurtain": "1st and 2nd Rows",
"manufacturer": "AMERICAN HONDA MOTOR CO., INC.",
"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-09-04T14:17:18.362Z",
"error": null
}

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

Give the actor a list of VINs and it decodes each one against the official NHTSA vPIC database, writing one normalized record per VIN to the run dataset. Every populated vPIC variable is surfaced: vehicle identity (make, model, year, trim, series, body class), dimensions and capacity, engine and drivetrain, EV battery and charging, weight ratings and brakes, restraints and airbags, the full ADAS and active-safety suite, lighting, truck/trailer/bus/motorcycle body data, and the manufacturing plant. 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, NHTSA recalls, NHTSA complaints, NHTSA NCAP safety-ratings and EPA fuel-economy APIs. No account, key or login is required.

This is a car specs by VIN lookup for automotive marketplaces, dealers, insurers, fleet and lienholder audits, and any app that needs to turn a VIN into structured vehicle data.

Why this VIN decoder

CapabilityThis actorTypical VIN decoder actor
Bulk decode a list of VINs in one runYesSome accept only one VIN per run
Full vPIC coverage (150+ fields surfaced)YesOften a curated ~30 field subset
EV battery, charging, weight and SAE automation fieldsYesRarely
Model-year hint for partial / wildcard VINsYesSometimes
Open NHTSA safety recalls per vehicleYes (add-on)Sometimes
NCAP 5-Star crash-test ratings + crash-test photos/videosYes (add-on)Rarely
Consumer-complaint summary (crashes, fires, injuries, deaths)Yes (add-on)Rarely
EPA fuel economy (city/highway/combined MPG, CO2, cost)Yes (add-on)Sometimes
No API key, no loginYesVaries
Export JSON, CSV, Excel, XMLYesVaries

We accept every input a plain VIN decoder accepts (a VIN or a list of VINs, an optional model year, and an item cap) and return every field they return, plus the extra coverage and safety add-ons above.

Quickstart

Open the actor, paste this into the input, and press Run. It decodes two VINs.

{
"vins": ["1HGCM82633A004352", "5UXWX7C5*BA"],
"maxVins": 10
}

To attach safety recalls, crash-test ratings, complaints and fuel economy to each vehicle, enable the paid add-ons (requires a paid Apify plan):

{
"vins": ["1HGCM82633A004352"],
"includeRecalls": true,
"includeSafetyRatings": true,
"includeComplaints": true,
"includeFuelEconomy": true
}

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.
includeRecallsbooleannofalsePaid add-on. Attach open NHTSA safety recall campaigns to each vehicle.
includeSafetyRatingsbooleannofalsePaid add-on. Attach NHTSA NCAP 5-Star crash-test ratings, with crash-test photo and video URLs.
includeComplaintsbooleannofalsePaid add-on. Attach an aggregate of NHTSA consumer complaints for the vehicle.
includeFuelEconomybooleannofalsePaid add-on. Attach EPA fuel-economy figures (MPG, CO2, annual fuel cost, greenhouse-gas score).

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, 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.
bodyClass / bodyCabType / vehicleTypestringBody class, cab type and vehicle type.
basePricenumberManufacturer base price, when present.
doors / windows / seats / seatRows / axles / wheelsintegerConfiguration counts, when present.
wheelBaseShort / wheelBaseLong / wheelSizeFront / wheelSizeRear / trackWidth / curbWeightLB / topSpeedMPHnumberDimensions, weight and capacity.
engineCylinders / displacementL / displacementCC / displacementCInumberEngine size in cylinders, liters, cc and cubic inches.
engineConfiguration / engineCycles / engineHP / engineHPTo / engineKW / engineModel / engineManufacturermixedEngine details, when present.
coolingType / turbo / valveTrainDesign / fuelInjectionType / otherEngineInfostringMore engine attributes.
fuelTypePrimary / fuelTypeSecondary / fuelTankType / fuelTankMaterial / electrificationLevelstringFuel and electrification.
evDriveUnit / batteryType / batteryInfo / batteryKWh / batteryV / batteryA / batteryCells / chargerLevel / chargerPowerKWmixedEV drive, battery and charging (electric and hybrid vehicles).
driveType / transmissionStyle / transmissionSpeeds / steeringLocationstringDrivetrain and steering.
gvwr / gvwrTo / gcwr / gcwrTostringGross vehicle and combined weight rating ranges.
brakeSystemType / brakeSystemDesc / combinedBrakingSystem / abs / tpmsstringBraking and tire-pressure systems.
seatBeltsAll / pretensioner / airBagLocFront / airBagLocSide / airBagLocCurtain / airBagLocKnee / airBagLocSeatCushion / otherRestraintSystemInfostringRestraint and airbag configuration.
esc / tractionControl / forwardCollisionWarning / crashImminentBraking / dynamicBrakeSupport / pedestrianAutomaticEmergencyBraking / rearAutomaticEmergencyBraking / blindSpotMon / blindSpotIntervention / laneDepartureWarning / laneKeepSystem / laneCenteringAssistance / adaptiveCruiseControl / rearCrossTrafficAlert / rearVisibilitySystem / parkAssist / automaticCrashNotification / driverAssist / saeAutomationLevelstringADAS and active-safety equipment, when present.
daytimeRunningLight / lowerBeamHeadlampLightSource / semiautoHeadlampBeamSwitching / adaptiveHeadlights / adaptiveDrivingBeam / keylessIgnition / eventDataRecorder / entertainmentSystemstringLighting and other equipment.
bedType / bedLengthIN / trailerType / trailerBodyType / trailerLength / busType / busLength / customMotorcycleType / motorcycleChassisTypemixedTruck, trailer, bus and motorcycle body data, when applicable.
manufacturer / manufacturerIdstring / integerManufacturer name and vPIC ID.
plantCity / plantState / plantCountry / plantCompanyNamestringManufacturing plant.
destinationMarketstringDestination market, when present.
note / vehicleDescriptor / suggestedVINstringvPIC note, VIN descriptor pattern, and a suggested corrected VIN when the input has an error.
errorCode / errorText / additionalErrorTextstringvPIC decode status; 0 means decoded clean.
recalls / recallCountobject[] / integerOpen recall campaigns (paid add-on). See below.
safetyRatingsobject[]NCAP crash-test ratings (paid add-on). See below.
complaintsSummaryobjectConsumer-complaint aggregate (paid add-on). See below.
fuelEconomy / fuelEconomyOptionsobject / object[]EPA fuel economy (paid add-on). See below.
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 and is not charged.

Add-ons are opt-in, off by default, and available on paid Apify plans. Each enriched VIN is billed one details event on top of its result. All add-on data comes from official NHTSA and EPA APIs and is looked up by make, model and model year, so a full 17-character VIN or a modelYear hint gives the best match. Add-ons are cached per make/model/year, so decoding many identical vehicles does not multiply the lookups.

  • recalls (includeRecalls): array of open recall campaigns, each with campaignNumber, manufacturer, component, summary, consequence, remedy, notes, reportReceivedDate, and the parkIt / parkOutSide / overTheAirUpdate flags. recallCount gives the total.
  • safetyRatings (includeSafetyRatings): array of NCAP crash-tested variants, each with overallRating, overallFrontCrashRating, overallSideCrashRating, rolloverRating, per-position front and side ratings, rolloverPossibility, and frontCrashPicture / frontCrashVideo / sideCrashPicture / sideCrashVideo URLs.
  • complaintsSummary (includeComplaints): total, crashCount, fireCount, totalInjuries, totalDeaths, topComponents (top reported components with counts), and the earliest / latest complaint dates.
  • fuelEconomy (includeFuelEconomy): EPA figures with cityMPG, highwayMPG, combinedMPG, annualFuelCostUSD, co2GramsPerMile, greenhouseGasScore, fuelType, transmission, drive and vehicleClass. When more than one EPA configuration matches the vehicle, all matches are returned as fuelEconomyOptions so nothing is guessed.

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.
  • Paid add-ons. Each VIN enriched with recalls, ratings, complaints or fuel economy is billed one details event on top of the result, and only when real enrichment data is delivered. Add-ons are off by default and available on paid Apify plans.
  • 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 and add-ons.
  • Free Apify plans are capped at 10 records per run and cannot use the paid add-ons. Upgrade for higher maxVins and add-ons.

FAQ and troubleshooting

Is this a free VIN decoder? Decoding VINs into vehicle specs is the core, low-cost result output. Recalls, crash-test ratings, complaints and fuel economy are optional paid add-ons. No API key or login is needed either way.

Do I need an API key? No. The actor reads the public NHTSA vPIC, recalls, complaints and NCAP APIs and the EPA fuel-economy API directly. There is nothing to sign up for.

Can I decode a list of VINs in bulk? Yes. Pass an array in vins and the actor decodes them all, one clean record per VIN, exportable to JSON, CSV, Excel or XML.

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.

How do I get recalls by VIN? Set includeRecalls to true on a paid plan. Each decoded vehicle gets its open NHTSA recall campaigns attached, with recallCount.

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, and a suggestedVIN may be provided.

Is this an official NHTSA tool? No. This actor is independent and has no affiliation with NHTSA or the EPA. It reads only public NHTSA and EPA data. Use the results in accordance with the sources' 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 or the EPA. Accesses only public NHTSA and EPA data. Use the results in accordance with the sources' terms.