Get Auctions

Retrieve paginated auction listings with filtering and sorting options. Starter plan users are limited to the latest 20 auctions.

GET https://api.oldcarsdata.com/auctions

How to choose query parameters

Mode A — Browse by make/model: You need make (and optionally model). Use GET /makes and GET /models for exact strings. On MCP, use list_makes and list_models the same way.

Mode B — VIN lookup: Pass vin only (exact raw match as stored). make is not required. You can still add status, source, keyword, year/price filters, etc.

Mode C — Seller lookup: Pass seller_username only (exact match). make is not required. Combine with other filters as needed.

Reference calls to /makes and /models do not count toward your API query limit. GET /auctions does count.

Authentication

This endpoint requires authentication. Include your API key in the Authorization header:

Authorization: Bearer YOUR_API_KEY

Starter Plan Limitation: Starter plan users are limited to the latest 20 auctions regardless of filters or pagination. Upgrade to a paid plan for full historical data access.

Rules

  • At least one anchor: You must supply make or a non-empty vin or a non-empty seller_username. If none of these are provided, the request fails validation (400).
  • vin / seller_username: Exact string match against the stored value (not normalized). Whitespace-only values do not count as an anchor; you still need make in that case.
  • Combining filters: status, source, keyword, year_min / year_max, price_min / price_max, sort, direction, page, and limit apply in all modes. Example: ?vin=...&status=sold or ?seller_username=...&source=bringatrailer.
  • model without make: Allowed when using vin or seller_username; results must satisfy every filter you send (including model if present).

Request Parameters

FieldTypeRequiredDescription
AuthorizationheaderYesBearer token with your API key: Bearer YOUR_API_KEY
makestringConditionalRequired unless vin or seller_username is provided. Exact normalized make from Get Makes.
vinstringConditionalExact VIN (raw). When provided (non-empty), make is not required.
seller_usernamestringConditionalExact seller username. When provided (non-empty), make is not required.
modelstringNoNormalized model from Get Models for this make (Mode A). Optional in other modes.
year_minintegerNoMinimum year filter (inclusive)
year_maxintegerNoMaximum year filter (inclusive)
price_minintegerNoMinimum price filter (inclusive)
price_maxintegerNoMaximum price filter (inclusive)
statusenumNoAuction status filter. Options: "sold", "bid to", "reserve not met", "canceled", "unknown"
sourcestringNoSource platform filter. Examples: bringatrailer, carsandbids, hagerty, pcarmarket, acc, allcollectorcars, gooding, rmsothebys
keywordstringNoSearch keyword to match in title and description (case-insensitive)
sortenumNoSort field. Options: "date" (default), "price", "year", "bids"
directionenumNoSort direction. Options: "asc", "desc" (default)
pageintegerNoPage number for pagination. Minimum: 1, default: 1
limitintegerNoNumber of results per page. Range: 1-100, default: 50

Code Examples

Mode A — Make and model (cURL)

bash
curl "https://api.oldcarsdata.com/auctions?make=Toyota&model=Land+Cruiser&limit=10" \
  -H "Authorization: Bearer YOUR_API_KEY"

Mode B — VIN only (cURL)

bash
curl "https://api.oldcarsdata.com/auctions?vin=WP0AB0911FS100123" \
  -H "Authorization: Bearer YOUR_API_KEY"

Mode C — Seller only (cURL)

bash
curl "https://api.oldcarsdata.com/auctions?seller_username=classic_seller" \
  -H "Authorization: Bearer YOUR_API_KEY"

JavaScript (make/model)

javascript
const response = await fetch(
  'https://api.oldcarsdata.com/auctions?make=Toyota&model=Land+Cruiser&limit=10',
  {
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY'
    }
  }
);
const data = await response.json();

JavaScript (VIN)

