Vehicle Intelligence
Enrich any UK vehicle registration with DVLA details, DVSA MOT intelligence, odometer trend, and ULEZ compliance.
Endpoints
GET /v1/vehicle/{registration} POST /v1/vehicle/bulk POST /v1/vehicle/bulk/async GET /v1/vehicle/bulk/jobs/{jobId} DELETE /v1/vehicle/bulk/jobs/{jobId}Request
Pass any UK registration plate — with or without spaces, upper or lower case (e.g. AB12CDE or ab12 cde). Returns enrichmentPending: true for plates not yet in the database — retry after the Retry-After header value.
Response
Returns a JSON object. See the signal reference for all fields and values. All field names are camelCase.
{
"registration": "AB12CDE",
"make": "VOLKSWAGEN",
"fuelType": "diesel",
"yearOfManufacture": 2012,
"vehicleAgeYears": 14,
"summary": {
"buyRecommendation": "good",
"vehicleRiskLevel": "low",
"motRiskLevel": "low"
},
"signals": {
"euroEmissionStandard": "EURO 5",
"ulezCompliant": false,
"motStatus": "valid",
"motExpiryDate": "2026-11-14",
"odometerTrend": "consistent",
"totalMotTests": 8,
"motPassRate": 0.875
}
}Bulk lookups
Available on Starter and above. Quota is consumed upfront for the full batch. Vehicle lookups in bulk are processed sequentially to stay within DVLA/DVSA rate limits.
| Tier | Registrations per call |
|---|---|
| Free | Not available |
| Micro | Not available |
| Starter | 50 |
| Pro | 100 |
| Business | 250 |
| Enterprise | 500 |
Synchronous bulk
All results returned immediately. Best for smaller batches where you want inline results.
// Request
{ "registrations": ["AB12CDE", "XY21ZZZ", "PQ09ABC"] }
// Response 200
{
"total": 3,
"results": [
{ /* full vehicle response */ },
{ "registration": "XY21ZZZ", "error": "not_found" },
{ "registration": "PQ09ABC", "error": "invalid_format" }
]
}Async bulk
Submit a job and poll for results. Recommended for larger batches. Jobs expire 24 hours after submission.
// Request
{ "registrations": ["AB12CDE", "XY21ZZZ"] }
// Response 202
{
"jobId": "vbulk_4f3a9c1e72b8d5c",
"status": "queued",
"total": 2,
"pollUrl": "/v1/vehicle/bulk/jobs/vbulk_4f3a9c1e72b8d5c"
}{
"jobId": "vbulk_4f3a9c1e72b8d5c",
"status": "complete",
"total": 2,
"done": 2,
"createdAt": "2026-05-18T10:00:00Z",
"completedAt": "2026-05-18T10:00:14Z",
"expiresAt": "2026-05-19T10:00:00Z",
"results": [ /* full vehicle responses */ ]
}Status lifecycle: queued → processing → complete | failed → expired
Use DELETE /v1/vehicle/bulk/jobs/{jobId} to clean up a job before it expires.