Skip to content
VIN decoder API

VIN decoder API: decode any VIN into clean JSON.

A simple VIN lookup API over HTTPS. Send a 17 character VIN number and get the vehicle as it was built: year, make, model, trim, engine, transmission, drivetrain, body style, plant and safety equipment. One request, one key, structured fields you can store and search.

Free on a new account: 5 × VIN Decode, 1 × Vehicle History and 1 × Window Sticker. No card required.

Python
import os, requests

res = requests.get(
    "https://api.autoparse.io/v1/vin/decode/2G1FK1EJ6A9133857",
    headers={"x-api-key": os.environ["AUTOPARSE_API_KEY"]},
    timeout=30,
)
res.raise_for_status()
print(res.json())
Overview

What is the VIN Decoder API?

The Autoparse VIN Decoder API is a REST endpoint that turns a 17 character Vehicle Identification Number into structured vehicle data. You send one GET request to /v1/vin/decode/{vin} with your API key in the x-api-key header, and the response is JSON containing the year, make, model and trim, plus engine, transmission, drivetrain, body style, assembly plant and safety equipment. Field names and types are consistent across vehicles, so there is no free text to parse before you store or search the data. A successful decode costs 1 credit, and a VIN with no record, a provider error or a timeout is never billed. You can start without a card, then move to a monthly subscription or pay-as-you-go credits that never expire. The API reference lists every parameter, response field and error code.

What you get

Structured data, not documents.

Core identification

Year, make, model and trim, plus manufacturer and vehicle type.

Powertrain

Engine model, fuel type, cylinders, displacement, transmission style and driven wheels.

Body and exterior

Body style, door count and gross vehicle weight rating.

Assembly plant

The factory city, region and country where the vehicle was built.

Safety equipment

Seat belts, tire pressure monitoring and airbag coverage by row.

Normalized output

Consistent field names and types, so there is no free text to parse.

Example response

What comes back.

A shortened real response for one VIN. Arrays and nested objects are trimmed here; the API reference shows every field.

200 OK
{
  "vin": "2G1FK1EJ6A9133857",
  "body": "Coupe",
  "make": "Chevrolet",
  "trim": "2SS",
  "year": 2010,
  "model": "Camaro",
  "plant": "Oshawa, Ontario, Canada",
  "engine": {
    "fuel": "Gasoline",
    "model": "L99",
    "cylinders": 8,
    "injection": "Sequential Fuel Injection (SFI)",
    "other_info": "Alum",
    "manufacturer": "GM"
  }
}
Use cases

Built for the real workflow.

Listing forms

Prefill year, make, model and trim as soon as a seller types a VIN, and cut manual entry errors.

Inventory and search

Normalize every vehicle on the way in, then filter by body style, drivetrain or fuel type.

Insurance and lending

Confirm the vehicle on an application matches the VIN before quoting or approving.

Fleet and service tools

Look up the exact engine and equipment for parts matching and maintenance schedules.

How it works

Three steps to your first call.

  1. Create an account and generate an API key.
  2. Call GET /v1/vin/decode/{vin} with your key in the x-api-key header.
  3. Read the JSON response. A VIN with no record, a provider error or a timeout is never billed.

Before you ship, read how to authenticate, how credits are charged, the rate limits and the error codes.

Pricing
1credit per successful request

From about $0.053 per request on the largest volumes. Subscribe for a monthly allowance or buy credit packs that never expire. Not found, upstream errors and timeouts are never billed.

See pricing

Questions

VIN Decoder API, answered.

What does a VIN decoder API return?

It returns the specifications encoded in a 17 character VIN: model year, make, model, trim, engine, transmission, drivetrain, body style, assembly plant and safety equipment, as structured JSON.

How do I decode a VIN with the API?

Send a GET request to the decode endpoint with the VIN in the path and your API key in the x-api-key header. The documentation has ready to run samples in curl, Node.js, Python and C#.

Am I charged if a VIN cannot be decoded?

No. If the VIN has no record, the data provider fails or the request times out, you are not charged. Credits are only spent when you receive data.

How do I check a VIN with an API?

Call the VIN check endpoint, GET /v1/vin/decode/{vin}, with your API key. The web service validates the VIN number format, looks up the vehicle and returns the decoded specification as JSON, so one request both checks and decodes the VIN.

Is this a VIN lookup API I can call from any language?

Yes. It is a plain REST web service over HTTPS, so any language that can send a GET request can use it. There is no SDK to install and no OAuth flow, only an API key in the x-api-key header.

What format does a valid VIN have?

A VIN is exactly 17 characters of digits and capital letters, and never uses the letters I, O or Q. The API validates the format before it does any lookup.