Bring a Trailer Auctions & Results Scraper avatar

Bring a Trailer Auctions & Results Scraper

Pricing

from $2.72 / 1,000 item extracteds

Go to Apify Store
Bring a Trailer Auctions & Results Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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?

FieldMeaning
auctionIdBring a Trailer public auction/listing identifier when exposed
titleVehicle or lot headline
yearModel year parsed from source data or title
statuslive, sold, or unsold
priceNumeric displayed bid or result price
priceFormattedSource-formatted displayed price
currencyDisplayed currency code
countryPublic country name when exposed
countryCodeTwo-letter country code when exposed
latitude / longitudePublic location coordinates when exposed
endTimeAuction end time in ISO 8601 format
noReserveWhether the source flags the auction as no reserve
premiumWhether the source flags the lot as premium
repeatListingWhether the source flags a repeat listing
categoriesBring a Trailer category IDs
descriptionPublic listing excerpt when requested
imageUrlPublic thumbnail URL
urlCanonical public auction listing URL
sourceUrlPage or route that produced the record
scrapedAtUTC extraction timestamp

Fields can be null when Bring a Trailer does not display them for a record.

How to scrape Bring a Trailer auctions

  1. Open the Actor input page.
  2. Choose live, results, or both.
  3. Optionally enter a make, model, or phrase in searchQuery.
  4. Optionally select sold or reserve-not-met results.
  5. Set maxItems to bound the dataset record count.
  6. Click Start.
  7. 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:

  • live for currently active auctions;
  • results for displayed completed results;
  • both for 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;
  • unsold for 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 tierPrice 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:

  1. schedule the Actor hourly or daily;
  2. export each run dataset to a durable database;
  3. use auctionId or url as the stable key;
  4. compare price, status, and endTime across snapshots;
  5. 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 os
from apify_client import ApifyClient
client = 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().items
print(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.

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.