Used car price data API: sold prices, market statistics and days to sell
Last updated: 9 November 2026
Ask for any make, model and filter (year, fuel, gearbox, mileage, location and more) and get prices from UK dealer adverts: median, mean and percentile prices of cars for sale now and cars sold in the last 90 days, days to sell, price bands for charts, and cars whose asking price has been cut. No registration needed. Calls cost 10p a call on Pay As You Go, down to 3p on Enterprise. Sandbox keys are free. They answer from a stored sample of fictional adverts for the test models at GET /v1/sandbox/market-presets, and every filter, sort, count and statistic works on the sample, so totals describe the sample, not the market.
"Sold" is inferred: the advert ended and the same car did not reappear within 7 days. The price is the last asking price, not a confirmed sale price.
To price one particular car, send its registration to pricing insights or market insights: they find cars like it for sale and sold, and say where an asking price sits.
Prices per call
Prices in force today, per call, by package. Errors are not charged except where the API reference says so. Live keys only: sandbox calls are free.
| Endpoint | Pay As You Go | Starter | Pro | Enterprise |
|---|---|---|---|---|
| Market statistics POST /api/v1/market/stats Median, mean and percentiles of price, mileage and days on market over every matching car. Daily cap per account: 200 / 750 / 2,000 / 5,000 | 10p | 8p | 5p | 3p |
| Market overview POST /api/v1/market/overview Live supply and prices, sold in 90 days, days to sell and turnover, in one call. Daily cap per account: 200 / 750 / 2,000 / 5,000 | 20p | 16p | 10p | 6p |
| Sold listings search POST /api/v1/market/sold-listings Cars sold in the last 90 days by any filter, with last asking price and days to sell. Daily cap per account: 200 / 750 / 2,000 / 5,000 | 10p | 8p | 5p | 3p |
| Price and mileage bands POST /api/v1/market/distribution Counts of matching cars in equal bands of price, mileage or days, for charts. Daily cap per account: 200 / 750 / 2,000 / 5,000 | 10p | 8p | 5p | 3p |
| Price drops POST /api/v1/market/price-drops Cars whose asking price has been cut, biggest cut first. Daily cap per account: 200 / 750 / 2,000 / 5,000 | 10p | 8p | 5p | 3p |
| Pricing insights (by registration) POST /api/v1/pricing/insights Where an asking price sits against matching adverts, with a recommended price range. Daily cap per account: 200 / 750 / 2,000 / 5,000 | 10p | 8p | 6p | 4p |
| Market insights (by registration) POST /api/v1/market/insights Supply, demand, sold prices, days to sell and a market rating for cars like this one. Daily cap per account: 200 / 750 / 2,000 / 5,000 | 10p | 8p | 6p | 4p |
Price change: from 15 December 2026, pricing insights (by registration) is 20p Pay As You Go, 16p Starter, 14p Pro, 12p Enterprise.
Price change: from 15 December 2026, market insights (by registration) is 20p Pay As You Go, 16p Starter, 14p Pro, 12p Enterprise.
Pay As You Go has no monthly fee (top up from £10). On Starter, Pro, Enterprise the monthly fee comes back as plan credit to spend on calls, expiring at the end of each monthly billing period. Package limits per second, minute and day are on the pricing page.
Example request and answer
Every endpoint is a JSON POST under https://www.dealerpricing.co.uk/api with your key in the X-API-Key header. This request uses a sandbox test value, so it is free with a sandbox key.
curl -X POST https://www.dealerpricing.co.uk/api/v1/market/stats \
-H "X-API-Key: your_sandbox_key" \
-H "Content-Type: application/json" \
-d '{"scope":"sold","make":"Ford","model":"Focus","stats":["price","mileage","days_on_market"]}'The answer (long lists shortened; fields not held for a vehicle are left out):
{
"success": true,
"data": {
"scope": "sold",
"total_found": 9420,
"stats": {
"price": {
"count": 9420,
"missing": 0,
"min": 1495,
"max": 26995,
"mean": 10380,
"median": 9995,
"stddev": 4120,
"p5": 3995,
"p25": 7495,
"p75": 12995,
"p90": 15995,
"p95": 17995,
"p99": 21995
},
"mileage": {
"count": 9420,
"missing": 31,
"min": 8120,
"max": 162300,
"mean": 51800,
"median": 47600,
"stddev": 18350,
"p5": 19800,
"p25": 32500,
"p75": 57800,
"p90": 71200,
"p95": 80100,
"p99": 98700
},
"days_on_market": {
"count": 9420,
"missing": 0,
"min": 0,
"max": 212,
"mean": 35,
"median": 24,
"stddev": 37,
"p5": 3,
"p25": 13,
"p75": 57,
"p90": 92,
"p95": 118,
"p99": 171
}
}
},
"meta": {
"request_id": "req_3f9a1c0d2b7e4a5f6c8d9e01",
"cost_pence": 10,
"balance_pence": 990,
"is_sandbox": false
}
}What you get
- scope
- live (for sale now) or sold (sold in the last 90 days)
- total_found
- How many cars match the filters
- stats
- For price, mileage, days on market or days at dealer: count, min, max, mean, median, stddev and the 5th to 99th percentiles
Every field, with its type and meaning, is in the API reference.
What developers use it for
- Price stock against what similar cars sold for in the last 90 days.
- Charts of prices and mileage by model, year or region.
- Find stock to buy from cars whose asking price has been cut.
Questions
Where can I get UK used car price data through an API?
DealerPricing's market data endpoints return prices from UK dealer adverts for any make, model and filter: statistics for cars for sale now and sold in the last 90 days, price bands, the market overview and price drops. Prices start at 10p a call on Pay As You Go, down to 3p on Enterprise.
Are sold prices real sale prices?
No. A car counts as sold when its advert ended and it did not reappear within 7 days, and the price is the last asking price. That makes it a good guide to what cars sell at, but it is not a confirmed sale price.
Do I need a registration?
No. These endpoints search by make, model and any other filter. Pricing insights and market insights are the exceptions: they take a registration and find cars like it.
How much do the calls cost?
Most market calls are 10p Pay As You Go, 8p Starter, 5p Pro, 3p Enterprise. The market overview makes two data requests and costs twice that. On the monthly packages the whole fee comes back as plan credit to spend on calls. It expires at the end of each monthly billing period.
How fresh is the data?
Adverts come from UK dealer websites and are refreshed daily. Statistics on live data are approximate.
Can I test it for free?
Sandbox keys are free. They answer from a stored sample of fictional adverts for the test models at GET /v1/sandbox/market-presets, and every filter, sort, count and statistic works on the sample, so totals describe the sample, not the market.
Documentation and next steps
- Market data guide
- Market statistics in the API reference
- Pricing insights in the API reference
- API test console (send a request with your sandbox key)
- Example searches (worked examples, once you sign in)
- Error codes and what each one costs
- Create a developer account