1,795 vehicles · cars · motorcycles · boats

The Vehicle Specifications API on one schema, one UUID.

Query make, model, year, trim, body, drivetrain, engine and doors across cars, motorcycles and boats — a pre-cleaned schema with EPA economy and live NHTSA recalls joined onto the same record.

Free plan: 100 API calls/mo — no card.

api.vehdb.com
GET /v1/cars?make=Ford&model=F-150&year=2025
{ "data": [ {
  "uuid": "7c9e6f00-…",
  "make": "Ford", "model": "F-150", "year": 2025,
  "trim": "XLT", "body": "Pickup",
  "drive_type": "4WD", "engine_cylinders": 6,
  "num_doors": 4, "epa_class": "Standard Pickup 4WD" } ] }
# Same schema, every vehicle type
GET /v1/motorcycles "motorcycle_type"
GET /v1/boats → "hp": 250, "hull": "V"

Key endpoints

One consistent JSON shape across every vehicle type. Records are addressed by UUID.

GET /v1/cars List cars with filtering and pagination — make, model, year range, body, trim, fuel type, drive type.
GET /v1/cars/{uuid} Single car by UUID — full specs: engine cylinders, displacement, doors, transmission, epa_class, passenger and cargo volume.
GET /v1/motorcycles List motorcycles — make, model, year, vehicle_type and motorcycle_type.
GET /v1/boats List boats — make, model, year, length, beam, weight_lb, hp, engines, hull, model_type and fuel_type.

Base URL: https://api.vehdb.com/v1

Specification fields

A pre-cleaned, normalized schema — the same field names and types on every record.

Field Type Description
make string Manufacturer name (cars, motorcycles, boats)
model string Model name
year integer Model year
trim string Trim level (cars)
body string Body type — Sedan, SUV, Pickup, Coupe, Hatchback (cars)
drive_type string Drivetrain — FWD, RWD, AWD, 4WD (cars)
engine_cylinders integer Cylinder count (cars)
engine_cc / engine_cid integer Engine displacement in cc or cubic inches (cars)
num_doors integer Door count (cars)
transmission string Transmission description (cars)
motorcycle_type string Motorcycle category — e.g. Cruiser, Sport (motorcycles)
length / beam / hp / hull mixed Hull length, beam, horsepower and hull type (boats)

Cleaner than raw vPIC, joined to more

Specs identify the vehicle. A normalized schema and joined enrichment mean you stop stitching sources together.

Pre-cleaned schema

Consistent field names and types across cars, motorcycles and boats — no sparse vPIC labels to normalize, no per-make quirks to handle in your code.

Enrichment on one UUID

EPA fuel economy and live NHTSA recalls hang off the same stable UUID, so one identifier answers specs, cost and safety in one place.

One shape, every type

The same data + meta envelope serves cars, motorcycles and boats — write your integration once, point it at any endpoint.

See the Cars API, our data sources, and the vehicle data glossary.

Example response

A consistent data + meta shape on every list endpoint.

GET /v1/cars?make=Honda&model=Civic&year=2025
{
  "data": [
    {
      "uuid": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
      "make": "Honda",
      "model": "Civic",
      "year": 2025,
      "trim": "Sport",
      "body": "Sedan",
      "drive_type": "FWD",
      "fuel_type_name": "GASOLINE",
      "engine_cylinders": 4,
      "engine_cc": 1996,
      "num_doors": 4,
      "transmission": "Automatic (CVT)",
      "epa_class": "Compact Cars",
      "passenger_volume": 99,
      "cargo_volume": 15
    }
  ],
  "meta": { "current_page": 1, "last_page": 1, "per_page": 20, "total": 1 }
}

Vehicle Specifications API FAQ

Common questions about VehDB's specs API.

For cars: make, model, year, trim, body, drive_type, fuel_type_name, engine_cylinders, displacement (cc/cid), num_doors, transmission, epa_class, passenger_volume and cargo_volume. For motorcycles: make, model, year, vehicle_type and motorcycle_type. For boats: make, model, year, length, beam, weight_lb, hp, engines, hull, model_type and fuel_type. Every record is addressed by a stable UUID.
vPIC is a VIN-decode dataset with inconsistent labels, sparse fields and no economy, recall or fitment data. The VehDB specs API ships a pre-cleaned, normalized schema with consistent field names and types across every vehicle, plus EPA economy and live NHTSA recalls joined onto the same UUID — so you do not stitch sources together yourself.
Yes. The same schema and UUID model cover 562 cars, 341 motorcycles and 308 boats. Cars carry full engine and EPA detail; motorcycles return vehicle_type and motorcycle_type; boats return length, beam, weight, horsepower, engines, hull and fuel type.
Yes. Use GET /v1/cars/{uuid} and the equivalent motorcycle and boat endpoints to return a single vehicle with all specification fields. The UUID is stable, so it is safe to store as a foreign reference in your own system.
Sign up for a VehDB account — every plan includes API access and the free tier gives you 100 calls per month with no card required. Create a Bearer token in the dashboard and make GET requests to /v1/cars, /v1/motorcycles or /v1/boats with it in the Authorization header.

Also see the Cars, Motorcycles and Boats APIs, try it from the MCP server, or read the docs.

AI-NATIVE · MCP SERVER

Your AI agent's vehicle-data tools —not glue code.

VehDB ships a native Model Context Protocol server. Claude, Cursor or any MCP client queries cars, recalls, fuel economy and tire fitment as first-class tools — no wrappers, no scraping, no glue code to maintain.

  • Native MCP tools — search_vehicles, tire_sizes_for_vehicle, recalls, my_lists — callable by Claude, Cursor or any agent.
  • OAuth2 for AI providers plus simple Bearer tokens. Same auth, same data as the REST API and workspace.
  • No scraping, no function-calling boilerplate, no schema drift — the agent gets typed, documented tools.
claude_desktop_config.json
{ "mcpServers": {
    "vehdb": { "url": "https://mcp.vehdb.com/mcp" }
  } }
# the agent calls a typed tool, not your scraper
tool search_vehicles(make="Toyota", year=2026)
tool tire_sizes_for_vehicle(uuid) → "235/65R17"

Build on 1,795 vehicle specs.

Make, model, year, trim, body, drivetrain and engine across cars, motorcycles and boats — one schema, one UUID, enrichment joined. Free tier: 100 calls/mo, no card.

Operated by Savas OÜ (Tallinn, Estonia — EU) · GDPR-compliant · Billing by Stripe · Terms · Privacy