Bring a Trailer API endpoint
Pages through Bring a Trailer's archive of completed collector-vehicle auctions with final bids and sold or reserve-not-met results. Filter by make or model (ids from bringatrailer_makes), keyword, category, decade, origin, country, result, premium or no-reserve type, recency, model-year range, maximum bid and sort order. Every filter value is listed by bringatrailer_filters.
/bringatrailer/resultsPages through Bring a Trailer's (bringatrailer.com) archive of completed collector-vehicle auctions: about 270,000 listings with their final bid and a sold or reserve_not_met result. Every parameter is optional and they combine as an AND.
make is a make name exactly as listed by bringatrailer-makes (for example Porsche). model_id is a numeric models[].model_id from the same endpoint. The two are mutually exclusive: a make filters by keyword text and a model by its keyword-page id, which is why a model id cannot be guessed.
q is a keyword that must appear in the listing and exclude a keyword that must not. Both are at most 100 characters.
category, era and origin take comma-separated ids from bringatrailer-filters (the oldest decade bucket has the id pre-1900, not a number) (categories[].id, eras[].id, origins[].id), for example category=434,560. country takes comma-separated ISO 3166-1 alpha-2 codes from regions[].countries[].id. An unknown category, era or origin id returns zero results; an unknown country is rejected with 400.
result is sold or unsold (reserve not met). type is premium or noreserve. recency is the closing window: 7D, 30D, 1Y, 2Y or 5Y (omit for all time). min_year and max_year bound the model year (1885 to 2100) and max_bid is a maximum final bid in USD.
sort is recent (default), oldest, popular or highest_bid. page is 1-based (1 to 10000) and per_page is 10 to 50 (default 36).
Notable response behavior:
status is sold, reserve_not_met, withdrawn (BaT pulled the auction) or ended (an old auction with no sale record, for example Auction closed on 8/13/2014); result_text is the site's own wording (for example Sold for USD $127,000 on 11/1/2026) and ends_at is the close time in UTC.year, era, categories or country; those fields appear only on live auctions (bringatrailer-live) and are omitted here. Use bringatrailer-listing for full detail.model_ids are the keyword-page ids the listing is tagged with and can be passed back as model_id.total: 0 and auctions: [], not an error. Requesting a page past the last one also returns total: 0 (the upstream reports no total there), so use total_pages from an earlier page to know where the archive ends.price is 0 when no bid is recorded (old auctions, withdrawn auctions).Crawl-delay: 1); callers paging in a loop should pace themselves.| Field | Filled in, of 40 checked | Values in the sample |
|---|---|---|
| id | 40 | |
| title | 40 | “2014 Porsche 911 Carrera Coupe 7-Speed” and 39 other values |
| url | 40 | bringatrailer.com |
| status | 40 | sold in all 40 |
| price | 40 | 1,300 to 224,000, median 59,000 |
| price_text | 40 | “USD $48,000” and 37 other values |
| currency | 40 | USD in all 40 |
| result_text | 40 | “Sold for USD $48,000 on 11/4/2026” and 38 other values |
| ends_at | 40 | 2026-11-03 to 2026-11-04 |
| country_code | 40 | |
| no_reserve | 40 | true in 14 of 40 |
| premium | 40 | true in 0 of 40 |
| repeat | 40 | true in 3 of 40 |
| excerpt | 40 | median 344 characters |
| thumbnail_url | 40 | bringatrailer.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| make | string | No | Make name from bringatrailer_makes; mutually exclusive with model_id | Porsche | |
| model_id | integer | No | Numeric model id from bringatrailer_makes; mutually exclusive with make | 65064925 | |
| q | string | No | Keyword that must appear in the listing | turbo | |
| exclude | string | No | Keyword that must not appear in the listing | ||
| category | string | No | Comma-separated category ids from bringatrailer_filters | 434 | |
| era | string | No | Comma-separated decade ids from bringatrailer_filters | 1990 | |
| origin | string | No | Comma-separated origin ids from bringatrailer_filters | 7 | |
| country | string | No | Comma-separated ISO 3166-1 alpha-2 country codes | US,CA | |
| result | string | No | Auction result Allowed values: sold, unsold. | ||
| type | string | No | Auction type Allowed values: premium, noreserve. | ||
| recency | string | No | Closed within Allowed values: 7D, 30D, 1Y, 2Y, 5Y. | ||
| min_year | integer | No | Minimum model year Minimum: 1885. Maximum: 2100. | ||
| max_year | integer | No | Maximum model year Minimum: 1885. Maximum: 2100. | ||
| max_bid | integer | No | Maximum final bid in USD Minimum: 0. | ||
| sort | string | No | Sort order Allowed values: recent, oldest, popular, highest_bid. | ||
| page | integer | No | 1-based page Minimum: 1. | ||
| per_page | integer | No | Results per page Minimum: 10. Maximum: 50. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/bringatrailer/results?q=coffee&country=us&result=sold&type=premium&recency=7D&sort=recent&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"data": {
"total": 469,
"page": 1,
"per_page": 10,
"total_pages": 47,
"auctions": [
{
"id": 124715253,
"title": "RoW 1983 Porsche 911 Turbo Coupe EV Conversion",
"url": "https://bringatrailer.com/listing/1983-porsche-911-turbo-10/",
"status": "sold",
"price": 127000,
"price_text": "USD $127,000",
"currency": "USD",
"result_text": "Sold for USD $127,000 on 11/1/2026",
"ends_at": "2026-11-01T18:59:53Z",
"country_code": "US",
"no_reserve": false,
"premium": false,
"repeat": false,
"excerpt": "This 1983 Porsche 911 Turbo is a rest-of-world coupe that was imported to the US from Germany in 1985 and was rebuilt and modified with an EV conversion after being acquired by the seller in 2020. The exterior and suspension work was led by Coachwerks Restoration of Victoria, British Columbia, and included a bare-metal repaint in Guards Red along…",
"thumbnail_url": "https://bringatrailer.com/wp-content/uploads/2026/10/DSC04944-scaled-copy-2026-10-16-se7-e58c914aa46138545bb3f437fccc8369.jpg?w=470&h=318&crop=1"
}
]
},
"msg": "OK"
}Request schema
No body schema
Response schema
#/definitions/bringatrailer.resultsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | bringatrailer.ResultsResponse | No | ||||
| data.auctions | array | No | Auction record, 23 fields: categories, comments, country, country_code, currency, ends_at, era, excerpt, id, model_ids, no_reserve, premium and 11 more. Described under List live Bring a Trailer auctions API. | |||
| data.page | integer | No | ||||
| data.per_page | integer | No | ||||
| data.total | integer | No | ||||
| data.total_pages | integer | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/bringatrailer/results?q=coffee&country=us&result=sold&type=premium&recency=7D&sort=recent&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"