Turn a license plate or a VIN into full vehicle data in one call: make, model, trim, engine, drivetrain and body style. One key, every endpoint.
Plate coverage across 50+ countries. Paid plans from $69/mo.
curl -G https://api.carsxe.com/v2/platedecoder \ -d key=YOUR_API_KEY \ -d plate=7XER187 \ -d state=CA \ -d country=US
const { CarsXE } = require("carsxe-api");
const carsxe = new CarsXE("YOUR_API_KEY");
const vehicle = await carsxe.platedecoder({ plate: "7XER187", state: "CA", country: "US" });
import asyncio
from carsxe_api import CarsXE
carsxe = CarsXE("YOUR_API_KEY")
vehicle = asyncio.run(carsxe.plate_decoder({"plate": "7XER187", "state": "CA", "country": "US"}))
import "github.com/carsxe/carsxe-go-package"
client := carsxe.New("YOUR_API_KEY")
vehicle := client.PlateDecoder(map[string]string{"plate": "7XER187", "state": "CA", "country": "US"})
import io.github.carsxe.CarsXE;
CarsXE carsxe = new CarsXE("YOUR_API_KEY");
Map<String, Object> vehicle = carsxe.platedecoder(Map.of("plate", "7XER187", "state", "CA", "country", "US"));
use CarsxeDeveloper\Carsxe\Carsxe;
$carsxe = new Carsxe("YOUR_API_KEY");
$vehicle = $carsxe->plateDecoder(['plate' => '7XER187', 'state' => 'CA', 'country' => 'US']);
require "carsxe" carsxe = Carsxe::CarsXE.new(api_key: "YOUR_API_KEY") vehicle = carsxe.plate_decoder('plate' => '7XER187', 'state' => 'CA', 'country' => 'US')
{
"success": true,
"description": "Kia Forte LX",
"make": "Kia",
"model": "Forte",
"trim": "LX",
"vin": "3KPFK4A78HE103497",
"year": "2017",
"body_style": "Sedan",
"engine_size": "2.0L I4 MPI",
"drive_type": "FWD",
"assembly": "Mexico"
}
Start from a plate, a VIN, a year/make/model or a photo. The same key calls every API your plan includes. Access depends on the plan — Ownership is Enterprise-only.
Start on the sandbox tier. Move up when your volume does.
Failed lookups and no-data errors do not use credits. Successful zero-recall responses are billable. YMM Options uses a minimum of 1 credit per successful response, including empty results. Bulk Recalls bills each unique submitted VIN.
{
"success": true,
"attributes": { "year": "2012", "make": "BMW" }
}
{
"success": false,
"message": "No data found for this VIN"
}
Priced per answer, not per request.
A plate, a VIN or a photo all resolve to the same vehicle record. What changes between these builds is where the input comes from.
Let a visitor enter a plate instead of filling a six-field form, then quote against the decoded vehicle rather than what they typed.
Read a plate out of a listing or a field photo and resolve the full vehicle with no manual entry in between.
Scan a plate or a VIN on arrival, so a technician has the vehicle on screen before opening the hood.
Turn a plate into consistent, verified vehicle identity for a record that has to hold up months later.
Four of the more common patterns, not a fixed list. Any decision that starts with a plate, a VIN or a photo runs on the same key. What are you building?
Get Your API KeyHear from the developers and product leaders who rely on CarsXE every day.
“CarsXE offers MotorTango's customers accurate and reliable vehicle data across many makes and models. Their VIN decoder and specs API are second to none.”
“With their VIN decoder and images, we can accurately document what's needed to perform repairs and ADAS calibrations, and we do it much more efficiently, saving dozens of minutes on every single repair.”
“The Recall API is a game changer for our warranty platform. Real-time recall data integrated directly into our workflow. Our customers love the transparency.”
58 countries. Pass an ISO two-letter code in the country parameter to choose the market; it defaults to US. State or province is required for US, Canadian, Australian and Pakistani plates.
Cars, motorcycles and RVs. Coverage is strongest from 1981 on, the year the 17-character VIN became standard. Older vehicles are covered too, with fewer fields returned.
In real time, on every plan. There is no refresh throttle by tier and no waiting for a nightly sync.
Failed lookups and no-data errors do not use credits. Successful zero-recall responses are billable. YMM Options uses a minimum of 1 credit per successful response, including empty results. Bulk Recalls bills each unique submitted VIN.
Yes. One credit balance works across every API. Credit costs depend on the endpoint. Failed lookups and no-data errors do not use credits. Successful zero-recall responses are billable. YMM Options uses a minimum of 1 credit per successful response, including empty results. Bulk Recalls bills each unique submitted VIN.
It varies by country. Every supported market returns vehicle identity — at minimum make, model and year. Most also return trim, VIN, body style, color, engine, drivetrain and transmission, and a US plate returns the full spec set.
Pass your API key as the key query parameter on requests. One credit balance works across every API; endpoint access requirements still apply.
Monthly credits reset each billing cycle and do not roll over. Annual plans grant all credits upfront at purchase and renewal. Requests stop when credits run out unless auto-recharge is enabled.
Requests stop when credits run out unless auto-recharge is on. Auto-recharge is off by default, with a $50 default when enabled. You are never charged for credits you did not buy.
Free sandbox tier. No credit card. No contract.