SFOLN

Catalogue / Data utilities

VIN Decoder API – Specs, Recalls & Safety

sfoln/vin-decoder · Developer tools, Automation, Ecommerce

Decode VINs in bulk: make, model, year, trim, body, engine, fuel, drive, transmission and plant from official NHTSA data. Optional safety report per vehicle: recalls for its model year, complaint statistics, NCAP crash-test stars. $1 per 1,000 decoded VINs; safety report $2 per 1,000.

About

What it does

Decode one VIN or tens of thousands in a single run and get a clean, normalized vehicle record per VIN: make, model, model year, trim, body class, vehicle type, engine (cylinders, displacement, HP), fuel type, drive type, transmission and assembly plant. Data comes from the official NHTSA vPIC database (US government public data), queried in batches of 50 VINs. Turn on the optional vehicle safety report to add, per vehicle, the NHTSA recalls issued for its model year, complaint statistics by component, NCAP crash-test stars and the number of defect investigations. Built for dealer and fleet tools, insurance and lending workflows, marketplaces and AI agents that need a quick, structured answer.

Price

Price per delivered record

EventPricePer 1,000Charged for
Decoded VIN
vin-decoded
$0.001$1 / 1,000Charged once per VIN for which NHTSA vPIC returned vehicle data (make, model or model year).
Vehicle safety report
vehicle-safety-report
paid plans only
$0.002$2 / 1,000NHTSA recalls issued for the decoded make, model and model year, complaint statistics by component, NCAP crash-test stars and the investigation count.

Apify free plan: up to 10 items per run. Paid plans have no per-run cap; set maxTotalChargeUsd to cap spend.

Run

Call it from code, an agent or the Console

curl · synchronous run, rows in the response
curl -X POST "https://api.apify.com/v2/actors/sfoln~vin-decoder/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"vins":["1HGCM82633A004352","JH4KA7561PC008269"]}'
mcp.json · hosted Apify MCP server
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com?tools=sfoln/vin-decoder"
    }
  }
}
asynchronous run · for large batches
POST https://api.apify.com/v2/actors/sfoln~vin-decoder/runs?maxTotalChargeUsd=1
GET  https://api.apify.com/v2/actor-runs/{runId}            # until status is SUCCEEDED
GET  https://api.apify.com/v2/datasets/{defaultDatasetId}/items?format=json

Authenticate with an Apify API token. MCP clients can instead sign in with OAuth when prompted. Example prompt for an agent: Decode the VIN 1HGCM82633A004352 and list the recalls issued for that model year with their remedies.

Input

Input fields

Paste 17-character VINs (one per line) or pass an array. Each VIN produces one dataset record with a normalized `status`.

FieldTypeDefaultMeaning
vins *arrayrequiredVINs
Vehicle Identification Numbers (17 characters, 1981+), one per line; several VINs on one line can be separated by spaces, commas or semicolons. Spaces and dashes inside a VIN are removed, duplicates dropped. Objects with a `vin` field are accepted too. Accounts on the Apify free plan can process up to 10 VINs per run.
maxVinsinteger10000Max VINs
Safety cap on the number of VINs processed in this run. Range 1–100000.
includeSafetyReportbooleanfalseInclude vehicle safety report
Add NHTSA safety data for each decoded vehicle: recalls issued for its make, model and model year, complaint statistics by component, NCAP crash-test star ratings and the number of NHTSA investigations. Charged as `vehicle-safety-report` ($0.002) per VIN with safety data, on paid Apify plans only.
concurrencyinteger5Concurrency
Parallel workers. VINs are sent to NHTSA in batches of 50 regardless of this value. Range 1–10.
includeRawbooleanfalseInclude raw upstream response
Attach all ~150 raw NHTSA vPIC fields to each record (larger output).
Example input
{
  "vins": [
    "1HGCM82633A004352",
    "JH4KA7561PC008269"
  ]
}

Output

One record per input item

Records land in the run's dataset; a synchronous call returns them directly. Each has a status (ok is charged; everything else is free) and a charged flag. The run's OUTPUT record totals items and charges.

