NHTSA vPIC API
Free NHTSA vPIC API with no key: decode any VIN, list vehicle makes and models, and get manufacturer and specification data. Tested curl example.
Endpoint tested and returned HTTP 200 on 2026-08-19
What is the NHTSA vPIC API?
The NHTSA vPIC API is a free, key-free US government API that decodes Vehicle Identification Numbers and provides make, model, manufacturer and specification data for vehicles sold in the United States.
vPIC (Vehicle Product Information Catalog) is the authoritative free VIN decoder. Feed it a 17-character VIN and it returns the manufacturer, make, model, year, body class, engine configuration, plant of manufacture and dozens of other attributes.
Because it is run by the US Department of Transportation and VIN structure is federally mandated, coverage is complete for US-market vehicles and the data is reliable in a way that commercial VIN APIs charging per lookup often are not.
Quick facts
- Base URL
https://vpic.nhtsa.dot.gov/api/vehicles- Authentication
- No API key required.
- Rate limit
- No published hard limit; batch endpoints exist for bulk decoding.
- Pricing
- Free public domain US government data.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the NHTSA vPIC API
Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.
1. List every vehicle make
GET https://vpic.nhtsa.dot.gov/api/vehicles/getallmakes?format=json
curl 'https://vpic.nhtsa.dot.gov/api/vehicles/getallmakes?format=json'const res = await fetch("https://vpic.nhtsa.dot.gov/api/vehicles/getallmakes?format=json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://vpic.nhtsa.dot.gov/api/vehicles/getallmakes?format=json", timeout=20)
res.raise_for_status()
print(res.json()){
"Count": 12337,
"Message": "Response returned successfully",
"SearchCriteria": null,
"Results": [
{
"Make_ID": 12858,
"Make_Name": "#1 ALPINE CUSTOMS"
},
{
"Make_ID": 4877,
"Make_Name": "1/OFF KUSTOMS, LLC"
},
{
"Make_ID": 11257,
"Make_Name": "102 IRONWORKS, INC."
},
{
"Make_ID": 12255,
"Make_Name": "12832429 CANADA INC."
},
{
"Make_ID": 13053,
"Make_Name": "137 INDUSTRIES INC."
},
{
"Make_ID": 6387,
"Make_Name": "17 CREEK ENTERPRISES"
},
{
"Make_ID": 12948,
"Make_Name": "1955 CUSTOM BELAIR"
},
{
"Make_ID": 9172,
"Make_Name": "1M CUSTOM CAR TRANSPORTS, INC."
},
{
"Make_ID": 6124,
"Make_Name": "1ST CHOICE MANUFACTURING INC"
},
{
"Make_ID": 12972,
"Make_Name": "2 GOLDEN EAGLES"
},
{
"Make_ID": 6488,
"Make_Name": "2-G TRAILER CO LLC"
},
{
"Make_ID": 11399,
"Make_Name": "24/7 ONSITE CAMERAS INC"
},
{
"Make_ID": 608,
"Make_Name": "280 TRAILERS"
},
{
"Make_ID": 10123,
"Make_Name": "3 CUSTOM SOLUTIONS"
},
{
"Make_ID": 11253,
"Make_Name": "3 STAR MFG LTD"
},
{
"Make_ID": 8792,
"Make_Name": "3&1 ENTERPRISES, LLC DBA IMPACT TRAILERS"
},
{
"Make_ID": 13576,
"Make_Name": "321TRAILERS"
},
{
"Make_ID": 7388,
"Make_Name": "33 EAST MAINTENANCE INC"
},
{
"Make_ID": 10005,
"Make_Name": "357 GOLF CARTS"
},Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
format | string | Required | Set to `json`; the API defaults to XML. json |
DecodeVin/<vin> | path | Optional | Decode a specific VIN. 1HGCM82633A004352 |
GetModelsForMake/<make> | path | Optional | All models for a make. honda |
modelyear | integer | Optional | Restrict results to a model year. 2020 |
Response fields
Countinteger- Number of results returned.
Messagestring- Status message from the service.
Resultsarray- The data array; shape depends on the endpoint called.
Results[].Make_Name / Model_Namestring- Make and model names on catalogue endpoints.
Results[].Variable / Valuestring- On VIN decode, each decoded attribute as a name/value pair.
What you can build with the NHTSA vPIC API
- Decode a VIN at point of sale or during insurance quoting
- Populate make and model dropdowns from authoritative data
- Validate that a VIN is genuine and internally consistent
- Enrich fleet records with manufacturer specifications
Common errors and how to fix them
XML returned instead of JSON
The `format=json` parameter was omitted.
Fix: Always append ?format=json — XML is the default output.
Empty Value fields on VIN decode
Not every attribute is populated for every vehicle.
Fix: Filter out entries where Value is null or empty before displaying.
Non-US vehicles decode poorly
vPIC covers the US market.
Fix: Vehicles never sold in the US may return sparse results; use a commercial decoder for full international coverage.
NHTSA vPIC API — frequently asked questions
Is there a free VIN decoder API?
Yes. NHTSA's vPIC API decodes VINs with no API key and no cost, and is the authoritative source for US-market vehicles.
Why is the response XML?
XML is the default. Append ?format=json to every request to get JSON instead — this is the most common integration mistake.
Can it decode VINs for cars sold outside the US?
Partially. The first characters identify the manufacturer globally, but detailed attributes are only populated for vehicles sold in the US market.
Can I decode many VINs at once?
Yes, the DecodeVINValuesBatch endpoint accepts multiple VINs in a single POST, which is far more efficient than looping.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
CSV to JSON Converter
Convert CSV to a JSON array of objects online. Header-row detection, comma/semicolon/tab delimiters and pretty-printed output — 100% in your browser.
NHTSA vPIC is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.