javascript
const params = new URLSearchParams({ vin: 'WP0AB0911FS100123' });
const response = await fetch(
  `https://api.oldcarsdata.com/auctions?${params}`,
  { headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
const data = await response.json();

JavaScript (seller)

javascript
const params = new URLSearchParams({ seller_username: 'classic_seller' });
const response = await fetch(
  `https://api.oldcarsdata.com/auctions?${params}`,
  { headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
const data = await response.json();

Python (make/model)

python
import requests

response = requests.get(
    'https://api.oldcarsdata.com/auctions',
    params={'make': 'Toyota', 'model': 'Land Cruiser', 'limit': 10},
    headers={'Authorization': 'Bearer YOUR_API_KEY'}
)
data = response.json()

Python (VIN)

python
import requests

response = requests.get(
    'https://api.oldcarsdata.com/auctions',
    params={'vin': 'WP0AB0911FS100123'},
    headers={'Authorization': 'Bearer YOUR_API_KEY'}
)
data = response.json()

Python (seller)

python
import requests

response = requests.get(
    'https://api.oldcarsdata.com/auctions',
    params={'seller_username': 'classic_seller'},
    headers={'Authorization': 'Bearer YOUR_API_KEY'}
)
data = response.json()

Success Response (200)

Auctions retrieved successfully.

json
{
  "data": [
    {
      "id": 12345,
      "source": "bringatrailer",
      "url": "https://bringatrailer.com/listing/...",
      "title": "1970 Toyota Land Cruiser FJ40",
      "auction_status": "sold",
      "price": 45000,
      "currency": "USD",
      "auction_end_date": "2024-01-15",
      "mileage": 85000,
      "vin": "FJ40123456",
      "title_status": "clean",
      "city": "Los Angeles",
      "state": "CA",
      "zip": "90001",
      "seller_username": "seller123",
      "year": 1970,
      "has_reserve": true,
      "listing_make": "Toyota",
      "listing_model": "Land Cruiser",
      "engine": "4.2L I6",
      "drivetrain": "4WD",
      "transmission": "Manual",
      "body_style": "SUV",
      "exterior_color": "Beige",
      "standard_exterior_color": "Beige",
      "interior_color": "Brown",
      "standard_interior_color": "Brown",
      "seller_type": "private",
      "ocd_make_name": "Toyota",
      "ocd_model_name": "Land Cruiser",
      "description": "Well-maintained FJ40...",
      "ownership_history": "Original owner",
      "modifications": ["Lift kit", "Aftermarket wheels"],
      "known_flaws": ["Minor rust on rear bumper"],
      "recent_service_history": ["Oil change 2023", "Brake service 2023"],
      "listing_details": ["Clean title", "No accidents"],
      "created_at": "2024-01-10T10:00:00Z",
      "featured_image_url": "https://bringatrailer.com/wp-content/uploads/2024/01/1970_toyota_land-cruiser_fj40_12345.jpg",
      "stats": {
        "views": 1250,
        "watches": 45,
        "likes": 12,
        "bids": 23
      }
    }
  ],
  "meta": {
    "total": 150,
    "page": 1,
    "limit": 10,
    "total_pages": 15
  }
}

Response Fields

FieldTypeDescription
dataarrayArray of auction objects
data[].idnumberUnique auction identifier
data[].sourcestring | nullSource platform name
data[].urlstring | nullURL to the auction listing
data[].titlestring | nullAuction listing title
data[].auction_statusenumStatus: "sold", "bid to", "reserve not met", "canceled", "unknown"
data[].pricenumber | nullFinal sale price or bid amount
data[].currencystring | nullISO 4217 currency code (e.g. "USD", "CAD")
data[].auction_end_datestring | nullAuction end date (YYYY-MM-DD format)
data[].mileagenumber | nullVehicle mileage
data[].vinstring | nullVehicle identification number
data[].title_statusstring | nullTitle status (e.g., "clean", "salvage")
data[].citystring | nullVehicle location city
data[].statestring | nullVehicle location state
data[].zipstring | nullVehicle location ZIP code
data[].seller_usernamestring | nullSeller username
data[].yearnumber | nullVehicle model year
data[].has_reserveboolean | nullWhether the auction had a reserve price
data[].listing_makestring | nullMake name from listing
data[].listing_modelstring | nullModel name from listing
data[].ocd_make_namestring | nullNormalized make name
data[].ocd_model_namestring | nullNormalized model name
data[].enginestring | nullEngine specification
data[].drivetrainstring | nullDrivetrain type
data[].transmissionstring | nullTransmission type
data[].body_stylestring | nullVehicle body style
data[].exterior_colorstring | nullExterior color as listed
data[].standard_exterior_colorstring | nullNormalized exterior color
data[].interior_colorstring | nullInterior color as listed
data[].standard_interior_colorstring | nullNormalized interior color
data[].seller_typestring | nullSeller type (e.g., "private", "dealer")
data[].descriptionstring | nullListing description text
data[].ownership_historystring | nullOwnership history information
data[].modificationsarrayArray of modification descriptions
data[].known_flawsarrayArray of known flaw descriptions
data[].recent_service_historyarrayArray of recent service history entries
data[].listing_detailsarrayArray of listing detail strings
data[].created_atstring | nullRecord creation timestamp (ISO 8601)
data[].featured_image_urlstring | nullURL to the featured image
data[].statsobjectAuction engagement statistics
data[].stats.viewsnumber | nullNumber of views
data[].stats.watchesnumber | nullNumber of watchers
data[].stats.likesnumber | nullNumber of likes/comments
data[].stats.bidsnumber | nullNumber of bids
metaobjectPagination metadata
meta.totalnumberTotal number of matching auctions
meta.pagenumberCurrent page number
meta.limitnumberNumber of results per page
meta.total_pagesnumberTotal number of pages

Error Responses

FieldTypeDescription
errorstringError type identifier (e.g., "Validation Error", "HTTP Error")
messagestringHuman-readable error message
detailsobjectValidation error details (only on 400 responses). Keys are field names, values are arrays of error messages.

400 — Validation Error:

json
{
  "error": "Validation Error",
  "message": "make: make is required unless vin or seller_username is provided",
  "details": {
    "make": ["make is required unless vin or seller_username is provided"]
  }
}

401 — Unauthorized:

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

Summarize this page with: