API · sold on RapidAPI · BASIC $0 / month

VIN Decoder API

Three lookups behind one RapidAPI key: decode a VIN into 22 fields, check it against our salvage records, or turn a US plate into a VIN. Two headers in, JSON out.

Spec plate

VINFREECHECK · V2.0
Host
vindecoder.p.rapidapi.com
Auth
X-RapidAPI-Key
X-RapidAPI-Host
Format
JSON over HTTPS
Lookups
VIN decode · salvage · US plate
VIN input
17 charactersNorth American check digit, position 9
Plans
BASIC $0 · PRO $69 · ULTRA $99per month, billed by RapidAPI

Sold through RapidAPI

01Endpoints

Endpoints

Base URL https://vindecoder.p.rapidapi.com. Build on /v2.0/decode_vin; the older decode paths are still served for existing integrations.

EndpointInputReturns
GET/v2.0/decode_vinVIN decode · currentvin · 17 charactersYear, make, model, trim, engine, style, country of manufacture, steering, ABS, tank size, height, length, width, seating, city and highway mpg, fuel type, transmission, drive type, features list. 22 fields.
GET/v1.1/decode_vin
GET/decode_vinOlder versions · still served
vinSubsets of the v2.0 fields.
GET/salvage_checkSalvage checkvinWhether the VIN is in our salvage records, plus title, mileage, primary and secondary damage, and loss type.
POST/api/v4/decode_plateUS plate lookupplate, state · 2-letterThe VIN for that plate.

Parameters and headers

NameWhereUsed byRules
vinQuery stringdecode_vin, salvage_checkRequired. A 17-character VIN; case doesn't matter. Decoding also needs a valid North American check digit (position 9) and no I, O or Q.
plateForm bodydecode_plateRequired. The plate as issued, at least 3 characters.
stateForm bodydecode_plateRequired. Two-letter code of the issuing state, e.g. TX.
X-RapidAPI-KeyHeaderEvery requestYour key from RapidAPI. Keep it on your server.
X-RapidAPI-HostHeaderEvery requestvindecoder.p.rapidapi.com
02Quickstart

Quickstart

Nothing to sign up for on this site. Keys, plans and billing all live on RapidAPI.

  1. Subscribe

    Open the VinFreeCheck listing on RapidAPI and pick a plan. BASIC is $0 a month.

  2. Copy your key

    RapidAPI puts your X-RapidAPI-Key in the listing's code snippets.

  3. Call the API

    Send the key and X-RapidAPI-Host: vindecoder.p.rapidapi.com with every request, from your server.

Decode a VIN
curl -G "https://vindecoder.p.rapidapi.com/v2.0/decode_vin" \
  --data "vin=1VWBT7A33GC006401" \
  -H "X-RapidAPI-Key: $RAPIDAPI_KEY" \
  -H "X-RapidAPI-Host: vindecoder.p.rapidapi.com"
Check salvage records
curl -G "https://vindecoder.p.rapidapi.com/salvage_check" \
  --data "vin=JHMES96655S007133" \
  -H "X-RapidAPI-Key: $RAPIDAPI_KEY" \
  -H "X-RapidAPI-Host: vindecoder.p.rapidapi.com"
Look up a US plate
curl -X POST "https://vindecoder.p.rapidapi.com/api/v4/decode_plate" \
  --data-urlencode "plate=<plate>" \
  --data "state=TX" \
  -H "X-RapidAPI-Key: $RAPIDAPI_KEY" \
  -H "X-RapidAPI-Host: vindecoder.p.rapidapi.com"
03Samples

Real responses

Captured from the API and pretty-printed. The plate response is shown with placeholders.

GET/v2.0/decode_vin?vin=1VWBT7A33GC006401
{
  "success": true,
  "vin": "1VWBT7A33GC006401",
  "specification": {
    "vin": "1VWBT7A33GC006401",
    "year": "2016",
    "make": "Volkswagen",
    "model": "Passat SE",
    "trim_level": "SE PZEV",
    "engine": "1.8L I4 DI",
    "style": "Sedan 4D",
    "made_in": "United States",
    "steering_type": "R&P",
    "anti_brake_system": "4-Wheel ABS",
    "tank_size": null,
    "overall_height": "58.50 inches",
    "overall_length": "191.90 inches",
    "overall_width": "72.20 inches",
    "standard_seating": "5",
    "optional_seating": null,
    "highway_mileage": "38 miles/gallon",
    "city_mileage": "25 miles/gallon",
    "fuel_type": "Gasoline",
    "transmission": "Automatic",
    "drive_type": "FWD",
    "features": [
      "Heated Seats",
      "Keyless Entry",
      "Leatherette Seats",
      "Rear-View Camera",
      "Sun/Moonroof",
      "Handsfree/Bluetooth Integration",
      "MP3",
      "Satellite Radio",
      "High Performance Tires",
      "Partial Zero Emissions Vehicle"
    ]
  }
}
GET/salvage_check?vin=JHMES96655S007133200
{
  "success": true,
  "is_salvage": true,
  "info": {
    "images": [],
    "vehicle_title": "WA-VEHICLE CERT OF OWNERSHIP-TITL",
    "mileage": "123483 ACTUAL",
    "primary_damage": "FRONT END",
    "secondary_damage": "-",
    "loss_type": "COLLISION"
  }
}
POST/api/v4/decode_plate200
{
  "status": 200,
  "success": true,
  "data": {
    "plate": "<plate>",
    "state": "TX",
    "vin": "<17-char VIN>"
  }
}
04Fields

