Getting a key
A key comes with the maker plan. For anything else, email hello@n84.dev with what you are building; we answer within a working day. Keys allow 10,000 calls a day.
Send the key on every call:
curl -H "Authorization: Bearer YOUR_KEY" "https://db.n84.dev/v1/lists"
Endpoints
GET /v1/lists
Every list we check: id, name, country, lane, publisher, licence, attribution, when history starts, when last checked and last changed.GET /v1/lookup?code=KA27328
A line by the code the list prints (ISDE meldcode, MCS number, OZEV reference, TVV). Returnsmatch: exactornone.GET /v1/lookup?brand=Vaillant&model=aroTHERM%20plus%20VWL%2055/6
A model by name. One clear match returns its listings on every list for that product type, includingnot_foundfor lists it is absent from. Several candidates come back asmatch: severalwith their ids.GET /v1/models/{id}
One model: its listings and its full change history.GET /v1/changes?since=2026-10-01
Changes found on or after a date, newest first. Narrow withlist=,lane=(heat-pumps, vehicles, chargepoints, glazing, insulation, solar-water, ventilation),kind=(added, removed, edited). Page withlimit=(up to 500) andoffset=;next_offsetis null on the last page.
What a listing looks like
{
"list": "uk-bus-heat-pumps",
"list_name": "Boiler Upgrade Scheme Product Eligibility List",
"country": "GB",
"status": "listed", // listed | removed | not_found
"code": "KIWA 00044/001 HP",
"first_seen": "2026-10-12", // the day our record of it began
"last_seen": "2026-10-12",
"removed_on": null,
"last_checked": "2026-10-12",
"grade": "A", // A: the list's own line; B: joined by maker and model name
"as_printed": { "brand": "Vaillant Group UK Ltd", "model": "aroTHERM Plus 10kW VWL 105/6 A S2", "Certified Until": "2026-10-26", ... },
"source": "https://...", // the official page
"attribution": "Contains public sector information licensed under the Open Government Licence v3.0.",
"history_starts": "2026-10-12"
}
Rules
statussays what the list printed onlast_checked. It never says a product is eligible; the official list and the scheme's rules always prevail.- Pass the
attributionthrough when you show the data; each list's licence requires it. - Errors are JSON with
error.code:missing_key,bad_key,daily_limit(429, resets at midnight UTC),bad_request,not_found. - Lists we check right now:
de-bafa-heat-pumps,es-auto-plus,fr-ev-score,uk-ozev-chargepoints,uk-bus-heat-pumps,uk-zev-grants,nl-isde-glazing,nl-isde-heat-pumps,nl-isde-insulation,nl-isde-solar-boilers,nl-isde-ventilation. - No key? The RSS feed carries every change, free.