Blog / Web data by industry

Car Auction Price Data: What Sold Prices Can Show

Car auction price data shows what buyers actually paid, which dealer listings can't: an asking price is an offer, a closed auction is a result. That makes auctions the closest public source to transaction prices for enthusiast and damaged cars. But each auction type sells a different slice of the market, so the useful questions are which results to keep, which to separate, and which biases to correct before you average anything.

Why are auction prices different from listing prices?

Because they're outcomes, not offers. A dealer listing tells you what a seller hopes to get, and it can sit unsold, be cut, or sell below the sticker after negotiation that never appears online. A closed auction records the highest bid at a fixed end time, in public, and whether it was enough to sell. For pricing a specific car, that's the stronger signal.

The catch is coverage. Listings cover nearly every used car for sale; auctions cover the cars their sellers chose to auction. Our guide to used car listing data for price analysis covers the listing side, with its own fields and biases. The two work best together: listings for breadth and current supply, auctions for what the market actually cleared.

Which auction types does the data cover?

Three, each with a different seller and buyer. The Bring a Trailer API and the Cars & Bids API cover online enthusiast auctions, where private sellers and dealers list collectable and enthusiast cars with photos, history and a public comment thread. The Copart API covers salvage auctions, where most vehicles come from insurers after a total loss.

Bring a Trailer Cars & Bids Copart
What's sold Collectable and enthusiast cars Enthusiast cars from the 1980s on Mostly damaged, total-loss and recovered vehicles
Typical seller Private owners and dealers Private owners and dealers Insurance companies, then dealers, banks, rental and fleet companies
Price signal Sold price or high bid, reserve or no reserve Sold price or high bid Sale price of a damaged vehicle
Key search filters sale_status, auction_type, range, minimum_year, maximum_year status, make_slug, model_slug, start_year, end_year, transmission make, model, damage, title_group, odometer_max, year_from, year_to
Endpoints 4 3 4

Copart's own filings are explicit about its mix: insurance company sellers supplied 79% of the vehicles it processed in fiscal 2026 and 81% in fiscal 2025, and most vehicles sold for insurers are total losses or recovered stolen vehicles (Copart Form 10-K, fiscal 2026, 2026). A Copart price is the value of a car in its damaged state, not a retail price.

Which fields matter for sold-price analysis?

Five things decide whether two auction results are comparable: the outcome, the reserve, the car's condition, its mileage and the date. On these endpoints, most of them are search filters, which is useful: you can pull comparable sets directly instead of downloading everything and filtering later. We haven't recorded responses from these three APIs, so the response field names are on each endpoint page; the table lists the filters.

What matters Why Filter
Sold or unsold An unsold car's high bid is below the seller's reserve, not a price Bring a Trailer sale_status (sold, unsold); Cars & Bids status (closed)
Reserve or no reserve No-reserve auctions always sell, so their prices include weak days Bring a Trailer auction_type (premium, no-reserve, alumni)
Condition and title A salvage title or flood damage can outweigh every other factor Copart damage, title_group
Mileage The main within-model price driver for drivable cars Copart odometer_max; Cars & Bids sort=lowest_mileage
Model year and spec Model years and gearboxes can price very differently Year ranges on all three; Cars & Bids transmission (automatic, manual), body_style
Date Prices move; compare like periods Bring a Trailer range (7D, 30D, 1Y, 2Y, 5Y)

Store the unsold results rather than dropping them. The share of a model's auctions that fail to sell is a market signal in its own right: a rising no-sale rate says sellers' reserves are above what buyers will pay, often before sold prices fall.

What biases come with each auction type?

Every auction sells a selected sample, and the selection runs in a known direction. Correct for it, or at least don't mix samples. The four biases below are the ones that change averages most.

Selection on enthusiast sites. Sellers bring good examples of desirable cars to Bring a Trailer and Cars & Bids, because those sites reward photos, records and originality. Their results describe the top of a model's market, not the average example on a dealer lot.

Fees on top of the bid. On online enthusiast auctions, the winning bidder pays a buyer's fee on top of the winning bid; Cars & Bids describes its fee, a percentage of the winning bid with a minimum and a maximum, that way on its own site (Cars & Bids, 2026), and it says it focuses on cars from the 1980s onward. Fee rates and caps change, so check the current terms. Decide whether you're modelling the hammer price or the buyer's total, and apply one rule throughout.

Reserve censoring. On a reserve auction, a car that doesn't reach its reserve goes unsold, so sold prices alone leave out the low end. A model with a high no-sale rate looks more valuable from sold prices than it is. Pull sale_status=unsold too, and report sold prices alongside the no-sale rate.

Condition on salvage auctions. Copart prices reflect damage type, title status and whether the car runs. A "front end" hit and a flood car of the same model aren't comparable, and neither tells you a retail value. Segment by damage and title_group before averaging.

How much does a 5-year model history cost? A worked example