FieldTypeMeaning
inputstringInput
The VIN as submitted (upper-cased, spaces/dashes removed).
vinstringVIN
Normalized 17-character VIN. e.g. "1HGCM82633A004352"
decodedbooleanDecoded
NHTSA returned make, model or model year.
makestring | nullMake e.g. "HONDA"
manufacturerstring | nullManufacturer
modelstring | nullModel e.g. "Accord"
modelYearinteger | nullModel year e.g. 2003
trimstring | nullTrim
seriesstring | nullSeries
bodyClassstring | nullBody class
vehicleTypestring | nullVehicle type
doorsinteger | nullDoors
engineCylindersinteger | nullEngine cylinders
displacementLnumber | nullDisplacement (L)
engineHpnumber | nullEngine HP
engineModelstring | nullEngine model
fuelTypePrimarystring | nullPrimary fuel
fuelTypeSecondarystring | nullSecondary fuel
electrificationLevelstring | nullElectrification level
driveTypestring | nullDrive type
transmissionStylestring | nullTransmission
transmissionSpeedsinteger | nullTransmission speeds
gvwrstring | nullGVWR class
plantCitystring | nullPlant city
plantStatestring | nullPlant state
plantCountrystring | nullPlant country
checkDigitOkbooleanCheck digit OK
Position 9 matches the ISO 3779 check digit.
errorCodesarrayvPIC error codes
"0" = decoded clean; other codes explain partial decodes.
errorTextstring | nullvPIC error text
suggestedVinstring | nullSuggested VIN
safetyReportobject | nullVehicle safety report
Only with includeSafetyReport: NHTSA recalls issued for the make, model and model year (VIN-level repair status is not public), complaint statistics, NCAP ratings of the tested variants and the investigation count. Null when the report was skipped (see warnings).
warningsarrayWarnings
statusstringStatus
ok | not_found | error | skipped_invalid | skipped_budget | skipped_free_plan e.g. "ok"
chargedbooleanCharged
Whether this record incurred a pay-per-event charge.
sourcestringSource
fetchedAtstringFetched at
Example record
{
  "input": "1HGCM82633A004352",
  "vin": "1HGCM82633A004352",
  "decoded": true,
  "make": "HONDA",
  "manufacturer": "AMERICAN HONDA MOTOR CO., INC.",
  "model": "Accord",
  "modelYear": 2003,
  "trim": "EX-V6",
  "series": null,
  "bodyClass": "Coupe",
  "vehicleType": "PASSENGER CAR",
  "doors": 2,
  "engineCylinders": 6,
  "displacementL": 3,
  "engineHp": 240,
  "engineModel": "J30A4",
  "fuelTypePrimary": "Gasoline",
  "fuelTypeSecondary": null,
  "electrificationLevel": null,
  "driveType": null,
  "transmissionStyle": "Automatic",
  "transmissionSpeeds": 5,
  "gvwr": "Class 1C: 4,001 - 5,000 lb (1,814 - 2,268 kg)",
  "plantCity": "MARYSVILLE",
  "plantState": "OHIO",
  "plantCountry": "UNITED STATES (USA)",
  "checkDigitOk": true,
  "errorCodes": [
    "0"
  ],
  "errorText": "0 - VIN decoded clean. Check Digit (9th position) is correct",
  "suggestedVin": null,
  "status": "ok",
  "charged": true,
  "chargedEvent": "vin-decoded",
  "source": "nhtsa-vpic",
  "fetchedAt": "2026-10-14T10:00:00.000Z"
}

FAQ

Questions

Does the safety report tell me whether this exact car still has an open recall?
No. NHTSA publishes recalls per make, model and model year, so the report lists every recall issued for the vehicle's model year (recallScope "make-model-year"). Whether a recall was already repaired on one specific VIN is only available from the manufacturer or NHTSA's VIN lookup page, not from a public API. Each recall has a link to its NHTSA page.
What is in the vehicle safety report?
Recalls (campaign number, date, component, summary, consequence, remedy, park-it and park-outside flags), complaint statistics (total, crashes, fires, injuries, deaths, first and last filing date, the ten components named most often), NCAP crash-test stars of each tested variant with the best match to the decoded VIN marked, and the number of NHTSA defect investigations. Complaint texts are not included.
Which VINs can be decoded?
17-character VINs from model year 1981 on. Coverage is best for vehicles sold in the United States; vehicles built for other markets may decode partially or not at all, and NHTSA has no safety data for models not sold in the US.

Machine-readable

This page for agents