CarAPI
CarAPI — free-tier JSON endpoint
CarAPI offers a free API tier. We verified JSON on a sample GET (Vehicle). Check provider docs for key requirements and limits.
We probe a documented GET and expect 2xx JSON — full uptime and health score. Open provider docs ↗
On our probe schedule. Uptime charts appear after the first check lands.
GET https://api.carapi.dev/openapi.json
{
"openapi": "3.1.0",
"info": {
"title": "CarAPI.dev - Automotive Data API",
"description": "Comprehensive automotive data API providing VIN decoding, vehicle history, stolen vehicle checks, valuations, and more. Access reliable vehicle information for your applications.",
"version": "1.0.0",
"contact": {
"name": "CarAPI.dev Support",
"url": "https://carapi.dev",
"email": "support@carapi.dev"
},
"license": {
"name": "Proprietary",
"url": "https://carapi.dev/terms"
},
"x-logo": {
"url": "https://carapi.dev/favicon.svg"
}
},
"servers": [
{
"url": "https://api.carapi.dev/v1",
"description": "Production API Server"
}
],
"security": [
{
"ApiKeyAuth": []
}
],
"tags": [
{
"name": "VIN",
"description": "VIN-related operations including decoding and lookup"
},
{
"name": "Vehicle History",
"description": "Vehicle history and status checks"
}
],
"paths": {
"/vin-decode/{vin}": {
"get": {
"operationId": "decodeVin",
"summary": "Decode a VIN",
"description": "Decode a Vehicle Identification Number (VIN) to retrieve detailed vehicle specifications including make, model, fuel type, transmission, engine power, and registration date.",
"tags": [
"VIN"
],
"parameters": [
{
"name": "vin",
"in": "path",
"required": true,
"description": "17-character Vehicle Identification Number (alphanumeric, excluding I, O, Q)",
"schema": {
"type": "string",
"pattern": "^[A-HJ-NPR-Z0-9]{17}$",
"example": "WAUZZZ4F55N052232"
}
}
],
"responses": {
"200": {
"description": "Successfully decoded VIN",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VinDecodeResponse"
}
}
}
},
"400": {
"description": "Invalid VIN",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Invalid or missing API key",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "VIN not found in database",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/plate-to-vin/{plateNumber}": {
"get": {
"operationId": "plateToVin",
"summary": "Convert license plate to VIN",
"description": "Convert a license plate number to its corresponding Vehicle Identification Number (VIN). Requires a country code. Supported countries: PL, NO, SK, SE, CZ, US. US lookups also require a 2-letter state code, since US plates are only unique per state.",
"tags": [
"VIN"
],
"parameters": [
{
"name": "plateNumber",
"in": "path",
"required": true,
"description": "License plate number",
"schema": {
"type": "string",
"example": "WO91287"
}
},
{
"name": "country",
"in": "query",
"required": true,
"description": "ISO 3166-1 alpha-2 country code. Supported: PL, NO, SK, SE, CZ, US.",
"schema": {
"type": "string",
"enum": [
"PL",
"NO"
],
"example": "PL"
}
}
],
"responses": {
"200": {
"description": "Successfully converted plate to VIN",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PlateToVinResponse"
}
}
}
},
"400": {
"description": "Missing or invalid parameters",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Invalid or missing API key",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/stolen-check/{vin}": {
"get": {
"operationId": "stolenCheck",
"summary": "Check if vehicle is stolen",
"description": "Check if a vehicle has been reported as stolen in multiple European countries (Slovakia, Czech Republic, Slovenia, Hungary, Romania).",
"tags": [
"Vehicle History"
],
"parameters": [
{
"name": "vin",
"in": "path",
"required": true,
"description": "17-character Vehicle Identification Number",
"schema": {
"type": "string",
"pattern": "^[A-HJ-NPR-Z0-9]{17}$",
"example": "WAUZZZ4F55N052232"
}
}
],
"responses": {
"200": {
"description": "Stolen status check result",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StolenCheckResponse"
}
}
}
},
"400": {
"description": "Invalid VIN",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Invalid or missing API key",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/inspection/{vin}": {
"get": {
"operationId": "getInspection",
"summary": "Get vehicle inspection history",
"description": "Retrieve vehicle inspection data including technical inspection (STK) and emissions test (EK) validity dates. Currently supports Slovakia (SK).",
"tags": [
"Vehicle History"
],
"parameters": [
{
"name": "vin",
"in": "path",
"required": true,
"description": "17-character Vehicle Identification Number",
"schema": {
"type": "string",
"pattern": "^[A-HJ-NPR-Z0-9]{17}$",
"example": "WF0DXXGAKDDB43770"
}
},
{
"name": "country",
"in": "query",
"required": true,
"description": "Country code (currently only SK supported)",
"schema": {
"type": "string",
"enum": [
"SK"
],
"example": "SK"
}
}
],
"responses": {
"200": {
"description": "Vehicle inspection data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InspectionResponse"
}
}
}
},
"400": {
"description": "Invalid parameters",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Invalid or missing API key",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Inspection data not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/mileage-history/{vin}": {
"get": {
"operationId": "getMileageHistory",
"summary": "Get vehicle mileage history",
"description": "Retrieve historical mileage records for a vehicle to detect odometer rollbacks or inconsistencies.",
"tags": [
"Vehicle History"
],
"parameters": [
{
"name": "vin",
"in": "path",
"required": true,
"description": "17-character Vehicle Identification Number",
"schema": {
"type": "string",
"pattern": "^[A-HJ-NPR-Z0-9]{17}$",
"example": "JTDKDTB33J1604823"
}
}
],
"responses": {
"200": {
"description": "Mileage history records",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MileageHistoryResponse"
}
}
}
},
"400": {
"description": "Invalid VIN",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Invalid or missing API key",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "No mileage history found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/vehicle-valuation": {
"get": {
"operationId": "getVehicleValuation",
"summary": "Get vehicle valuation",
"description": "Get current market valuation for a vehicle based on make, model, year, and country (all required). Supports 24 countries including EU, UK, US, and others. Optional fuel and kw (engine power in kW) filters narrow the valuation to a specific drivetrain variant. Optional mileage (current vehicle mileage in km) refines the valuation. Applied filters are echoed back on the response. Returns 404 when no valuation is available for the supplied configuration.",
"tags": [
"Valuation"
],
"parameters": [
{
"name": "make",
"in": "query",
"required": true,
"description": "Vehicle manufacturer name (40 makes supported, case-insensitive)",
"schema": {
"type": "string",
"enum": [
"acura",
"alfa-romeo"
],
"example": "bmw"
}
},
{
"name": "model",
"in": "query",
"required": true,
"description": "Vehicle model name (case-insensitive)",
"schema": {
"type": "string",
"example": "X6"
}
}
],
"responses": {
"200": {
"description": "Vehicle valuation result",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValuationResponse"
}
}
}
},
"400": {
"description": "Missing or invalid parameters",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Invalid or missing API key",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Valuation not found for specified vehicle",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/payments/{vin}": {
"get": {
"operationId": "calculatePayments",
"summary": "Calculate vehicle loan payments",
"description": "Calculate monthly payment schedule for a vehicle loan based on price, down payment, loan term, and interest rate.",
"tags": [
"Valuation"
],
"parameters": [
{
"name": "vin",
"in": "path",
"required": true,
"description": "17-character Vehicle Identification Number",
"schema": {
"type": "string",
"pattern": "^[A-HJ-NPR-Z0-9]{17}$",
"example": "WAUZZZ4F55N052232"
}
},
{
"name": "price",
"in": "query",
"required": true,
"description": "Vehicle price (must be positive)",
"schema": {
"type": "number",
"exclusiveMinimum": 0,
"example": 25000
}
}
],
"responses": {
"200": {
"description": "Payment calculation result",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaymentsResponse"
}
}
}
},
"400": {
"description": "Missing or invalid parameters",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Invalid or missing API key",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/listing": {
"get": {
"operationId": "searchListings",
"summary": "Search vehicle listings",
"description": "Search current vehicle listings on the market. Filter by make, model, and year with pagination support.",
"tags": [
"Listings"
],
"parameters": [
{
"name": "make",
"in": "query",
"required": false,
"description": "Filter by vehicle manufacturer (40 makes supported)",
"schema": {
"type": "string",
"enum": [
"acura",
"alfa-romeo"
],
"example": "toyota"
}
},
{
"name": "model",
"in": "query",
"required": false,
"description": "Filter by vehicle model",
"schema": {
"type": "string",
"example": "Camry"
}
}
],
"responses": {
"200": {
"description": "List of vehicle listings",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListingResponse"
}
}
}
},
"400": {
"description": "Invalid parameters",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Invalid or missing API key",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
}
},
"components": {
"securitySchemes": {
"ApiKeyAuth": {
"type": "apiKey",
"in": "query",
"name": "token",
"description": "API token for authentication. Get your token at https://carapi.dev/dashboard"
}
},
"schemas": {
"Error": {
"type": "object",
"required": [
"error"
],
"properties": {
"error": {
"type": "string",
"description": "Error message describing what went wrong",
"example": "Invalid VIN: VIN must be exactly 17 characters long (got 16)."
}
}
},
"AccountResponse": {
"type": "object",
"required": [
"plan",
"status"
],
"properties": {
"plan": {
"type": "string",
"description": "Effective plan tier your next request would use (a lapsed paid subscription is reported as the free fallback)",
"example": "starter"
},
"status": {
"type": "string",
"description": "Plan status",
"example": "active"
},
"subscriptionStatus": {
"type": [
"string",
"null"
],
"description": "Underlying Stripe subscription status (null for free plans without a subscription). Authoritative billing signal: a value other than 'active'/'trialing' means the paid subscription has lapsed even though `plan` reports the free fallback.",
"example": "active"
},
"usage": {
"type": "object",
"required": [
"used",
"limit"
],
"properties": {
"used": {
"type": "integer",
"description": "Credits used this billing period",
"example": 3421
},
"limit": {
"type": "integer",
"description": "Monthly credit limit (comp overrides applied)",
"example": 10000
},
"remaining": {
"type": "integer",
"description": "Credits remaining (max(0, limit - used))",
"example": 6579
},
"resetDate": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "When the current period ends and usage resets",
"example": "2026-07-01T00:00:00.000Z"
}
}
},
"rateLimitPerMinute": {
"type": "integer",
"description": "The plan's per-minute rate limit for the paid data endpoints",
"example": 60
}
}
},
"EndpointsResponse": {
"type": "object",
"required": [
"endpoints"
],
"properties": {
"endpoints": {
"type": "array",
"description": "All active endpoints with their per-call credit cost",
"items": {
"type": "object",
"required": [
"slug",
"name"
],
"properties": {
"slug": {
"type": "string",
"example": "vin-decode"
},
"name": {
"type": "string",
"example": "VIN Decode"
},
"category": {
"type": [
"string",
"null"
],
"example": "vehicle"
},
"description": {
"type": [
"string",
"null"
],
"example": "Decode a 17-character VIN into full vehicle specifications."
},
"creditCost": {
"type": "integer",
"description": "Credits debited per successful call",
"example": 1
}
}
}
}
}
},
"VinDecodeResponse": {
"type": "object",
"required": [
"vin",
"specifications"
],
"properties": {
"vin": {
"type": "string",
"description": "The decoded VIN (uppercase)",
"example": "WAUZZZ4F55N052232"
},
"specifications": {
"type": "object",
"properties": {
"make": {
"type": "string",
"nullable": true,
"description": "Vehicle manufacturer",
"example": "Audi"
},
"model": {
"type": "string",
"nullable": true,
"description": "Vehicle model",
"example": "A6"
},
"fuel": {
"type": "string",
"nullable": true,
"description": "Fuel type (petrol, diesel, electric, hybrid)",
"example": "petrol"
},
"transmission": {
"type": "string",
"nullable": true,
"description": "Transmission type (manual, automatic)",
"example": "manual"
},
"enginePower": {
"type": "integer",
"nullable": true,
"description": "Engine power in kilowatts (kW). Null when unknown.",
"example": 165
},
"enginePowerUnit": {
"type": "string",
"nullable": true,
"description": "Unit for enginePower. Always \"kW\" when enginePower is present, otherwise null.",
"example": "kW"
},
"bodyStyle": {
"type": "string",
"nullable": true,
"description": "Vehicle body style. Null when unknown.",
"enum": [
"HATCHBACK",
"CABRIOLET"
],
"example": "SEDAN"
},
"drivetrain": {
"type": "string",
"nullable": true,
"description": "Drivetrain type. Null when unknown.",
"enum": [
"FRONT_WHEEL_DRIVE",
"REAR_WHEEL_DRIVE"
],
"example": "ALL_WHEEL_DRIVE"
}
}
},
"manufacturer": {
"type": "object",
"nullable": true,
"description": "Manufacturer details derived from the World Manufacturer Identifier (first 3 VIN characters).",
"properties": {
"name": {
"type": "string",
"nullable": true,
"description": "Manufacturer name",
"example": "Audi AG"
},
"region": {
"type": "string",
"nullable": true,
"description": "Manufacturing region",
"example": "Europe"
},
"country": {
"type": "string",
"nullable": true,
"description": "Manufacturing country",
"example": "Germany"
}
}
},
"features": {
"type": "array",
"description": "List of vehicle features. Each feature has a name and a category.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Feature identifier",
"example": "ADAPTIVE_CRUISE_CONTROL"
},
"category": {
"type": "string",
"nullable": true,
"description": "Feature category",
"enum": [
"SAFETY_SYSTEM",
"ASSISTANCE_SYSTEM"
],
"example": "ASSISTANCE_SYSTEM"
}
}
},
"example": [
{
"name": "ABS",
"category": "SAFETY_SYSTEM"
},
{
"name": "ADAPTIVE_CRUISE_CONTROL",
"category": "ASSISTANCE_SYSTEM"
}
]
},
"plateNumber": {
"type": "object",
"nullable": true,
"properties": {
"country": {
"type": "string",
"nullable": true,
"example": "CZ"
},
"plateNumber": {
"type": "string",
"nullable": true,
"example": "1A2B345"
}
}
}
}
},
"PlateToVinResponse": {
"type": "object",
"required": [
"plateNumber",
"country"
],
"properties": {
"plateNumber": {
"type": "string",
"description": "The license plate number",
"example": "WO91287"
},
"country": {
"type": "string",
"description": "Country code (uppercase)",
"example": "PL"
},
"state": {
"type": "string",
"description": "2-letter US state code (uppercase). Present only for US lookups.",
"example": "CA"
},
"vin": {
"type": "string",
"nullable": true,
"description": "The corresponding VIN, or null if not found",
"example": "WAUZZZ4F55N052232"
}
}
},
"StolenCheckResponse": {
"type": "object",
"required": [
"vin",
"stolen"
],
"properties": {
"vin": {
"type": "string",
"description": "The checked VIN",
"example": "WAUZZZ4F55N052232"
},
"stolen": {
"type": "boolean",
"description": "True if vehicle is reported stolen in any checked country",
"example": false
},
"countries": {
"type": "object",
"description": "Stolen status per country",
"properties": {
"sk": {
"type": "boolean",
"description": "Stolen status in Slovakia"
},
"cz": {
"type": "boolean",
"description": "Stolen status in Czech Republic"
},
"si": {
"type": "boolean",
"description": "Stolen status in Slovenia"
},
"hu": {
"type": "boolean",
"description": "Stolen status in Hungary"
},
"ro": {
"type": "boolean",
"description": "Stolen status in Romania"
}
}
}
}
},
"InspectionResponse": {
"type": "object",
"required": [
"vin",
"country"
],
"properties": {
"vin": {
"type": "string",
"example": "WF0DXXGAKDDB43770"
},
"country": {
"type": "string",
"example": "SK"
},
"inspection": {
"type": "object",
"properties": {
"stkValidTo": {
"type": "string",
"nullable": true,
"description": "Technical inspection (STK) validity date",
"example": "2025-06-15"
},
"ekValidTo": {
"type": "string",
"nullable": true,
"description": "Emissions test (EK) validity date",
"example": "2025-06-15"
}
}
}
}
},
"MileageHistoryResponse": {
"type": "object",
"required": [
"vin",
"totalRecords"
],
"properties": {
"vin": {
"type": "string",
"example": "JTDKDTB33J1604823"
},
"totalRecords": {
"type": "integer",
"description": "Total number of mileage records",
"example": 5
},
"mileageHistory": {
"type": "array",
"items": {
"type": "object",
"properties": {
"mileage": {
"type": "integer",
"description": "Recorded mileage in kilometers",
"example": 45000
},
"createdAt": {
"type": "string",
"description": "Date of mileage record (ISO format)",
"example": "2023-06-15T10:30:00Z"
}
}
}
}
}
}
}
},
"externalDocs": {
"description": "Full API Documentation",
"url": "https://docs.carapi.dev"
}
}curl "https://api.carapi.dev/openapi.json"const res = await fetch("https://api.carapi.dev/openapi.json");
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.carapi.dev/openapi.json")
print(res.json())BROWSER CALLS BLOCKED (NO CORS/HTTPS) — USE THE CURL SNIPPET
/openapi.jsonPROBEDCarAPI — free-tier JSON endpoint
/openapi.json?limit=5Paginated variant with limit parameter.
/vin-decode/{vin}Decode a VIN
/plate-to-vin/{plateNumber}Convert license plate to VIN
/stolen-check/{vin}Check if vehicle is stolen
/inspection/{vin}Get vehicle inspection history
We probe a documented GET and expect 2xx JSON — full uptime and health score. Export includes every documented route below.
Not tracked yet. Shape-change history starts once this API joins our probe schedule.
CarAPI: common questions
Is CarAPI free to use?
Yes — CarAPI is a free transport API. Free tier: Free tier — API key may be required for production. Whether the free tier allows commercial use is unclear — check the provider docs.
Does CarAPI need an API key?
Yes — CarAPI needs a free API key, which you pass on each request. Rate limits: Unpublished.
Can I call CarAPI from the browser?
Not directly — CarAPI doesn't send browser-friendly CORS headers, so call it from a server or proxy instead. Copy the curl or Python snippet on this page to get started.
Is CarAPI up right now?
CarAPI is catalogued but not yet on our probe schedule, so we don't publish a live status for it. Check the provider's own status page or docs for its current state.