BYTETOOLS

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.

No API key requiredHTTPSFree tier

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
curl 'https://vpic.nhtsa.dot.gov/api/vehicles/getallmakes?format=json'
JavaScript (fetch)
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);
Python (requests)
import requests

res = requests.get("https://vpic.nhtsa.dot.gov/api/vehicles/getallmakes?format=json", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "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

ParameterTypeRequiredDescription
formatstringRequiredSet to `json`; the API defaults to XML. json
DecodeVin/<vin>pathOptionalDecode a specific VIN. 1HGCM82633A004352
GetModelsForMake/<make>pathOptionalAll models for a make. honda
modelyearintegerOptionalRestrict 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

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.