API Documentation

Access comprehensive auction data for classic and vintage vehicles through our RESTful API.

Getting Started

Base URL

https://api.oldcarsdata.com

Authentication

Most endpoints require authentication using an API key. Include your API key in the request headers:

Authorization: Bearer YOUR_API_KEY

The /makes and /models endpoints are public and do not require authentication. They return normalized make and model names you should use when calling /auctions. All other REST endpoints require a valid API key.

For MCP, use list_makes and list_models the same way: those tools do not count toward your plan query limit (see Rate Limits below).

Getting an API Key

To get an API key, you need to:

  1. Sign in or create an account
  2. Subscribe to an active plan
  3. Generate API keys in your profile

Keep your API key secure. Do not share it publicly or commit it to version control.

Response Format

All API responses are returned in JSON format. Successful responses include a data field containing the requested information, and paginated endpoints include a meta field with pagination details:

json
{
  "data": [ ... ],
  "meta": {
    "total": 150,
    "page": 1,
    "limit": 50,
    "total_pages": 3
  }
}

Error responses follow a consistent format with an error type and a message describing what went wrong:

json
{
  "error": "Validation Error",
  "message": "make: String must contain at least 1 character(s)"
}

Data Updates

Auction data is updated daily around 12pm ET / 9am PT.

Historical auction data is available dating back to 2018.

Rate Limits

Rate limits are applied per API key (or OAuth session for MCP) based on your subscription plan. Counts are metered requests — calls that consume your quota for the billing period:

PlanMetered requests per billing period
Starter10
1k1,000
10k10,000

Excluded from metered requests (do not count toward your query limit):

  • REST: GET /makes, GET /models
  • MCP: list_makes, list_models when they are the only tool invocations in that HTTP request. If a single MCP request batches multiple tools and any of them is metered (for example search_auctions or get_price_stats), that request counts as one metered call.

Everything else counts, including GET /auctions, GET /stats, MCP search_auctions, MCP get_price_stats, and other MCP JSON-RPC methods (for example protocol handshake calls).

Rate limit headers are included on authenticated responses:

  • X-RateLimit-Limit — Maximum requests allowed
  • X-RateLimit-Remaining — Remaining requests in current window
  • X-RateLimit-Reset — Timestamp when the rate limit resets

Error Handling

The API uses standard HTTP status codes:

CodeMeaning
200Success
400Bad Request (validation errors)
401Unauthorized (invalid or missing API key)
403Forbidden (plan does not include this endpoint)
429Too Many Requests (rate limit exceeded)
500Internal Server Error
503Service Unavailable

400 — Validation Error:

json
{
  "error": "Validation Error",
  "message": "make: String must contain at least 1 character(s)",
  "details": {
    "make": ["String must contain at least 1 character(s)"]
  }
}

401 — Unauthorized:

json
{
  "error": "Unauthorized",
  "message": "API key is required. Provide it via Authorization: Bearer <key> header"
}

429 — Rate Limit Exceeded:

json
{
  "error": "Rate Limit Exceeded",
  "message": "You have exceeded your plan limit of 1000 requests. Resets on 2025-04-01T00:00:00.000Z."
}

Data Sources

Auction data is aggregated from major collector car auction platforms:

  • Bring a Trailer — Online auctions for enthusiast vehicles
  • Cars & Bids — Modern enthusiast car auctions
  • Hagerty — Collector car auctions and valuations
  • PCAR Market — Porsche-specific auctions
  • All Collector Cars — Classic car marketplace
  • Gooding & Co — Premium collector car auctions
  • RM Sotheby's — Premium collector car auctions

Data is normalized across sources with consistent make/model names, standardized colors, and structured vehicle details.

Available Endpoints

Browse the available endpoints in the navigation sidebar to view detailed documentation, request parameters, response formats, and code examples.

Summarize this page with: