Get Live Auctions
List currently active Bring a Trailer collector car auctions. Use this endpoint for live market discovery, ending-soon pages, watchlists, and polling workflows.
GET https://api.oldcarsdata.com/auctions/live
Beta: Live auctions are currently in beta and limited to Bring a Trailer (
bringatrailer) listings.
This endpoint only returns listings where auction_status is active. No anchor parameter is required, so you can request the active BaT market or narrow by make, model, VIN, seller, source, keyword, year, price, ending window, or update time.
Responses include live-only fields such as auction_end_at, image_url, and updated_at. Responses are privately cached for 15 seconds.
Authentication
This endpoint requires authentication. Include your API key in the Authorization header:
Authorization: Bearer YOUR_API_KEYStarter Plan Limitation: Starter plan users are limited to the latest 20 live auctions regardless of filters or pagination. Upgrade to a paid plan for full live inventory access.
Request Parameters
| Field | Type | Required | Description |
|---|---|---|---|
Authorization | header | Yes | Bearer token with your API key: Bearer YOUR_API_KEY |
make | string | No | Exact normalized make from Get Makes. |
model | string | No | Exact normalized model from Get Models. |
vin | string | No | Exact VIN match. |
seller_username | string | No | Exact seller username match. |
year_min | integer | No | Minimum year filter (inclusive). |
year_max | integer | No | Maximum year filter (inclusive). |
price_min | integer | No | Minimum current bid or listed price (inclusive). |
price_max | integer | No | Maximum current bid or listed price (inclusive). |
source | string | No | Source platform filter. Live auctions are currently limited to bringatrailer. |
keyword | string | No | Search keyword to match in title and description (case-insensitive). |
ending_after | date-time | No | Only include auctions ending at or after this ISO 8601 timestamp. |
ending_before | date-time | No | Only include auctions ending at or before this ISO 8601 timestamp. |
updated_since | date-time | No | Only include auctions updated at or after this ISO 8601 timestamp. Useful for polling. |
sort | enum | No | Sort field. Options: "ending" (default), "created", "updated", "price", "year", "bids". |
direction | enum | No | Sort direction. Options: "asc" (default), "desc". |
page | integer | No | Page number for pagination. Minimum: 1, default: 1. |
limit | integer | No | Number of results per page. Range: 1-100, default: 50. |
Code Examples
Ending soon (cURL)
curl "https://api.oldcarsdata.com/auctions/live?sort=ending&direction=asc&limit=10" \
-H "Authorization: Bearer YOUR_API_KEY"Live Porsche auctions updated recently (cURL)
curl "https://api.oldcarsdata.com/auctions/live?make=Porsche&updated_since=2026-05-04T00:00:00Z" \
-H "Authorization: Bearer YOUR_API_KEY"JavaScript
const params = new URLSearchParams({
make: 'Porsche',
sort: 'ending',
direction: 'asc',
limit: '10',
});
const response = await fetch(
`https://api.oldcarsdata.com/auctions/live?${params}`,
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
}
);
const data = await response.json();Python
import requests
response = requests.get(
'https://api.oldcarsdata.com/auctions/live',
params={'make': 'Porsche', 'sort': 'ending', 'direction': 'asc', 'limit': 10},
headers={'Authorization': 'Bearer YOUR_API_KEY'}
)
data = response.json()Success Response (200)
Live auctions retrieved successfully.
{
"data": [
{
"id": 98765,
"source": "bringatrailer",
"url": "https://bringatrailer.com/listing/...",
"title": "1997 Porsche 911 Carrera Coupe",
"auction_status": "active",
"price": 72000,
"currency": "USD",
"auction_end_date": "2026-05-06",
"auction_end_at": "2026-05-06T19:30:00Z",
"mileage": 42000,
"vin": "WP0AA2997VS320123",
"title_status": "clean",
"city": "Portland",
"state": "OR",
"seller_username": "aircooled-market",
"year": 1997,
"has_reserve": true,
"listing_make": "Porsche",
"listing_model": "911 Carrera",
"ocd_make_name": "Porsche",
"ocd_model_name": "911",
"image_url": "https://bringatrailer.com/wp-content/uploads/2026/05/porsche-911.jpg",
"featured_image_url": "https://bringatrailer.com/wp-content/uploads/2026/05/porsche-911-featured.jpg",
"created_at": "2026-05-01T15:12:00Z",
"updated_at": "2026-05-04T02:45:00Z",
"stats": {
"views": 14320,
"watches": 256,
"likes": 42,
"bids": 18
},
"modifications": [],
"known_flaws": [],
"recent_service_history": [],
"listing_details": []
}
],
"meta": {
"total": 42,
"page": 1,
"limit": 10,
"total_pages": 5
}
}Response Fields
Live auction responses include every field from Get Auctions, plus:
| Field | Type | Description |
|---|---|---|
data[].auction_end_at | string | null | Auction ending timestamp in ISO 8601 format when available. |
data[].image_url | string | null | Primary live listing image URL when available. |
data[].updated_at | string | null | Last update timestamp in ISO 8601 format. Use with updated_since for polling. |
Error Responses
| Field | Type | Description |
|---|---|---|
error | string | Error type identifier (e.g., "Validation Error", "HTTP Error"). |
message | string | Human-readable error message. |
details | object | Validation error details (only on 400 responses). Keys are field names, values are arrays of error messages. |
400 — Validation Error:
{
"error": "Validation Error",
"message": "ending_after: Invalid ISO datetime",
"details": {
"ending_after": ["Invalid ISO datetime"]
}
}401 — Unauthorized:
{
"error": "Unauthorized",
"message": "API key is required. Provide it via Authorization: Bearer <key> header"
}