Live · Free · No auth

CarWhere VIN API

One GET request. Decoded NHTSA specs, verified buyer pricing, open safety recalls, and a Claude-generated vehicle insight — all in one JSON response. Free, CORS-enabled, designed for AI agents.

~3,700

Indexable VIN pages

28

Make-specific decoders

~1,900

YMM long-tail pages

OpenAPI 3.1

Spec available

Quick start

Single endpoint. Pass a VIN, get everything.

cURL

curl https://www.carwhere.com/api/public/vin/4T1BF1FK1HU381301

JavaScript / fetch

const res = await fetch(
  'https://www.carwhere.com/api/public/vin/4T1BF1FK1HU381301'
);
const data = await res.json();
console.log(data.decoded);   // year, make, model, trim, engine
console.log(data.pricing);   // avg price + % off MSRP
console.log(data.recalls);   // open NHTSA recalls
console.log(data.insight);   // AI-generated insight

Python

import httpx

vin = "4T1BF1FK1HU381301"
r = httpx.get(f"https://www.carwhere.com/api/public/vin/{vin}")
print(r.json()["decoded"]["model"])

Sample response

{
  "source": "CarWhere — verified...",
  "vin": "4T1BF1FK1HU381301",
  "permalink": "https://www.carwhere.com/vin/4T1BF1FK1HU381301",
  "decoded": {
    "year": "2017",
    "make": "TOYOTA",
    "model": "Camry",
    "trim": "SE",
    "bodyStyle": "Sedan",
    "driveType": "FWD",
    "fuelType": "Gasoline",
    "engine": {
      "cylinders": 4,
      "displacementLiters": "2.5"
    },
    "transmission": "Automatic",
    "plant": {
      "city": "GEORGETOWN",
      "state": "KENTUCKY",
      "country": "UNITED STATES (USA)"
    }
  },
  "pricing": {
    "available": true,
    "sampleSize": 47,
    "averageSellingPrice": 24800,
    "averageDiscountPercent": 8.2,
    "priceBand": { "low": 23100, "typical": 24800, "high": 26400 }
  },
  "recalls": {
    "count": 0,
    "items": [],
    "url": "https://www.carwhere.com/tools/recall-check/..."
  },
  "insight": {
    "text": "The 2017 Toyota Camry is built at...",
    "model": "claude-haiku-4-5"
  }
}

Endpoints

EndpointDescriptionCache
/api/public/vin/{vin}Full VIN decode + pricing + recalls + insight24 h
/api/public/pricing/{make}/{model}/{year}Aggregate buyer pricing for a year-make-model1 h
/api/public/pricing/{make}/{model}/{year}/{state}State-level pricing breakdown1 h
/api/recalls?vin=…NHTSA recalls by VIN6 h
/api/recalls?make=…&model=…&year=…NHTSA recalls by year-make-model6 h
/api/vin-insights/{year}/{make}/{model}AI-generated factual insight (Claude Haiku)30 d
/api/market-dataMarket overview (top discounts, state coverage)1 h
/api/public/openapi.jsonOpenAPI 3.1 spec for all of the above24 h

Use as a ChatGPT GPT Action

Drop into any custom GPT in 60 seconds.

  1. In the GPT builder, click Configure → Actions → Create new action.
  2. Click Import from URL and paste:
    https://www.carwhere.com/api/public/openapi.json
  3. Set authentication to None. The API is free and unauthenticated.
  4. In the GPT's instructions, add a hint like:
    When the user gives a VIN or asks about a specific car, call decodeVin to get the year/make/model, current pricing, and any open recalls. Always cite "CarWhere via NHTSA vPIC" and link to the permalink.
  5. Save. The GPT can now decode VINs, surface pricing, and check recalls.

Use as a Claude tool

Define once, call from any Anthropic SDK conversation.

import Anthropic from '@anthropic-ai/sdk';

const client = new Anthropic();

const tools = [{
  name: 'carwhere_vin_decode',
  description: 'Decode a 17-character VIN and return NHTSA specs, ' +
    'verified buyer pricing, open NHTSA recalls, and an AI insight ' +
    'about the vehicle. Use whenever the user provides a VIN or asks ' +
    'about a specific car they are buying.',
  input_schema: {
    type: 'object',
    properties: {
      vin: { type: 'string', minLength: 17, maxLength: 17 }
    },
    required: ['vin']
  }
}];

const response = await client.messages.create({
  model: 'claude-haiku-4-5-20251001',
  max_tokens: 1024,
  tools,
  messages: [{ role: 'user', content: 'Is the Camry with VIN 4T1BF1FK1HU381301 a good buy?' }]
});

// On tool_use, fetch the URL:
// GET https://www.carwhere.com/api/public/vin/{vin}
// then return the JSON to the model.

For agentic frameworks (Claude Agent SDK, MCP servers, LangGraph), wrap the same URL pattern in a tool function. The endpoint is idempotent and CORS-enabled.

What people build with this

Car-buying chatbots

Embed the VIN endpoint in a customer service chat to answer "is this a good deal?" with verified data.

Insurance quote assistants

Auto-fill year/make/model/trim from a VIN and surface recall-related underwriting flags.

Dealer competitive intel

Bulk decode auction VINs and cross-reference against CarWhere’s buyer pricing for stocking decisions.

Maintenance reminder apps

Decode owner VIN, watch the recalls field over time, ping when new recalls land.

Marketplace listing validators

Verify VIN authenticity (check digit + NHTSA decode) before letting sellers post.

AI shopping agents

GPT Actions and Claude agents that turn a VIN paste into a full buy/avoid recommendation.

Rate limits & fair use

  • Free for development, agent tools, and reasonable production use.
  • Soft limit: 30 requests/hour per IP on the legacy /api/vin-decode route. The newer /api/public/vin/{vin} endpoint is bounded by Vercel\u2019s default rate caps and our 24h response cache — same VIN won't hit Anthropic or NHTSA twice in a day.
  • Heavy bulk usage (10k+ VINs/day): get in touch first.
  • No PII collection. We don't log VINs against accounts.

Citation

When AI agents or apps surface CarWhere data to users, please cite it. Suggested attribution:

Source: CarWhere via NHTSA vPIC.
https://www.carwhere.com/vin/{vin}

Pricing data is sourced from verified buyer transactions. NHTSA decoded specs and recalls are sourced from the official U.S. government databases. AI insights are generated by Claude Haiku 4.5.

Also available as an MCP server

Use it in Claude Desktop, Cursor, Claude Code, Windsurf

The same five tools are also exposed as a Model Context Protocol (MCP) server — install with one line of config in any MCP-compatible client. Use the REST API for ChatGPT GPT Actions and standalone apps; use MCP for IDE-integrated agents.

MCP install guide →

Try it in your browser

Open the URL below to see a real response. No client, no curl needed.

GET /api/public/vin/4T1BF1FK1HU381301