The official DVLA Vehicle Enquiry Service gives you tax status, MOT status, and vehicle specification — one vehicle at a time, no history, no model name, no scoring. Zyfy wraps the same OGL-licensed DVLA data with computed DVSA MOT intelligence, odometer fraud detection, ULEZ compliance, and a computed buy recommendation, behind a single API key.
Built on DVLA and DVSA data under the Open Government Licence v3.0. Not affiliated with DVLA.
{
"registration": "AB12CDE",
"make": "VOLKSWAGEN",
"colour": "SILVER",
"fuelType": "diesel",
"engineCapacityCc": 1968,
"yearOfManufacture": 2012,
"signals": {
"taxStatus": "taxed",
"taxDueDate": "2026-12-01",
"taxDaysRemaining": 209,
"vedBand": "standard",
"vedAnnualCostGbp": 190,
"co2EmissionsGPerKm": 117,
"euroEmissionStandard": "EURO 5",
"ulezCompliant": false,
"markedForExport": false,
"motStatus": "valid",
"motExpiryDate": "2026-11-14",
"odometerTrend": "consistent"
},
"summary": {
"buyRecommendation": "good",
"colourChangeIndicated": false
},
"checkedAt": "2026-07-09T10:22:31Z"
}There's no single thing called "the DVLA API" — what people usually mean is the Vehicle Enquiry Service (VES), DVLA's free public lookup that returns registration, tax, and current MOT status for a UK-registered vehicle. It's genuinely useful and genuinely free, but it has real gaps that catch people out when they try to build something on top of it directly.
VES is a single-vehicle, single-snapshot lookup: send a registration, get back the current state. It doesn't return the vehicle's model — Ford, not Ford Focus — because DVLA's own data doesn't carry that field reliably. It doesn't return MOT test history; that lives in a completely separate DVSA API with its own registration process. It doesn't derive ULEZ compliance, road tax cost, or anything else — you get the raw fields (euro emission standard, CO2, fuel type) and have to work out the rest yourself against TfL and DVLA rate tables that change periodically.
None of that is a criticism of DVLA — VES does exactly what it says. The gap is that most real use cases (a used car listing, a fleet check, an insurance quote) need MOT history and DVLA data together, plus some interpretation of what the raw fields mean. That's the layer Zyfy adds.
Same underlying government data. Different amount of work before it's useful.
| Field | DVLA VES (official) | Zyfy |
|---|---|---|
| Registered keeper name/address | Not returned (data protection) | Not returned (same restriction applies to us) |
| Model name (e.g. "Golf") | Not returned — make only | Not returned — same DVLA limitation, documented rather than hidden |
| Tax status & due date | ✓ | ✓ plus VED band and exact annual cost in GBP |
| MOT status (live) | ✓ | ✓ |
| MOT intelligence (history-derived) | ✗ — separate DVSA API, separate registration, raw records only | ✓ pass rate, trend, and defect clusters merged into the same response — not raw test records |
| Odometer trend / clocking detection | ✗ | ✓ computed from the full MOT mileage reading history |
| ULEZ compliance | ✗ — you derive it from euro status yourself | ✓ pre-computed boolean |
| Bulk / multiple registrations per call | ✗ — one vehicle per request | ✓ up to 500 per call on higher tiers, plus async bulk jobs |
| Buy recommendation / risk scoring | ✗ | ✓ good / consider / caution / avoid, fully derived |
| Setup | Free registration, single-vehicle lookups only | Free tier, 100 requests/month, one API key |
A subset of what's returned — every field is included on every plan, including free. View the full signal reference →
signals.taxStatus string | nulltaxed, sorn, untaxed, or expired. Direct from DVLA VES.
signals.vedBand string | null"A"–"M" for pre-April 2017 registrations (CO2-banded), "standard" for post-2017, "exempt" for pre-1980. Null when CO2 or registration date is unavailable.
signals.vedAnnualCostGbp integer | nullActual annual road tax cost in GBP, computed from current DVLA rate bands — updated after each Spring Statement, not a static lookup table left to rot.
signals.co2EmissionsGPerKm integer | nullCO2 emissions figure from the V5C, as returned by DVLA.
signals.euroEmissionStandard string | nullEURO 1–6. Drives ULEZ compliance directly.
signals.markedForExport booleanTrue when DVLA has recorded the vehicle as marked for export — a flag worth surfacing before any purchase decision.
Fraud detection
When the colour recorded on the current V5C (DVLA) differs from the colour recorded at the vehicle's last MOT test (DVSA), Zyfy flags colourChangeIndicated automatically. It's a common indicator of a post-accident respray or an identity mismatch — and it's only visible if you're already merging both data sources, which is exactly what a raw DVLA-only integration can't do.
Yes. The DVLA Vehicle Enquiry Service (VES) is free to register for directly with DVLA, but it returns one vehicle per request, no MOT history, and no model name. Zyfy wraps the same OGL-licensed DVLA data — plus DVSA MOT history and computed risk signals — behind a single free-tier API key, no separate DVLA registration required.
No. Zyfy holds its own DVLA and DVSA credentials and re-publishes the data through one API, so you only need a Zyfy API key. If you’d rather integrate with DVLA directly, VES is free to register for on gov.uk — you’ll just be building the MOT-history merge, ULEZ derivation, and risk scoring yourself.
Yes. POST /v1/vehicle/bulk accepts up to 500 registrations per call depending on your plan (Starter: 50, Pro: 100, Business: 250, Enterprise: 500), and POST /v1/vehicle/bulk/async runs larger jobs in the background with a poll URL for results. The official DVLA VES API is single-vehicle only.
No — not from DVLA directly, and not from Zyfy. Keeper details are protected under data protection law and are not exposed through any public vehicle-lookup API. Anyone claiming otherwise is not using an official DVLA source.
DVLA (Vehicle Enquiry Service) covers registration, tax, and current MOT status — one snapshot in time. DVSA’s separate MOT History API covers every past MOT test, including advisories and failures. Zyfy merges DVLA’s data with MOT intelligence computed from that full DVSA test history into a single response — not the raw DVSA records themselves — so you never need to call two government APIs and build the analysis layer yourself. See our dedicated MOT History API page for the DVSA side.
DVLA’s free API returns make (e.g. "FORD") but not model (e.g. "FOCUS") — this is a limitation of the underlying government data, not something Zyfy withholds. We document it explicitly rather than guessing a model from other fields, which would introduce silent errors into anything built on top of it.
Contains public sector information licensed under the Open Government Licence v3.0.
Free tier. No credit card. 100 requests/month.
Get your free API key