Car listings API: search UK used car adverts by any filter

Last updated: 9 November 2026

Search used cars for sale now on UK dealer websites by any filter (make, model, trim, year, fuel, gearbox, price, mileage, postcode and radius, dealer and more), 50 results a call with paging, or up to 1,000 light rows a call in bulk mode. Open one advert in full, list every advert a registration has had with a mileage check, or find where a car is advertised right now. 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.

Bulk mode (bulk: true) returns up to 1,000 light rows a call and is priced as 5 requests.

Every advert has our own id (adv_...) that stays the same for the same advert, so you can come back to it with one advert in full.

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.

EndpointPay As You GoStarterProEnterprise
Market listings
POST /api/v1/market/listings
Search every UK car for sale now by any filter, location and sort, 1 to 50 results per call.
Daily cap per account: 200 / 750 / 2,000 / 5,000
10p8p5p3p
Market listings (bulk)
POST /api/v1/market/listings (bulk: true)
Market listings with bulk: true, up to 1,000 light rows per call.
Daily cap per account: 20 / 75 / 200 / 500
50p40p25p15p
One advert in full
POST /api/v1/market/listing
Full detail of one advert: features, options, seller comments and full spec.
Daily cap per account: 200 / 750 / 2,000 / 5,000
10p8p5p3p
Advert history
POST /api/v1/vehicle/advert-history
Every advert one car has had: price, mileage, seller and dates, with our mileage check.
Daily cap per account: 200 / 750 / 2,000 / 5,000
10p8p5p3p
Live adverts for a plate
POST /api/v1/vehicle/live-adverts
Where one car is advertised right now, with the lowest and highest asking price.
Daily cap per account: 200 / 750 / 2,000 / 5,000
10p8p5p3p
Market counts
POST /api/v1/market/facets
How many matching cars there are for each make, model, fuel, year, county and so on.
Daily cap per account: 200 / 750 / 2,000 / 5,000
10p8p5p3p
Similar cars for sale (by registration)
POST /api/v1/market/active
Cars like the registration you send that are for sale now, cheapest first.
Daily cap per account: 200 / 750 / 2,000 / 5,000
15p12p10p5p

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/listings \
  -H "X-API-Key: your_sandbox_key" \
  -H "Content-Type: application/json" \
  -d '{"make":"BMW","model":"3 Series","year_min":2019,"year_max":2019,"rows":10,"start":0}'

The answer (long lists shortened; fields not held for a vehicle are left out):

{
  "success": true,
  "data": {
    "total_found": 893,
    "start": 0,
    "rows_requested": 10,
    "rows_returned": 10,
    "more_available": true,
    "listings": [
      {
        "listing_id": "adv_Xc2Lr9vQm1T0pZk7HdF3aw8NsY4bJ6eUqC5gViOtR",
        "title": "2019 BMW 3 Series 320d M Sport 4dr Step Auto",
        "price": 18995,
        "mileage": 41250,
        "previous_price": 19995,
        "previous_price_date": "2026-09-12",
        "price_change_pct": -5,
        "vehicle": {
          "year": 2019,
          "make": "BMW",
          "model": "3 Series",
          "variant": "320d M Sport",
          "body_type": "Saloon",
          "fuel_type": "Diesel",
          "transmission": "Automatic",
          "drivetrain": "4x2",
          "engine_size": 2,
          "doors": 4,
          "seats": 5,
          "colour": "Black",
          "base_colour": "Black",
          "power_bhp": 188,
          "mpg_combined": 55.4,
          "co2_g_km": 118,
          "euro_status": "Euro 6"
        },
        "owners": 1,
        "first_registered": "2019-06-28",
        "days_on_market": 34,
        "days_at_dealer": 34,
        "first_seen": "2026-10-03",
        "last_seen": "2026-11-05",
        "dealer": {
          "dealer_id": "dlr_Qm4Tc8nWx2Ls0Hb7RkVa1g",
          "name": "Example Motors Ltd",
          "type": "independent",
          "city": "Leeds",
          "county": "West Yorkshire",
          "country": "England",
          "postcode": "LS11 5AB",
          "latitude": 53.78,
          "longitude": -1.55,
          "phone": "0113 000 0000",
          "website": "https://www.example.co.uk/"
        },
        "listing_url": "https://www.example.co.uk/used/bmw-3-series-320d",
        "advert_site": "example.co.uk",
        "photos": [
          "https://www.example.co.uk/photos/1.jpg"
        ]
      }
    ]
  },
  "meta": {
    "request_id": "req_3f9a1c0d2b7e4a5f6c8d9e01",
    "cost_pence": 10,
    "balance_pence": 990,
    "is_sandbox": false
  }
}

What you get

total_found
How many adverts match, with more_available for paging
listings[].listing_id
Our advert id (adv_...), title, price and mileage
listings[].previous_price
The previous price and price_change_pct when the price changed
listings[].vehicle.make
Make, model, variant, year, fuel, gearbox, body, engine, power, economy and CO2
listings[].days_on_market
Days on market and days at the dealer
listings[].dealer
The dealer: name, type, town, postcode and contact details as published
listings[].listing_url
Link to the advert and photo links

Every field, with its type and meaning, is in the API reference.

What developers use it for

  • Show cars like the one a customer is looking at inside your own app or report.
  • Watch the market for the cars you buy and sell.
  • Check a car's advert history and spot mileage that went down between adverts.

Questions

Is there an API for UK used car listings?

Yes. /api/v1/market/listings searches used cars for sale on UK dealer websites by any filter and returns up to 50 adverts a call, for 10p a call on Pay As You Go, down to 3p on Enterprise.

How do I get more than 50 results?

Page through with start: send start 0, then 50, then 100 and so on, and stop when more_available is false. start plus rows can be at most 10,000. For charts and maps, bulk: true returns up to 1,000 light rows a call.

Can I see the advert history of a registration?

Yes. /api/v1/vehicle/advert-history lists every advert the car has had, with price, mileage, seller and dates, and a mileage check that flags a later advert showing fewer miles. It costs 10p on Pay As You Go.

Can I store the adverts?

Results can be cached for up to 24 hours, and market data may be kept inside a completed report for a customer. The developer terms do not allow storing listings as a dataset or building a lookup service or feed from them, and dealer contact details must not be stored.

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