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
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 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;
- bounded pagination with
maxItems; - 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 |
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 |
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.
searchQuery
A case-insensitive vehicle phrase such as Porsche, E46 M3, or Land Cruiser.
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
Maximum number of matching records to save.
Allowed range: 1 to 10,000.
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
A real run produces records in this shape:
{"auctionId": 121240126,"title": "West Bend 820-Powered 1965 Model 99 Minibike","year": 1965,"status": "live","price": 7600,"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 listing pages can expose fewer structured fields than index/results records.
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.
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.