22 fields per decode

Every value is a string, a list, or null when the decoder has nothing for that field. Sample values from the 2016 Passat above.

FieldSample value
vin1VWBT7A33GC006401
year2016
makeVolkswagen
modelPassat SE
trim_levelSE PZEV
engine1.8L I4 DI
styleSedan 4D
made_inUnited States
steering_typeR&P
anti_brake_system4-Wheel ABS
tank_sizenull
FieldSample value
overall_height58.50 inches
overall_length191.90 inches
overall_width72.20 inches
standard_seating5
optional_seatingnull
highway_mileage38 miles/gallon
city_mileage25 miles/gallon
fuel_typeGasoline
transmissionAutomatic
drive_typeFWD
features10 items, e.g. Heated Seats
Salvage check fields
salvage_checkMeaning
is_salvagetrue when the VIN is in our salvage records
info.vehicle_titleTitle on record
info.mileageOdometer reading on record
info.primary_damageMain damage
info.secondary_damageOther damage, or -
info.loss_typeCause of the loss, e.g. COLLISION
info.imagesList of images (may be empty)
Plate lookup fields
decode_plateMeaning
statusHTTP status, repeated
successtrue when a VIN was found
data.plateThe plate you sent
data.stateTwo-letter state
data.vinThe 17-character VIN; decode it with decode_vin
05Errors

Errors and not found

A lookup that finds nothing is not an error: decode and salvage answer 200 with "success": false, so check that flag before reading the body.

StatusWhenBody
200Decode: the VIN fails the North American rules, or there is no data for it. Salvage: the VIN isn't in our records.{"success":false}
404Plate lookup found no VIN for that plate and state.plate_not_found
422A required parameter is missing or too short: vin under 15 characters, plate under 3, or state not a two-letter US code.{"message":"The given data was invalid.","errors":{…}}
401 403 429Answered by RapidAPI before the request reaches us: a missing or wrong key, no subscription to this API, or a plan quota or rate limit reached.RapidAPI's message
Not found
# decode_vin, salvage_check (HTTP 200)
{"success":false}

# decode_plate (HTTP 404)
{
  "status": 404,
  "success": false,
  "error": {
    "code": "plate_not_found",
    "message": null
  }
}
422 · invalid input
{
  "message": "The given data was invalid.",
  "errors": {
    "vin": [
      "The vin must be at least 15 characters."
    ]
  }
}
06Plans

Plans and quotas

Every plan includes all three lookups. BASIC counts per month; PRO and ULTRA count decodes and salvage checks per day. Plate lookups past the allowance cost $0.10 each. Subscribe, upgrade or cancel on RapidAPI. How billing works →

Plan capacity

As listed on RapidAPI
API plans and their monthly or daily quotas
PlanBASIC$0 / MOPRO$69 / MOULTRA$99 / MO
VIN decodes50 / month3,000 / day20,000 / day
Salvage checks10 / month1,000 / day10,000 / day
US plate lookups10 / monththen $0.10 each50 / monththen $0.10 each100 / monththen $0.10 each
Start freeChoose PROChoose ULTRA
Keys, billing and usage: handled by RapidAPIWe never see your card
07FAQ

Questions

Q01How do I get an API key?

Subscribe to a plan on the VinFreeCheck listing on RapidAPI; BASIC is $0 a month. RapidAPI issues your X-RapidAPI-Key. Send it with X-RapidAPI-Host: vindecoder.p.rapidapi.com on every request. We don't issue keys ourselves.

Q02Which decode endpoint should I use?

/v2.0/decode_vin. It has the most fields, including the features list. /v1.1/decode_vin and /decode_vin still work and return subsets.

Q03What happens when I hit my quota?

US plate lookups beyond your plan's monthly allowance cost $0.10 each. RapidAPI tracks usage on every endpoint; for higher limits, move to PRO or ULTRA there.

Q04Does it decode VINs from outside North America?

The decoder validates the North American check digit (position 9), so it is built for 17-character VINs on vehicles sold in the US and Canada.

Q05What does "not found" look like?

Decode and salvage return {"success":false}. Plate lookups return a 404 with "code": "plate_not_found".

Q06Can I call the API from a web page?

Call it from your server. A request from the browser would expose your RapidAPI key to anyone who opens the page.

Q07How do I change or cancel my plan?

On RapidAPI, where you subscribed. There is no VinFreeCheck account to manage.

Q08Is the free VIN check on this site the same decoder?

Yes. The free check answers from VINs we have already decoded and is rate-limited; the API decodes live.

Start on BASIC. $0 a month.

Subscribe on RapidAPI, copy your key, make the call. Upgrade to PRO or ULTRA there when you need more.