A number plate is the universal key to a UK vehicle. Type a registration into the right API and you can resolve make, colour, fuel, tax and MOT status, and — by chaining lookups — a complete vehicle profile including history, valuation and provenance. This guide explains how a number plate (VRM) lookup API works and how to build a plate decoder into your product.
VRM in, vehicle out
A VRM (Vehicle Registration Mark) lookup takes a registration string and returns structured data about that vehicle. The base lookup resolves the DVLA-held attributes:
POST /products/vehicle-details/api/live/lookup
X-API-KEY: your_key_here
{ "registration": "AB12CDE" }
Response (normalized, abridged):
{
"registration": "AB12CDE",
"make": "Ford",
"colour": "Blue",
"fuelType": "Petrol",
"yearOfManufacture": 2018,
"co2Emissions": 129,
"taxStatus": "Taxed",
"motStatus": "Valid"
}
That's the foundation of Vehicle Details. You can see the exact shape live in the sandbox.
Normalising and validating the plate first
Before you call anything, clean the input. UK plates come with inconsistent spacing and case — ab12 cde, AB12CDE, AB12 CDE are the same vehicle. A good client:
- Upper-cases the string and strips whitespace.
- Optionally validates against the current and prefix/suffix plate formats to reject obvious typos before spending a lookup.
- Sends the canonical form to the API.
Validating client-side saves you from paying for lookups on plainly malformed input — and because VehicleMatic only bills successful lookups, clean input keeps costs predictable.
From plate to full profile: chaining lookups
The real power of a VRM API is composition. One registration can drive several products, each returning the same envelope shape so they slot into a single internal model:
- Vehicle Details — the core DVLA attributes.
- MOT History — every test, mileage and advisory.
- Vehicle Valuation — trade/retail/private values.
- Provenance Check — finance, write-off, stolen markers.
- Vehicle Images and Spec & Options — a studio image and the factory build.
Call only the ones your use case needs. If you routinely need most of them, the Full Vehicle Check bundles the essentials into a single call at a lower combined price.
Building a plate decoder UI
If you're putting a plate box in front of users — a dealer appraisal screen, an insurance quote form, a "check your vehicle" widget — the pattern is:
- A single input that accepts a registration.
- Client-side normalise + validate.
- Fire the base VRM lookup; render make/colour/fuel/year immediately for a fast first paint.
- Lazily enrich with valuation, MOT history or provenance as the user drills in.
Our own free number plate checker is a live example of the front end of this pattern — a useful reference for what a clean plate-to-data experience feels like.
Rate limits, latency and reliability
VRM lookups sit in real-time user journeys, so latency matters. Keep the first call minimal (base details) for snappy feedback, and enrich in the background. Handle the "no record found" case gracefully — you won't be charged for it, but your UI should say so cleanly rather than erroring.
Getting started
Create an account for 10 free lookups, generate an API key, and make your first VRM call. Model volume on the pricing page or the cost calculator.
Frequently asked questions
What's the difference between a VRM lookup and an HPI check? A VRM lookup resolves the vehicle's attributes; an HPI-style provenance check adds finance, write-off and stolen markers. Both start from the same registration.
Do I get make and model? You get make and core attributes from the base lookup; precise model/trim comes from combining it with specification data.
What if the plate doesn't exist? You get a clean "no record" response and aren't billed for it.
Start with Vehicle Details, or browse the full API catalog.