Price a 5-year history of one model on Bring a Trailer by counting pages. GET /v1/bring-a-trailer/auctions-search returns one page of results per call at 1 credit, and it takes page and per_page. Pull sold and unsold results separately, so you can compute the no-sale rate. These requests haven't been run for this article:

curl "https://api.perceptlayer.com/v1/bring-a-trailer/auctions-search?auction_status=past&sale_status=sold&make_or_model=porsche+911&range=5Y&page=1&per_page=50" \
  -H "X-API-Key: $API_KEY"

curl "https://api.perceptlayer.com/v1/bring-a-trailer/auctions-search?auction_status=past&sale_status=unsold&make_or_model=porsche+911&range=5Y&page=1&per_page=50" \
  -H "X-API-Key: $API_KEY"

The number of pages depends on how many auctions match and how many results a page holds; the endpoint definition documents neither a default nor a maximum per_page, so read both from the first response in the playground on the Auctions Search page. The arithmetic is then simple. As an illustration, suppose a model has 600 sold and 150 unsold past auctions and pages hold 50 results:

Step Calls Credits
Sold results, 600 ÷ 50 per page 12 12
Unsold results, 150 ÷ 50 per page 3 3
Full record for each sold auction (listings) 600 600
Total, search only 15 15
Total, with every record 615 615

Those counts are an example, not a measurement. The pattern holds whatever the real numbers are: searching is cheap and opening every record dominates the cost. Open records only for the auctions you need details on, such as the ones closest to your car's year and mileage. A search-only history of 20 models at 15 credits each is 300 credits, inside the 1,000 free monthly credits.

The same method applies to the others. On Cars & Bids, search pages with limit and offset, and auction opens one result by id. On Copart, lots-search pages with page and per_page, lots-filters lists the filter values, and lots-detail opens one lot by lot_number. Every endpoint costs 1 credit per successful call; failed calls cost nothing. See pricing for what credits cost and the credits docs for billing.

What can't auction data show?

Three things. It can't show private sales, dealer trade-ins or wholesale dealer auctions that aren't public, which is where most used cars change hands. It can't tell you what an unsold car eventually went for. And it can't separate a car's value from its presentation: two identical cars can sell apart because one had better photos and a busier comment thread.

So use auction results as a high-quality sample of the enthusiast and salvage markets, alongside listing data, not as a measure of the whole used-car market. To pull either side as JSON, get a free API key and try a past-auctions search in the playground on the Bring a Trailer API page. The cars APIs list the listing sources on the same key. Data is collected from publicly available sources and returned as found at the time of the call.

APIs in this post

Frequently asked questions

Where can I get car auction price data?

Public online auctions publish their results: Bring a Trailer and Cars & Bids for enthusiast cars, Copart for damaged and salvage vehicles. The Perceptlayer Bring a Trailer, Cars & Bids and Copart APIs return searches and single results as JSON, at 1 credit per successful call, with filters for sale status, reserve, damage, title, mileage and year.

Is an auction high bid the same as a sale price?

No. On a reserve auction, the high bid on a car that didn't sell was below the seller's reserve, so it's an upper bound on what buyers offered, not a price. Bring a Trailer search separates them with sale_status of sold or unsold. Keep both: the share that fails to sell is a useful market signal.

Why are Copart prices so much lower than retail?

Because most Copart vehicles are insurance total losses or recovered stolen vehicles; insurers supplied 79% of the vehicles Copart processed in fiscal 2026, per its annual report. Prices reflect damage, title status and whether a car runs. Filter by damage and title_group, and don't compare Copart prices with retail listings.

How much does a model's price history cost?

On Bring a Trailer, one search page costs 1 credit, so a 5-year history of one model is as many credits as it has pages of sold and unsold results. Opening each auction's full record with listings adds 1 credit per auction. Failed calls cost nothing, and every account gets 1,000 free credits a month.

Do auction prices include the buyer's fee?

Usually not. Online enthusiast auctions such as Cars & Bids charge the winning bidder a fee on top of the winning bid, so the total the buyer paid is higher than the hammer price. Fee rates and caps change, so check each site's current terms and apply one rule consistently in your analysis.

  1. Job Posting Data for Labour-Market Research

    Which Indeed posting fields support trend analysis, where postings mislead versus hires, and a weekly collection plan that costs 3,000 credits a month.

  2. Salary Data from Job Sites: Reading Ranges Without Bias

    Glassdoor's salaries endpoint returns p10 to p90 total pay, a currency and a national count. How to read those ranges and the biases of self-reported pay.

  3. Software Review Data Analysis for Competitive Research

    What Capterra, Trustpilot and Google Play reviews can and can't tell you about a competitor, which fields to keep, the sampling bias, and a worked rating tally.

Start with 1,000 free credits

No password to set. We email you a sign-in link, and your key works on every API.

No credit card. 1,000 free credits a month.