← Docs

Vehicle API

Decode a VIN into year, make, model, and vehicle type.

Decode a 17-character VIN. Core gives validity, year, make, model, trim, body and vehicle type. Spaces and case do not matter. Junk or a failed ISO 3779 check digit answers valid: false as a 200, never a 404. The data comes from the manufacturer's own filings with official sources. Fields the filing leaves blank are null. If a lookup fails and no cached answer is available, the request returns HTTP 503 service_unavailable. The message explains the failure when known and tells you whether to retry or contact support with the request ID. Coverage reflects US-market filings; other VINs may be incomplete or rejected by the checksum rule.

?deep=true adds technical specifications, assembly details and deep.recalls on paid plans: recall campaigns for the decoded year, make, and model. Each row carries the campaign number, report date, component, and the summary verbatim. [] when none are returned. Campaigns describe the year, make, and model. They do not establish whether this specific VIN is affected or whether its repair was completed.

Decode

GET
api.parseapi.com/vehicle/{vin}
Year, make, model, trim, body and vehicle type
Explore
Parameters 2
vinstring · path · required

The VIN as you have it. Spaces and punctuation fold out

deepboolean · query · optional

Technical vehicle specifications, assembly details and model-level recall campaigns. Included on paid plans.

Run uses the free demo on API 2.0.0. Copied code uses your API key when signed in, or YOUR_API_KEY when signed out.

import { parseAPI } from '@parseapi/sdk';

const parse = parseAPI("YOUR_API_KEY");
const result = await parse.vehicle("1HGCM82633A004352");
console.log(result);

Run on your server with a secret key. Calling from a browser or app?

Example response
{
  "vin": "1HGCM82633A004352",
  "valid": true,
  "year": 2003,
  "make": "Honda",
  "model": "Accord",
  "trim": "EX-V6",
  "body": "coupe",
  "type": "passenger car"
}

Response fields

vinstring or null
Normalized VIN, uppercase, no spaces. Invalid input still echoes the fold
validboolean
17 characters and the ISO 3779 check digit both pass
yearinteger or null
Model year
makestring or null
Make (Honda, BMW)
modelstring or null
Model name as the manufacturer filed it
trimstring or null
Trim level, or null
bodystring or null
Body style (sedan, coupe, suv, pickup)
typestring or null
Vehicle type (passenger car, truck, motorcycle, bus, trailer)

Deep fields

deep.seriesstring or null
Series, or null
deep.doorsnumber or null
Door count, or null
deep.cylindersnumber or null
Engine cylinders, or null
deep.displacementnumber or null
Engine displacement in liters, or null
deep.fuelstring or null
Primary fuel (gasoline, diesel, electric)
deep.horsepowernumber or null
Engine horsepower when published, or null
deep.drivestring or null
Drive type (fwd, rwd, awd, 4wd), or null
deep.transmissionstring or null
Transmission style (automatic, manual, cvt), or null
deep.manufacturerstring or null
Manufacturer of record
deep.plant_citystring or null
Assembly plant city, or null
deep.plant_statestring or null
Assembly plant state or region, or null
deep.plant_countrystring or null
Assembly plant country, or null
deep.gvwrstring or null
Gross vehicle weight rating class as filed, or null
deep.recallsarray or null
Recall campaigns for the decoded year, make, and model. campaign, date, component, summary verbatim. [] when none are returned, null when the registry did not answer. Paid plans. Does not establish whether this VIN needs a repair.

Build with Vehicle

All tutorials →

Questions? Email