Free sandbox tier, no credit card

Vehicle data API

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.

GET /v2/platedecoder
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"
}
Trusted by thousands of developers and businesses worldwide
NerdWallet Smartcar ServiceUp ADAS Safe Curbit Treads

One key, the APIs on your plan

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.

See all sixteen endpoints in the docs
SpecificationsGET /specs
Plate DecoderGET /v2/platedecoder
Market ValueGET /v2/marketvalue
Vehicle HistoryGET /history
RecallsGET /v1/recalls
Recalls BatchPOST /v1/recalls-batch/submit
Recalls by YMMGET /v1/recalls-ymm
Year Make ModelGET /v1/ymm
YMM OptionsGET /v1/ymm-options
International VINGET /v1/international-vin-decoder
Lien & TheftGET /v1/lien-theft
OBD Codes DecoderGET /obdcodesdecoder
RecognitionPOST /platerecognition
Vehicle ImagesGET /images
VIN OCRPOST /v1/vinocr
OwnershipGET /v1/ownership/vin
275M+Vehicle records
50+Countries covered
99.9%Uptime SLA
SOC 2Certified

Pricing you can see before you integrate

Start on the sandbox tier. Move up when your volume does.

Sandbox $0 50 free credits on a personal email domain, or 100 on any other domain, one time. No credit card required.
Starter $69/mo 1,000 credits/month across eligible APIs. Extra credits: 6¢ each, in increments of 100.
Pro $299/mo 5,000 credits/month. Extra credits: 5¢ each, in increments of 100.
Enterprise Custom Volume set in contract. Flexible billing options.

No data, no charge

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.

Vehicle found
{
  "success": true,
  "attributes": { "year": "2012", "make": "BMW" }
}
Billed. One unit.
No match
{
  "success": false,
  "message": "No data found for this VIN"
}
Free. Credit balance unchanged.

Priced per answer, not per request.

Four things a plate turns into

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.

Plate-first lead capture

Let a visitor enter a plate instead of filling a six-field form, then quote against the decoded vehicle rather than what they typed.

GET /v2/platedecoder

Photo to plate to vehicle

Read a plate out of a listing or a field photo and resolve the full vehicle with no manual entry in between.

POST /platerecognition→GET /v2/platedecoder

Mobile and field capture

Scan a plate or a VIN on arrival, so a technician has the vehicle on screen before opening the hood.

POST /v1/vinocr→GET /specs

Compliance and enforcement records

Turn a plate into consistent, verified vehicle identity for a record that has to hold up months later.

GET /v2/platedecoder

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 Key
Customer Stories

Trusted by teams that move fast

Hear 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.”

Andy Liakos
Andy Liakos CTO, MotorTango

“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.”

Philip Brossy
Philip Brossy Founder & CEO, ADAS Safe

“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.”

Samee Khan
Samee Khan Founder & CEO, PAM

Questions developers ask first

Which countries have plate coverage?

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.

Which vehicles are covered?

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.

How often is the data refreshed?

In real time, on every plan. There is no refresh throttle by tier and no waiting for a nightly sync.

Do I pay for a lookup that finds nothing?

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.

Do APIs share one credit balance?

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.

What data does a plate lookup return?

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.

How do I authenticate?

Pass your API key as the key query parameter on requests. One credit balance works across every API; endpoint access requirements still apply.

What are the rate limits?

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.

What happens when I hit my limit?

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.

Look up your first plate in the next five minutes

Free sandbox tier. No credit card. No contract.

Get Your API Key
CarsXE

Vehicle data infrastructure for developers. One API key for VIN decoding, plate lookup, market value, history and recalls across 50+ countries.

SOC 2 certified
99.9% uptime SLA
All systems operational
© 2026 CarsXE. All rights reserved.