From a UK number plate to its history, value and the dealers around it
Turn a UK number plate (VRM) into a car's listing history, its market value in GBP, the live listings behind it and the FCA-authorised dealers nearby, with a documented MarketCheck call for each.
MarketCheck5 min read
For developers building UK car-buying, valuation, trade-in and dealer tools
In the UK a car is identified by its number plate, the Vehicle Registration Mark (VRM), the way a VIN identifies one in the US. Developers building UK car tools usually start from that plate: what the car has been listed for before, what it is worth today, which cars like it are for sale, and which dealers nearby hold them. MarketCheck has a UK endpoint for each of those, keyed on the VRM or a postcode.
About the UK market: as of Oct 2026, the UK "number plate check" space is served by providers such as cap hpi (the HPI brand) and MotorCheck, which license official DVLA and finance records for write-off, stolen, finance and mileage checks. MarketCheck's UK data is different: it is market and listing data, what a car has been advertised at, its listing history, and the live market around it. Use it as the pricing and market-history layer beside an official HPI or finance check, not as a replacement for one.
In short. Send a VRM to History by VRM for every past UK listing of that car, with price and mileage over time. Send the VRM with mileage, a postcode and a dealer type to UK MarketCheck Price for a value in GBP, and the comparables tier for the listings behind it. UK Inventory Search returns the live market for cars like it, with price and mileage statistics and ULEZ and FCA filters. UK Dealers Search returns the dealers nearby, each with its FCA authorisation status. Label every figure as MarketCheck's market data, with the count of listings behind it.
What a UK number plate (VRM) lookup usually needs
| Need | MarketCheck UK endpoint | What comes back |
|---|---|---|
| Every past listing of this car | History by VRM, GET /v2/history/car/uk/{vrm} |
An array of past listings, price and mileage per date |
| What it is worth today, in GBP | UK MarketCheck Price, GET /v2/predict/car/uk/marketcheck_price |
A predicted price in GBP |
| The listings behind the value | UK MarketCheck Price comparables, .../marketcheck_price/comparables |
The comparable listings and their price statistics |
| The live market for cars like it | UK Inventory Search, GET /v2/search/car/uk/active |
Listings, with stats for price and mileage |
| The dealers nearby, and are they FCA-authorised | UK Dealers Search, GET /v2/dealers/car/uk |
Dealers, each with fca_status |
A car's listing history from its number plate
- User enters a number plate
- History by VRM
- Price and mileage timeline
- Buyer or underwriter reads it
History by VRM takes the plate on the path and returns every past UK listing of that car, newest first. There are no other required inputs:
curl "https://api.marketcheck.com/v2/history/car/uk/YF74XHY?api_key=YOUR_API_KEY"The response is an array, one entry per past listing, trimmed here to two:
[
{ "id": "l-8f2a4c", "price": 21495, "miles": 18240, "seller_type": "dealer",
"inventory_type": "used", "first_seen_at_date": "2026-08-02", "last_seen_at_date": "2026-09-14" },
{ "id": "l-3b19e0", "price": 22995, "miles": 12110, "seller_type": "dealer",
"inventory_type": "used", "first_seen_at_date": "2026-02-11", "last_seen_at_date": "2026-03-20" }
]Read down the array to see how the asking price and mileage moved between listings: a mileage that jumps backward, or a car that keeps returning to the market, is worth a second look. An unknown or never-listed plate returns an empty array with 200 OK, and the VRM is not validated, so check the array length rather than the status code. The US equivalent, keyed on the VIN, is the listing history guide.
What it is worth today, in GBP
- User confirms plate, mileage, postcode
- UK MarketCheck Price
- Your margin or offer
- Appraiser or customer sees it
UK MarketCheck Price takes the VRM, the mileage, a postcode and the dealer type (franchise or independent), and returns a price in GBP:
curl "https://api.marketcheck.com/v2/predict/car/uk/marketcheck_price?api_key=YOUR_API_KEY&vrm=YF74XHY&miles=45000&postal_code=LS11+5HL&dealer_type=franchise"{ "marketcheck_price": 18650 }The comparables tier, .../marketcheck_price/comparables, takes the same inputs and adds the listings behind the number, with their price statistics, so a valuation screen can show the prediction beside the market it came from:
{
"marketcheck_price": 18650,
"comparables": {
"num_found": 73,
"stats": { "price": { "median": 18995, "percentiles": { "25.0": 17750, "75.0": 19995 } } }
}
}Show the prediction with its label and the comparables' median beside it: they answer different questions, the model's price for this car and mileage, and the middle of what cars like it are listed at. The number is in GBP and it is a dealer price for the dealer type you send. The same workflow on the US endpoint is the used car price guide.
The live market for cars like it
UK Inventory Search returns the cars for sale right now, with filters built for the UK market: fuel_type, body_type, postal_code and radius in miles, price_range in GBP, ulez_compliant, and fca_status on the dealer. Ask for statistics without listings with rows=0:
curl "https://api.marketcheck.com/v2/search/car/uk/active?api_key=YOUR_API_KEY&make=Ford&model=Puma&year=2022&fuel_type=Electric&rows=0&stats=price,miles"{
"num_found": 268,
"listings": [],
"stats": {
"price": { "median": 19480, "percentiles": { "25.0": 17995, "75.0": 21250 } },
"miles": { "median": 14870 }
}
}Drop rows=0 to get the listings themselves, each with price, miles, dom_active (days on market), the dealer block with its fca_status, the build specs and media.photo_links. The car search guide covers filters, facets and paging on the same search, and its US counterpart.
Which dealers, and are they FCA-authorised
UK dealers that sell finance must be authorised by the Financial Conduct Authority. UK Dealers Search returns the dealers around a postcode, each with its FCA status and reference, so a lead form or a dealer directory can show it:
curl "https://api.marketcheck.com/v2/dealers/car/uk?api_key=YOUR_API_KEY&postal_code=LS11+5HL&radius=20&dealer_type=franchise&fca_status=Authorised&rows=5"Each dealer in the response carries its FCA details and listing count:
{ "id": "d-20714", "seller_name": "Example Motors Leeds", "dealer_type": "franchise",
"fca_status": "Authorised", "fca_reference_no": "000000", "listing_count": 128,
"city": "Leeds", "county": "West Yorkshire", "postal_code": "LS11 5HL" }Filter by fca_status, dealer_type, listing_count_range and a postal_code with a radius in miles, and page with start and rows (up to 50). The dealer directory guide covers resolving a dealer from its website and mapping territories on the US dealer APIs.
A VRM lookup for a buying or valuation screen
- Form posts a VRM and mileage
- History by VRM and UK MarketCheck Price
- History and value in one object
- Buyer or appraiser decides
This server-side function takes a plate and mileage and returns the listing history with the current value, ready for a screen:
const BASE = 'https://api.marketcheck.com/v2'
export async function vrmLookup(vrm: string, miles: number, postcode: string) {
const key = process.env.MARKETCHECK_API_KEY ?? ''
const history = await fetch(`${BASE}/history/car/uk/${encodeURIComponent(vrm)}?api_key=${key}`)
if (!history.ok) throw new Error(`History by VRM returned ${history.status}`)
const listings = await history.json() // [] when the plate has no history on file
const priceUrl = new URL(`${BASE}/predict/car/uk/marketcheck_price/comparables`)
priceUrl.searchParams.set('api_key', key)
priceUrl.searchParams.set('vrm', vrm)
priceUrl.searchParams.set('miles', String(miles))
priceUrl.searchParams.set('postal_code', postcode)
priceUrl.searchParams.set('dealer_type', 'franchise')
const priceRes = await fetch(priceUrl)
// 400 is a missing input or a plate that could not be decoded: ask the user to check the plate
const price = priceRes.status === 400 ? null : await priceRes.json()
return {
pastListings: listings.length,
lastSeen: listings[0]?.last_seen_at_date ?? null,
valueGbp: price?.marketcheck_price ?? null,
comparables: price?.comparables?.num_found ?? 0,
askingMedian: price?.comparables?.stats?.price?.median ?? null
}
}The value is MarketCheck's market price, and the history is what the car was listed at. The buying decision, and any finance or write-off check, sits beside them.
What to know before you build
- Plates are not validated. History by VRM returns an empty array with
200 OKfor an unknown or mistyped plate, so check the array length, not the status code. - Market data, not an official check. These endpoints return listing and market data. For DVLA, finance, stolen or write-off status, pair them with an HPI or finance check.
- Everything is in GBP and distances are in miles. The price is a dealer price for the
dealer_typeyou send. - FCA status is on the dealer. Use
fca_statuson Dealers Search and on each search listing'sdealerblock to show whether a dealer is authorised to sell finance. - UK filters.
ulez_compliant,fca_status,postal_codewithradius, andprice_rangein GBP are UK-specific. The US endpoints use VIN, ZIP and USD instead. - Errors. A 400 is a missing or bad input, a 401 a missing or invalid key, a 403 a tier your key cannot use, and a 429 the rate limit.
- Cache by input. Store each answer by VRM, mileage, postcode and dealer type for the day.
Who this is for
Developers building UK car-buying sites, trade-in and valuation forms, dealer directories, lead forms and lending or insurance checks who want a car's listing history, its value in GBP and the market around it from one API, keyed on the number plate.
Start here
- Create a free account and copy your API key. Start on the Free tier for development; plans are on the pricing page.
- Run a VRM through History by VRM and UK MarketCheck Price and compare the past listings with today's value.
- Add UK Inventory Search for the live market and UK Dealers Search for the dealers nearby.
- Keep the UK History by VRM reference and the UK MarketCheck Price reference open for parameters and error codes.