Manufacturer service history, as an API
One authenticated call returns a vehicle's official manufacturer service record as structured JSON — dates, mileage readings, the workshop that did the work and what it covered. Render it in your listings, your valuations or your appraisal flow.
Access is arranged directly with us — tell us your volume and use case and we will come back with a rate.
{
"success": true,
"data": {
"vin": "WBA8E9G50GNT12345",
"vehicle": {
"make": "BMW",
"model": "3 Series",
"yearOfManufacture": 2018,
"fuelType": "Diesel"
},
"serviceHistory": [
{
"dateOfServiceEvent": "2024-01-15",
"mileageObserved": 71400,
"mileageUnit": "km",
"serviceProvider": "BMW Park Lane",
"serviceType": "Oil service",
"serviceActions": [
"Engine oil and filter",
"Pollen filter"
]
}
],
"hasServiceHistory": true
}
}
Who this is built for
If a vehicle's servicing record changes what your users decide, it belongs in your product rather than in a separate tab.
Marketplaces and remarketing
Show a servicing record inside the listing itself. Buyers bid with more confidence and vendors field fewer questions about a car's past.
Dealer groups and software vendors
Drop servicing data into an appraisal, stock-taking or DMS workflow so a buyer is not guessing at trade-in time.
Valuation, finance and insurance
A documented servicing record is a real input to residual value and to risk. Pull it at the point the decision is made.
Fleet, leasing and rental
Reconcile what a vehicle's manufacturer network recorded against your own maintenance log before a vehicle is defleeted.
What comes back
A predictable JSON body you can render directly. No scraping, no PDF parsing, no branding of ours anywhere in the payload.
- Date of each recorded service event
- Mileage reading captured at the time, with its unit
- The workshop or dealership that carried out the work
- Service type and the individual actions recorded against it
- Vehicle identity — make, model, year, fuel and engine
POST /api/v1/lookup
Authorization: Bearer fsh_live_…
{ "vin": "WBA8E9G50GNT12345" }The request — a VIN is all you send
{
"success": true,
"data": {
"vin": "WBA8E9G50GNT12345",
"vehicle": {
"make": "BMW",
"model": "3 Series",
"yearOfManufacture": 2018,
"fuelType": "Diesel"
},
"serviceHistory": [
{
"dateOfServiceEvent": "2024-01-15",
"mileageObserved": 71400,
"mileageUnit": "km",
"serviceProvider": "BMW Park Lane",
"serviceType": "Oil service",
"serviceActions": [
"Engine oil and filter",
"Pollen filter"
]
}
],
"hasServiceHistory": true
}
}
Example response — abridged
How an integration works
- 1
Tell us what you need
Volume, markets and how you plan to display the data. We come back with a rate and confirm coverage against the marques you actually trade.
- 2
We issue your credentials
A key and a signing secret, scoped to your account. Optionally locked to your egress addresses, with a rate limit set to your volume.
- 3
Call it, or let us call you
Request and wait for the response, or submit a job and receive a signed callback when the record is ready. Both are supported from day one.
Coverage, described honestly
Coverage is what can be retrieved, not how often something comes back. Both numbers matter to you, so here is the distinction we work to.
44 marques are covered from model year 2012 onwards, across European markets. Older vehicles do sometimes return records, but we never promise it.
Depth varies by manufacturer. Some return a full work description and the servicing workshop; others return the event and the mileage only. We will tell you which is which for your marque mix before you commit.
How often a record comes back depends on the vehicles you look up, not on the feed. A book of ex-fleet vans serviced outside the franchised network returns far less than a book of retail cars.
What a gap actually means
No record found means the manufacturer's network holds nothing for that vehicle — not that the vehicle was never serviced. Independent garage work is invisible to these systems. Any wording you put in front of your own users should say so, and we will help you get that wording right.
Built for production traffic
Token authentication
Bearer credentials, hashed at rest, revocable per key.
Signed callbacks
Every callback carries an HMAC-SHA256 signature and a timestamp, retried on a fixed schedule until acknowledged.
Safe retries
Send an idempotency key and a repeated request returns the original response. Never charged twice.
Address allow-list
Optionally restrict a key to your own egress ranges, so a leaked credential is unusable elsewhere.
Rate limits set to you
The default is deliberately low. Yours is raised to match contracted volume.
Machine-readable spec
An OpenAPI 3.1 description, so your team can generate a client rather than hand-roll one.
How pricing works
Straightforward and volume-based. We quote once we know what you are looking up and how much of it.
- You pay per result, not per request
- A lookup that finds nothing is not charged for
- The rate falls as monthly volume rises
- Invoiced monthly, with no minimum term
We do not publish a rate card because the right rate depends on volume, market and marque mix. Tell us those three things and you will have a figure back quickly.
Request pricingTalk to us about API access
Tell us a little about the integration and we will reply with coverage detail and a rate. We read every message ourselves.
Common questions
Is the data branded?
No. The response contains vehicle data and nothing of ours — no logo, no wordmark, no link back. It is yours to render as your own.
How long does a lookup take?
A record is fetched live from the manufacturer network, so expect tens of seconds rather than milliseconds. For volume traffic you submit a job and we call you back when it is ready, so nothing in your application has to wait.
Can we store what we retrieve?
Retention and re-display are agreed in your contract rather than assumed. It matters most if you relist the same vehicle repeatedly, and we will set out exactly what is permitted before you sign.
What happens when a lookup finds nothing?
You get a clear empty result and it is not billed. A genuine empty answer and a provider fault are reported differently, so you never bill your own users for an outage of ours.
Can we trial it first?
Yes. We normally start with a small paid proof of concept, credited against your first invoice, so you can measure return rates against your own stock rather than ours.
Do you sign a data processing agreement?
Yes. Enterprise agreements cover data protection, permitted display and support expectations. Send your own paper if you prefer to work from it.
Ready to look at the data?
Send us your volume and the markets you operate in. You will get coverage detail and a rate, not a sales sequence.
Request API access