Full vehicle check API — DVLA, MOT, valuation and provenance in one call
Everything in one call: details, MOT history, valuation and provenance.
Also known as: full vehicle check · complete car check · all-in-one vehicle report
Overview
The complete picture in a single request: DVLA details, full MOT history, a current valuation and the provenance risk check: merged into one normalised response.
Cheaper than calling each product separately, and one round-trip for your users.
Features
- DVLA vehicle details
- Complete MOT history
- Current market valuation
- Write-off, finance and stolen checks
- One request, one merged response
Example response
A successful lookup for AB12CDE. Illustrative values.
{
"data": {
"vrm": "AB12CDE",
"registration_number": "AB12CDE",
"make": "FORD",
"model": "FIESTA",
"colour": "BLUE",
"fuel_type": "PETROL",
"engine_capacity": 1499,
"year_of_manufacture": 2019,
"month_of_first_registration": "2019-03",
"co2_emissions": 119,
"tax_status": "Taxed",
"tax_due_date": "2026-09-01",
"mot_status": "Valid",
"mot_expiry_date": "2026-03-14",
"wheelplan": "2 AXLE RIGID BODY",
"export_marker": false,
"mot_history": [
{
"test_date": "2025-03-12T10:41:07.000Z",
"result": "PASSED",
"odometer": 48210,
"odometer_unit": "MI",
"expiry_date": "2026-03-14",
"advisories": [
"Nearside front tyre worn close to the legal limit"
]
},
{
"test_date": "2024-03-05T09:12:33.000Z",
"result": "FAILED",
"odometer": 36940,
"odometer_unit": "MI",
"expiry_date": null,
"advisories": [
"Offside rear brake disc worn"
]
}
],
"mot_summary": {
"next_due_date": "2026-03-14",
"has_outstanding_recall": false
},
"valuation": {
"trade": 6450,
"retail": 8195,
"private": 7300,
"currency": "GBP"
},
"provenance": {
"write_off": false,
"write_off_category": null,
"write_off_date": null,
"outstanding_finance": false,
"finance_agreement_count": 0,
"stolen": false,
"scrapped": false,
"scrapped_date": null,
"certificate_of_destruction": false,
"exported": false,
"export_date": null,
"imported": false,
"import_date": null,
"imported_from_outside_eu": false,
"keeper": {
"previous_keeper_count": 2,
"latest_keeper_change_date": "2023-04-18T00:00:00Z",
"latest_v5c_issued_date": "2023-04-21T00:00:00Z"
},
"mileage": {
"anomaly_detected": false,
"record_count": 3,
"records": [
{
"date": "2022-05-14T09:31:22Z",
"mileage": 24118,
"source": "MOT"
},
{
"date": "2023-05-20T11:02:48Z",
"mileage": 33042,
"source": "MOT"
},
{
"date": "2024-05-22T14:15:03Z",
"mileage": 41967,
"source": "MOT"
}
]
},
"plate_changes": {
"count": 1,
"records": [
{
"date": "2021-09-02T00:00:00Z",
"previous_vrm": "XY09ZZZ",
"current_vrm": "AB12CDE"
}
]
},
"colour_changes": {
"count": 1,
"previous_colour": "Blue",
"latest_change_date": "2020-11-30T00:00:00Z"
},
"vin_last_5": "48213"
}
},
"credit_balance": 499
}
Fields returned
| Field | Type | Description |
|---|---|---|
| registration_number | string | The vehicle registration mark (VRM). |
| make | string | Manufacturer, as recorded by the DVLA. |
| model | string | Model, resolved from the MOT record where available. |
| colour | string | Current registered colour, normalised. |
| fuel_type | string | Fuel type, normalised (PETROL, DIESEL, ELECTRIC…). |
| engine_capacity | integer | Engine capacity in cc. |
| year_of_manufacture | integer | Year the vehicle was manufactured. |
| month_of_first_registration | string | Year and month the vehicle was first registered (YYYY-MM). |
| co2_emissions | integer | CO₂ emissions in g/km. |
| tax_status | string | Current tax status (Taxed, Untaxed, SORN). |
| tax_due_date | date | Date the current tax expires. |
| mot_status | string | Current MOT status. |
| mot_expiry_date | date | Expiry date of the current MOT certificate. |
| wheelplan | string | DVLA wheelplan description. |
| export_marker | boolean | Whether the vehicle is marked for export. |
| mot_history[].test_date | datetime | When the test was carried out (ISO 8601). |
| mot_history[].result | string | PASSED or FAILED. |
| mot_history[].odometer | integer | Odometer reading recorded at the test. |
| mot_history[].odometer_unit | string | MI or KM. |
| mot_history[].expiry_date | date|null | Certificate expiry (null on a failure). |
| mot_history[].advisories | array | Advisory and failure notes recorded by the tester. |
| mot_summary.next_due_date | date|null | When the next MOT is due. |
| mot_summary.has_outstanding_recall | boolean | Whether DVSA holds an outstanding safety recall for this vehicle. |
| valuation.trade | integer | Trade-in value. |
| valuation.retail | integer | Forecourt / retail value. |
| valuation.private | integer | Private-sale value. |
| valuation.currency | string | ISO currency code. |
| provenance.write_off | boolean | Whether the vehicle has been written off. |
| provenance.write_off_category | string|null | Insurance write-off category (A, B, S, N). |
| provenance.write_off_date | string|null | Date the write-off was recorded. |
| provenance.outstanding_finance | boolean | Whether a finance agreement is recorded against the vehicle. |
| provenance.finance_agreement_count | integer | Number of finance agreements on record. |
| provenance.stolen | boolean | Police stolen marker. |
| provenance.scrapped | boolean | Recorded as scrapped. |
| provenance.scrapped_date | string|null | Date the vehicle was recorded as scrapped. |
| provenance.certificate_of_destruction | boolean | Whether a Certificate of Destruction has been issued. |
| provenance.exported | boolean | Recorded as exported. |
| provenance.export_date | string|null | Date of export. |
| provenance.imported | boolean | Recorded as an import. |
| provenance.import_date | string|null | Date the vehicle was imported. |
| provenance.imported_from_outside_eu | boolean | Whether the import came from outside the EU. |
| provenance.keeper.previous_keeper_count | integer | Number of previous registered keepers. |
| provenance.keeper.latest_keeper_change_date | string|null | Date of the most recent keeper change. |
| provenance.keeper.latest_v5c_issued_date | string|null | Date the most recent V5C was issued. |
| provenance.mileage.anomaly_detected | boolean | Whether the mileage record is inconsistent — what the trade calls clocking. |
| provenance.mileage.record_count | integer | Number of odometer readings on record. |
| provenance.mileage.records[].date | string | Date the reading was taken. |
| provenance.mileage.records[].mileage | integer | Odometer reading. |
| provenance.mileage.records[].source | string | Where the reading came from. |
| provenance.plate_changes.count | integer | Number of registration transfers. |
| provenance.plate_changes.records[].date | string | Date of the transfer. |
| provenance.plate_changes.records[].previous_vrm | string | Registration before the transfer. |
| provenance.plate_changes.records[].current_vrm | string | Registration after the transfer. |
| provenance.colour_changes.count | integer | Number of recorded colour changes. |
| provenance.colour_changes.previous_colour | string|null | Colour before the most recent change. |
| provenance.colour_changes.latest_change_date | string|null | Date of the most recent colour change. |
| provenance.vin_last_5 | string|null | Last five characters of the VIN, for checking against the vehicle. |
- Is this cheaper than calling each product?
-
Yes. the bundle costs fewer credits than the individual products it contains, and it is a single round-trip.
- What happens if one source is unavailable?
-
The response still returns with whatever resolved successfully: an unavailable source simply omits its block, so you never get fabricated data.
Who uses this
You might also need
Official registers
Vehicle records from the DVLA Vehicle Enquiry Service, MOT records from the DVSA MOT History API.
Charged on delivery
You are charged on a successful lookup. A lookup that returns nothing costs nothing.
No lock-in
No contract and no minimum. Credits last 12 months; monthly plans are rolling.
UK data protection
You act as controller and we act as processor for delivery, under the UK GDPR and the Data Protection Act 2018.
Automating Driver Licence Checks for Fleets
Duty of care, how often to check driving licences, grey-fleet obligations, and how to automate DVLA share-code checks ac...
Read the guide → API GuidesHow to Access DVLA Vehicle Data via API
The DVLA Vehicle Enquiry Service (VES) API versus a commercial gateway: what registration data you get, what you don't,...
Read the guide → Industry SolutionsOutstanding Finance & Write-Off Checks for Lenders
The vehicle is your security. Check outstanding finance, write-off history and current value before you advance, as an a...
Read the guide → Free toolNumber plate checker
Validate a UK registration and decode the year and period it was issued.
Open the tool → Free toolAPI cost calculator
Estimate your monthly cost from your expected lookup volume and product mix.
Open the tool →