Bring a Trailer Auctions & Results Scraper
Pricing
from $2.72 / 1,000 item extracteds
Bring a Trailer Auctions & Results Scraper
Extract public live Bring a Trailer auctions and displayed completed results with vehicle identity, bids, prices, status, country, timing, images, and source URLs.
Pricing
from $2.72 / 1,000 item extracteds
Rating
0.0
(0)
Developer
Automation Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Extract public Bring a Trailer auctions and displayed completed results as structured vehicle-market records.
The Actor captures vehicle identity, live bids or final displayed prices, auction status, country, timing, images, descriptions, and canonical source URLs.
Use it for recurring collector-market inventory tracking, appraisal research, comparable-price analysis, and data pipelines.
What does this Bring a Trailer scraper do?
The Actor supports three useful record scopes:
- current public live auctions;
- displayed completed auction results;
- a balanced snapshot of both live auctions and results.
Live inventory is read from public server-rendered auction data.
Completed results use the public data route called by Bring a Trailer's results page.
No Bring a Trailer login is required.
The Actor does not place bids, watch vehicles, message sellers, or access private account data.
Who is it for?
Collector-car analysts can build recurring snapshots of supply, bids, and final results.
Appraisers and valuation teams can collect public comparable-sale records for further review.
Dealers can watch live inventory and inspect no-reserve or high-value vehicles.
Researchers can export public auction records into spreadsheets or warehouses.
Automation teams can schedule runs and trigger downstream webhooks when a dataset is ready.
Why use this Actor?
Bring a Trailer combines fast-moving live auctions with a large displayed results catalog.
Manual copying is slow and inconsistent.
This Actor normalizes both surfaces into one stable dataset shape.
It offers:
- live, results, and combined modes;
- sold versus reserve-not-met result filtering;
- vehicle keyword filtering;
- country and minimum-price filters;
- unique record limits with
maxItems, optional scan bounds withmaxPages; - opt-in public vehicle essentials and bid counts;
- explicit listing URL support;
- typed JSON, CSV, Excel, XML, and API exports through Apify.
What data can you extract?
| Field | Meaning |
|---|---|
auctionId | Bring a Trailer public auction/listing identifier when exposed |
title | Vehicle or lot headline |
year | Model year parsed from source data or title |
status | live, sold, or unsold |
price | Numeric displayed bid or result price |
soldPrice | Sale result only; null for live and reserve-not-met records |
resultText | Clean source result/current-bid text |
priceFormatted | Source-formatted displayed price |
currency | Displayed currency code |
country | Public country name when exposed |
countryCode | Two-letter country code when exposed |
latitude / longitude | Public location coordinates when exposed |
endTime | Auction end time in ISO 8601 format |
noReserve | Whether the source flags the auction as no reserve |
premium | Whether the source flags the lot as premium |
repeatListing | Whether the source flags a repeat listing |
categories | Bring a Trailer category IDs |
description | Public listing excerpt when requested |
chassis | Opt-in source chassis string; not a verified VIN |
mileageText | Opt-in source mileage including qualifiers such as “Shown” |
listingDetails | Opt-in array of public vehicle-essential strings |
location | Opt-in city/region, without postal code or street address |
lotNumber / totalBids | Opt-in public lot number and displayed bid count |
imageUrl | Public thumbnail URL |
url | Canonical public auction listing URL |
sourceUrl | Page or route that produced the record |
scrapedAt | UTC extraction timestamp |
Fields can be null when Bring a Trailer does not display them for a record.
How to scrape Bring a Trailer auctions
- Open the Actor input page.
- Choose
live,results, orboth. - Optionally enter a make, model, or phrase in
searchQuery. - Optionally select sold or reserve-not-met results.
- Set
maxItemsto bound the dataset record count. - Click Start.
- Open the default dataset to download JSON, CSV, Excel, XML, or RSS.
For a first test, use mode: "live" and maxItems: 10.
For recurring market analysis, schedule mode: "both" and store each run's dataset in your own historical table.
Input parameters
mode
Choose which public records to extract:
livefor currently active auctions;resultsfor displayed completed results;bothfor a balanced live-and-results snapshot.
Default: both.
startUrls
Optional public Bring a Trailer URLs.
Supported URL types include:
https://bringatrailer.com/auctions/;https://bringatrailer.com/auctions/results/;- public
https://bringatrailer.com/listing/.../pages.
Leave the field empty for normal mode-based discovery. Entries can be strings or objects with a url string. Explicit URLs select sources; mode and all applicable filters still apply. HTTP/www/query aliases normalize to canonical HTTPS and save/charge once. Unsupported paths (including account, blog, model and contact pages) fail before the start charge.
searchQuery
A trimmed, case-insensitive substring such as Porsche, E46 M3, or Land Cruiser, matched against title plus the available public excerpt on every route. This is not whole-field equality or linguistic matching. includeDescription: false affects output projection only, not matching.
For completed results, the query is sent to the public results filter.
The Actor also applies the filter before saving output.
resultStatus
For completed auctions, choose:
all;sold;unsoldfor reserve-not-met results.
countryCode
Optional two-letter filter such as US, CA, or GB.
Some historical completed records do not expose a country and will not match a country filter.
minPrice
Keep records whose numeric displayed bid or result is at least this value.
The number is interpreted in each record's displayed currency; the Actor does not convert currencies.
maxItems
Global maximum unique matching records after filtering and deduplication across all sources. Default 100; allowed range: 1 to 10,000. Both-mode discovery allocates up to half to live records, then results. Runtime, source availability and charge limits can return fewer records. This is not a request/page cap.
maxPages
Optional global maximum completed-results pages fetched, from 1 to 10,000 (36 source records/page before filters). Omit to paginate until output/source/runtime/no-progress limits. Live/direct/detail requests do not count toward this limit.
includeDetails
Default false. Add source-exact public vehicle essentials, qualified mileage, chassis, city/region, lot number and bid count. Discovery fetches one detail page per accepted candidate within remaining output/charge capacity; direct pages are reused. This is slower than summary-only discovery, with no extra item charge. Missing values remain null. Chassis and mileage are source claims, not independently verified VIN/odometer history. A detail failure fails the run rather than silently claiming complete enrichment.
includeDescription
Include or omit the public auction excerpt.
Disable it when you need a smaller export.
Example input: live auctions
{"mode": "live","maxItems": 50,"minPrice": 10000,"includeDescription": true}
Example input: sold Porsche results
{"mode": "results","searchQuery": "Porsche","resultStatus": "sold","maxItems": 25,"includeDescription": true}
Example output
Illustrative summary output (not a retained proof run):
{"auctionId": 121240126,"title": "West Bend 820-Powered 1965 Model 99 Minibike","year": 1965,"status": "live","price": 7600,"soldPrice": null,"resultText": "Current Bid: USD $7,600","chassis": null,"mileageText": null,"listingDetails": null,"location": null,"lotNumber": null,"totalBids": null,"priceFormatted": "USD $7,600","currency": "USD","country": "United States","countryCode": "US","latitude": 33.6184,"longitude": -111.952,"endTime": "2026-09-01T20:54:12.000Z","noReserve": true,"premium": false,"repeatListing": false,"categories": ["3", "430", "70"],"description": "This 1965 Model 99 minibike was manufactured by Steen's...","imageUrl": "https://bringatrailer.com/wp-content/uploads/2026/08/example.jpg","url": "https://bringatrailer.com/listing/1965-steens-manufacturing-model-99-factory-west-bend-820-mini-bike/","sourceUrl": "https://bringatrailer.com/auctions/","scrapedAt": "2026-09-01T20:55:00.000Z"}
Source values change continuously, so IDs, prices, and timestamps will differ in later runs.
How much does it cost to extract Bring a Trailer auction records?
The Actor uses pay per event.
Each run has one start event.
Each useful dataset record has one item event.
Rejected, duplicate, or failed records are not charged as items.
The one-time start event is $0.005.
Item prices decrease by Apify plan tier:
| Plan tier | Price per auction record |
|---|---|
| Free | $0.0052164 |
| Bronze | $0.004536 |
| Silver | $0.0035381 |
| Gold | $0.0027216 |
| Platinum | $0.0018144 |
| Diamond | $0.0012701 |
Use maxItems to set a predictable upper bound.
At Bronze pricing, a 25-record sold-results job is about $0.1184 including the start event.
At Bronze pricing, a 100-record recurring snapshot is about $0.4586 including the start event.
Apify computes the exact amount for your plan tier.
Live and completed result behavior
live mode reads the broad current inventory shown by the public auctions page.
results mode paginates public completed records in batches of 36.
sold means the source displays a sold result.
unsold means the source displays a bid-to or reserve-not-met result.
both reserves part of the requested capacity for each status family, so a small run does not fill entirely with live inventory.
Monitoring auction changes over time
Each Actor run is a point-in-time snapshot.
To monitor changes:
- schedule the Actor hourly or daily;
- export each run dataset to a durable database;
- use
auctionIdorurlas the stable key; - compare
price,status, andendTimeacross snapshots; - trigger your own alerts or dashboard updates.
The Actor does not maintain a hidden cross-run history or send alerts by itself.
Comparable-price research workflow
Use mode: "results" with a specific make or model.
Choose resultStatus: "sold" when you need displayed sales only.
Export the dataset to a spreadsheet or warehouse.
Review source URLs before making valuation decisions.
Displayed auction results are market observations, not formal appraisals.
Tips for reliable runs
Start with a low maxItems while testing filters.
Use specific search phrases for completed-result research.
Avoid combining a very narrow keyword, country, and high minimum price unless an empty result is expected.
Keep canonical source URLs in your downstream table for auditability.
Schedule recurring work at a cadence appropriate for your use case rather than sending unnecessary repeated runs.
Limits and failure behavior
The Actor extracts only public data exposed by Bring a Trailer.
It does not access bidder identities, private seller information, watchlists, messages, or account-only fields.
Some older results omit country, coordinates, year, categories, or description.
Direct pages use listing-owned status, price, identity, currency and timestamps. Summary-only country, coordinates and category flags may still be absent.
Every completed scan writes RUN-SUMMARY in the key-value store with saved count, completed pages, request attempts, invalid-record count and stop reasons. max_pages, no_progress or runtime_deadline marks truncation; max_items and charge_limit explain output bounds. A successful bounded run is not an exhaustive-history claim. The runtime safety deadline leaves time for saving/cleanup; sparse filters may produce fewer or zero matches. Inspect the summary before treating results as complete.
The Actor retries temporary network, HTTP 429, and server failures up to three times.
It does not blindly retry stable invalid URLs or malformed input.
If the source returns an unexpected data shape, the run fails instead of silently claiming a valid empty result.
Bring a Trailer can change its public pages and fields without notice.
Export and integration patterns
Download the default dataset as JSON, CSV, Excel, XML, or RSS.
Send completed run data to Google Sheets for analyst review.
Load records into BigQuery, Snowflake, PostgreSQL, or another warehouse.
Use an Apify webhook to notify Make, Zapier, Slack, or your own API after completion.
Join auction URLs with internal appraisal notes in your own system.
Use auctionId and scrapedAt to build time-series bid observations.
JavaScript API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/bring-a-trailer-auctions-results-scraper').call({mode: 'results',searchQuery: 'Porsche 911',resultStatus: 'sold',maxItems: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python API example
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/bring-a-trailer-auctions-results-scraper').call(run_input={'mode': 'both','countryCode': 'US','maxItems': 100,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(len(items))
cURL API example
curl -X POST \'https://api.apify.com/v2/acts/automation-lab~bring-a-trailer-auctions-results-scraper/runs?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"mode":"live","maxItems":25}'
Keep your Apify token in a secret or environment variable.
Do not commit it to source control.
MCP usage
Claude Code
Add the Actor to Claude Code through the Apify MCP server:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/bring-a-trailer-auctions-results-scraper"
Claude Desktop, Cursor, and VS Code
Use the following equivalent HTTP MCP configuration in Claude Desktop, Cursor, or VS Code:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/bring-a-trailer-auctions-results-scraper"}}}
Example prompt:
Extract 25 sold Porsche results from Bring a Trailer and summarize the median displayed result by model year.
Another prompt:
Capture a 50-record live Bring a Trailer snapshot and list no-reserve auctions ending first.
This independent Actor is not affiliated with or endorsed by Bring a Trailer. It uses no AI models or paid third-party data suppliers at runtime. Apify hosting/storage and our private diagnostics service are operated by us; no off-platform fee is required. Run datasets and logs follow your Apify retention settings and can be deleted through Apify. Page processing is ephemeral; the Actor does not maintain a cross-run cache.
Sanitized failure diagnostics
Failed operations send sanitized diagnostic input, exceptions and Actor/build/run IDs to our private GlitchTip service for repair. Secret fields and URL query strings are removed; reports are retained for 30 days. No bidder/seller identities or raw page bodies are added to diagnostic reports.
Responsible use and legality
The Actor accesses public auction information.
You are responsible for complying with applicable laws, contractual terms, privacy rights, and source rules.
Do not use the data for spam, harassment, unauthorized profiling, or automated bidding.
Use reasonable run frequency and retain only the data needed for your lawful purpose.
Verify important market or valuation decisions against the linked source page.
FAQ
Does this Actor require a Bring a Trailer account?
No. It uses public auction and results surfaces.
Can it extract both sold and reserve-not-met results?
Yes. Use resultStatus: "all", "sold", or "unsold".
Can I scrape a specific listing URL?
Yes. Add a public Bring a Trailer listing URL to startUrls.
A direct listing can contain fewer fields than the live or completed index.
Why are some fields null?
Bring a Trailer does not expose every field for every historical record.
Null values preserve that distinction instead of inventing data.
Why did a filtered run return fewer records?
A keyword, country, result-status, or minimum-price filter can reduce the accepted set.
Increase maxItems only if more matching source records exist.
What happens if Bring a Trailer changes its page?
Recognizable temporary failures are retried.
An incompatible response fails the run with a diagnostic error rather than returning misleading data.
Related automation-lab Actors
Browse the automation-lab profile on Apify for complementary vehicle-listing, auction, marketplace, and price-research Actors.
Combine them in your own normalized automotive market dataset when the sources and terms fit your use case.
Support
When reporting a problem, include:
- the Actor run URL;
- a redacted copy of the input;
- one public source URL that demonstrates the issue;
- the expected field or behavior.
Do not include account credentials or private personal data.