---
title: "Car Auction Price Data: What Sold Prices Can Show"
description: "Auction results are sold prices, not asking prices. The filters that matter on Bring a Trailer, Cars & Bids and Copart, their biases, and a 5-year pull's cost."
url: https://perceptlayer.com/blog/car-auction-price-data
---

[Blog](https://perceptlayer.com/blog) / [Web data by industry](https://perceptlayer.com/blog/category/web-data)

# Car Auction Price Data: What Sold Prices Can Show

28 Aug 2026 Perceptlayer 8 min read

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.

## Key takeaways

-   A sold result and a high bid on an unsold car are different numbers: Bring a Trailer search takes `sale_status` of `sold` or `unsold`, so you can pull both and measure how often a model fails to meet its reserve.
-   `auction_type=no-reserve` on Bring a Trailer separates auctions that had to sell from reserve auctions, where low bids never become prices.
-   Copart mostly sells insurance total losses: insurers supplied 79% of the vehicles it processed in fiscal 2026, so its prices measure damaged and salvage cars, filtered by `damage` and `title_group`.
-   Online enthusiast auctions add a buyer's fee on top of the winning bid, so the hammer price understates what the buyer paid.
-   A 5-year model history on Bring a Trailer is one call per page of `auctions-search` with `auction_status=past&range=5Y`, plus 1 credit per auction you open with `listings`.

## 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](https://perceptlayer.com/blog/used-car-listing-data-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](https://perceptlayer.com/apis/bring-a-trailer) and the [Cars & Bids API](https://perceptlayer.com/apis/cars-and-bids) 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](https://perceptlayer.com/apis/copart) 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](https://www.sec.gov/Archives/edgar/data/0000900075/000119312526405731/cprt-20260731.htm), 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](https://carsandbids.com/what-is/), 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:

```bash
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](https://perceptlayer.com/apis/bring-a-trailer/auctions-search). 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](https://perceptlayer.com/pricing) for what credits cost and the [credits docs](https://docs.perceptlayer.com/credits) 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](https://perceptlayer.com/signup) and try a past-auctions search in the playground on the [Bring a Trailer API page](https://perceptlayer.com/apis/bring-a-trailer). The [cars APIs](https://perceptlayer.com/verticals/cars) 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

-   [Bring a Trailer **1 credit per call** · 4 endpoints](https://perceptlayer.com/apis/bring-a-trailer)
-   [Copart **1 credit per call** · 4 endpoints](https://perceptlayer.com/apis/copart)
-   [Cars & Bids **1 credit per call** · 3 endpoints](https://perceptlayer.com/apis/cars-and-bids)

## 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](https://perceptlayer.com/apis/bring-a-trailer), [Cars & Bids](https://perceptlayer.com/apis/cars-and-bids) and [Copart](https://perceptlayer.com/apis/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.

car auctions used car prices bring a trailer copart vehicle data

## More from the blog

1.  [Web data by industry](https://perceptlayer.com/blog/category/web-data) 21 Oct 2026 Perceptlayer 8 min read
    
    ## [Job Posting Data for Labour-Market Research](https://perceptlayer.com/blog/job-posting-data-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.  [Web data by industry](https://perceptlayer.com/blog/category/web-data) 6 Oct 2026 Perceptlayer 7 min read
    
    ## [Salary Data from Job Sites: Reading Ranges Without Bias](https://perceptlayer.com/blog/salary-data-job-sites-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.  [Web data by industry](https://perceptlayer.com/blog/category/web-data) 30 Sept 2026 Perceptlayer 7 min read
    
    ## [Software Review Data Analysis for Competitive Research](https://perceptlayer.com/blog/software-review-data-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.
