Bring a Trailer Sold Prices & Comps API avatar

Bring a Trailer Sold Prices & Comps API

Pricing

from $4.98 / 1,000 auction lot returneds

Go to Apify Store
Bring a Trailer Sold Prices & Comps API

Bring a Trailer Sold Prices & Comps API

Bring a Trailer sold prices: one row per sold lot (title, year, make, model, final price, end date, no-reserve) for any search, plus an optional comps summary with median, quartiles, low, high and 90-day trend. New-result alerts to Slack, Discord or Telegram. Searches that find nothing are free.

Pricing

from $4.98 / 1,000 auction lot returneds

Rating

0.0

(0)

Developer

Adriana Voss

Adriana Voss

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Sold prices from Bring a Trailer, as rows you can sort, chart and price a buy against. Type a make and model as you would in the site's search box and get one row per finished auction: the title, year, make, model, what it sold for, the end date, whether it ran with no reserve and a link to the lot. Add the optional comps summary and every search also comes back as one row of median, quartiles, low, high and the 90-day trend. Schedule it with the monitoring options and new results are posted to Slack, Discord or Telegram.

It reads the same public results data the Bring a Trailer results page shows. No login, no key, no seller or bidder data.

How to use

  1. In the Apify Console. Open the actor page and click Start — the searches field is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found.
  2. Via the API. Call it directly with a POST request — no Console needed once you have an API token:
    curl "https://api.apify.com/v2/acts/accountable_eel~bring-a-trailer-sold-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{"searches":["porsche 911"]}'
  3. On a schedule. Save this actor as an Apify Task with the input you want, then add a Schedule (hourly, daily, weekly) so it runs on its own — no server of your own required.

Input

{
"searches": [
"porsche 911"
]
}

One search per line: a make and model, or any words you would type into the Bring a Trailer search box, for example porsche 911 or land rover defender 90. Accepted formats: porsche 911, land rover defender 90, bmw e30 m3.

Output

One row per sold lot, and (when you ask for it) one comps summary row per search. A single lot row:

{
"query": "porsche 911",
"found": true,
"status": "OK",
"rowType": "lot",
"title": "42k-Mile 1997 Porsche 911 Carrera Targa",
"year": 1997,
"make": "Porsche",
"model": "911 Carrera Targa",
"result": "sold",
"currency": "USD",
"finalPrice": 88000,
"finalPriceUsd": 88000,
"endDate": "2026-10-19",
"noReserve": false,
"location": "US",
"lotUrl": "https://bringatrailer.com/listing/…"
}

The table below shows every column the dataset can carry:

queryfoundstatusrowTypesearchtitleyearmakemodelresultcurrencyfinalPricefinalPriceUsdhighBidUsdendDateendedAtnoReservelocationlotUrllotIdcheckedAtchangeTypealertMatchmatchesOnSitecountsoldCountmedianUsdp25Usdp75UsdlowUsdhighUsdlast90dCountlast90dMedianUsdprior90dCountprior90dMedianUsdtrendPctnewestEndDateoldestEndDatescrapedAt
porsche 911trueOK<final price (usd)><high bid (usd)><median price (usd)><25th percentile (usd)><75th percentile (usd)><lowest price (usd)><highest price (usd)><sold in the last 90 days><median, last 90 days (usd)><sold 91 to 180 days ago><median, 91 to 180 days ago (usd)><trend (%)>1970-01-01T00:00:00.000Z

A search that finds nothing comes back as a row with "found": false and is never charged.

Example: a search with a comps summary

{
"searches": ["porsche 911", "land rover defender"],
"maxLots": 300,
"includeCompsSummary": true,
"yearFrom": 1990
}

Each search returns its sold lots, newest first, and then one comps-summary row:

{
"rowType": "comps-summary",
"search": "land rover defender",
"matchesOnSite": 1350,
"count": 300,
"soldCount": 289,
"medianUsd": 46000,
"p25Usd": 34500,
"p75Usd": 61000,
"lowUsd": 14250,
"highUsd": 187000,
"last90dMedianUsd": 48500,
"prior90dMedianUsd": 44000,
"trendPct": 10.2
}

(The numbers above only show the shape of the row.) The summary is plain arithmetic over the sold lots the run read, with no extra requests, so count and oldestEndDate tell you how far back it reaches. A trend needs lots from both the last 90 days and the 91 to 180 days before; if the run did not read far enough back, those medians and the trend are empty.

Monitoring: new results as alerts

Turn on Track new results across runs, give the watchlist a name and schedule the run daily. Each lot is marked new the first time that search returns it and seen after. Choose what counts as an alert: every new result, or a new sold lot at or above, or at or below, a price. Only return new alerts keeps just those rows, and Send alerts to posts each one to a Discord or Slack webhook, a Telegram bot or any URL as JSON. The first run of a search has nothing to compare with, so turn on Seed silently to remember it without returning or billing it.

Fields

  • result: sold, bid-to (bidding stopped below the reserve) or withdrawn. Only with Sold lots only switched off do the last two appear.
  • finalPrice / finalPriceUsd: the "Sold for" figure Bring a Trailer prints. finalPriceUsd is filled when that figure is in US dollars.
  • highBidUsd: for a lot that did not sell, the last bid shown.
  • year, make, model: read out of the title. The site's own results list carries no separate year, make or model, so the make is matched against a list of marques and the model is what follows it. A title that names a make we do not know leaves make and model empty.
  • endDate: the end date as the site prints it (a US date). endedAt is the exact timestamp.
  • location: the lot's two-letter country code. The results list does not carry a US state.

Limits

  • Sold results as Bring a Trailer shows them. Prices are the printed "Sold for" figures, not a valuation, and not adjusted for condition, mileage or fees.
  • USD only. A few lots sell in pounds or euros. They are returned with their own currency and finalPrice, no finalPriceUsd, and they are left out of the comps arithmetic. There is no currency conversion.
  • No seller or bidder data. No names, bidder lists, comments or bid counts: the results list does not carry bid or comment counts, so they are not columns.
  • Parts and memorabilia. Bring a Trailer also sells manuals, parts and signs. Vehicles only (on by default) drops lots whose title carries no model year; turn it off to keep them.
  • One request per second. A page holds 36 lots, so reading 300 lots takes about 10 seconds. At most 2,000 lots per search and 50 searches per run.
  • A block or a changed page costs nothing. Searches that find nothing, a bot check or a changed response come back as a free miss row that says why.

Pricing

Pay-per-event. A flat per-run fee covers session/proxy warmup; you're billed per item only when data is actually found and returned — see .actor/pay_per_event.json for exact prices. A miss is never charged.

Use it from Clay, n8n, Make, or an AI agent

This actor runs synchronously over plain HTTP — call it directly from a script, a workflow tool, or an AI agent, no Apify Console needed once you have an API token.

curl "https://api.apify.com/v2/acts/accountable_eel~bring-a-trailer-sold-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
-X POST \
-H "Content-Type: application/json" \
-d '{"searches":["porsche 911"]}'

n8n. Add an HTTP Request node: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~bring-a-trailer-sold-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body Content Type JSON, JSON Body {"searches":["porsche 911"]} (swap in an expression from an earlier node for a real value).

Clay. Add an "HTTP API" column: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~bring-a-trailer-sold-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body {"searches":["{{sold lot}}"]}, mapping the row's sold lot into the searches array.

MCP. In Claude, Cursor, or any MCP client with the Apify MCP server, ask for "Bring a Trailer Sold Prices & Comps API | Apify" — the agent will find and run this actor.