TL;DR ⚡ Bring a Trailer publishes no data API and no export, so building a collector-car comps dataset means scraping the auction pages — bid histories and all. The Bring a Trailer Auctions Scraper returns typed rows (make, model, sold price, VIN, mileage, bid history) for $1.50 per 1,000 results. Point it at a listing or category; get back structured JSON.
Bring a Trailer (BaT) has become the reference marketplace for enthusiast and collector cars — final sale prices there genuinely move the market. If you appraise, insure, or trade classics, those closed-auction numbers are the comps everyone wants.
Does Bring a Trailer have an API? 🔌
No. BaT offers no public data API and no bulk download. Everything — the sold price, the VIN, the mileage, the full bid-by-bid history — lives inside rendered auction pages. Collecting it at scale means crawling those pages reliably while the site actively discourages bots.
The Actor absorbs that: browser-grade TLS fingerprints, residential proxy rotation, retries on transient blocks, and per-item fault isolation so one bad listing never sinks the whole run.
What data can you pull from a BaT auction?
Each result is a validated auction record:
| Field | Example |
|---|---|
make |
Porsche |
model |
911 Carrera (964) |
year |
1990 |
sold_price |
78500 |
currency |
USD |
vin |
WP0AB2965LS... |
mileage |
62400 |
bid_count |
41 |
sold_date |
2026-07-22 |
status |
Sold |
The bid history matters: it tells you not just the closing number but how demand built toward it.
Who buys Bring a Trailer data?
- Appraisers — build comps from real closed auctions, not asking prices.
- Insurers — set agreed values on defensible market evidence.
- Classic-car dealers — spot which models and years are heating up before they buy.
How do I run the Bring a Trailer scraper?
Point it at an auction listing or a make/model category:
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"startUrls": [
{"url": "https://bringatrailer.com/porsche/964-911/"}
],
"maxResults": 300,
}
run = client.actor("DevilScrapes/bring-a-trailer-auctions-scraper").call(run_input=run_input)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["year"], row["make"], row["model"], row["sold_price"], row["mileage"])
Pay-per-result keeps a comps pull for one model predictable — cents, not a subscription.
FAQ
Is scraping Bring a Trailer legal?
Publicly visible auction results are generally collectible, but you're responsible for how you use them — follow the site's terms and applicable law, and don't republish copyrighted media. Not legal advice.
Does it include the full bid history?
Yes — the Actor captures bid count and closing details so you can see how each sale developed.
Will I get blocked?
Blocks are the Actor's job: browser fingerprints, residential proxies, and automatic retries run under the hood.
What does it cost?
$1.50 per 1,000 results, pay-per-result. No monthly fee.
Can I collect one model across years?
Yes — pass the make/model category URL and raise maxResults to sweep the archive.
Ready to turn BaT into a comps table? 🏁 Run the Bring a Trailer Auctions Scraper on Apify →
More scrapers from Devil Scrapes: apify.com/DevilScrapes
Top comments (0)