Documentatie · API v1

Kentekenzicht API v1

Eén REST-API over de volledige Nederlandse voertuigregistratie, met de afgeleide laag die de RDW niet levert: leeftijdgenormaliseerde betrouwbaarheid met betrouwbaarheidsinterval, risicovlaggen en de 2026-belastingen. Tarieven en toegang staan op de API-pagina.

Basis-URL

Alle endpoints staan onder https://kentekenzicht.nl/v1. Antwoorden zijn JSON (UTF-8). Elk antwoord bevat bron en peildatum; neem die over wanneer u onze cijfers toont of citeert.

Authenticatie

Stuur uw sleutel mee als bearer-token. Sleutels beginnen met kz_live_ (productie) of kz_test_ (sandbox). Wij bewaren alleen een SHA-256-hash van uw sleutel: raakt u hem kwijt, dan geven we een nieuwe uit, terughalen kan niet.

curl -H "Authorization: Bearer kz_live_…" \
  https://kentekenzicht.nl/v1/health

Behandel de sleutel als een wachtwoord: alleen server-naar-server, nooit in browsercode of een mobiele app.

Limieten

TariefCalls per maand
Gratis (sandbox)500
Start10.000
Pro100.000
Schaal500.000

Elk antwoord bevat X-RateLimit-Limit, X-RateLimit-Remaining en X-RateLimit-Reset (unix-tijd waarop de teller terugloopt: de 1e van de volgende maand, UTC). Boven de limiet krijgt u 429.

Kenteken opvragen

GET /v1/kenteken/{kenteken} geeft het volledige beeld van één voertuig. Streepjes in het kenteken zijn toegestaan.

Dekking op dit moment. Dit endpoint draait op een steekproef van het kentekenregister, niet op het volledige wagenpark: onbekende kentekens geven 404. De modelcijfers onder /v1/model zijn wél fleet-breed. Volledige kentekendekking is in voorbereiding — vraag de actuele status op voordat u hierop bouwt.

GET /v1/kenteken/AB-123-C?provincie=Utrecht

# provincie is optioneel. Laat u hem weg, dan krijgt u "mrbPerProvincie":
# de wegenbelasting voor alle twaalf provincies (de opcenten verschillen).

Het blok risico.vlaggen bevat nul of meer van:

VlagBetekenis
tellerstand_onlogischRDW beoordeelt de tellerstandhistorie als onlogisch (NAP-signaal)
openstaande_terugroepactieer staat een terugroepactie open
niet_wam_verzekerdgeregistreerd als niet WAM-verzekerd
geexporteerdexportindicatie geregistreerd
taxiverledenooit als taxi geregistreerd
apk_verlopende APK-vervaldatum ligt in het verleden

Een ontbrekend veld levert nooit een vlag op. Als de RDW niets over de WAM-verzekering publiceert, betekent dat niet "onverzekerd", en dan zeggen wij dat ook niet.

terugroepacties. Dit veld is nu een lege lijst: wij verwerken de RDW-terugroepregisters nog niet. De vlag openstaande_terugroepactie komt uit het kentekenregister zelf en is wél betrouwbaar — gebruik die, en lees een lege terugroepacties niet als "geen terugroepacties".

Model-betrouwbaarheid

GET /v1/model/{merk}/{model}/{bouwjaar}

GET /v1/model/volkswagen/golf/2015

{
  "slug": "volkswagen-golf-2015",
  "aandeelMetGebrek": 0.25,
  "interval95": [0.242, 0.258],
  "n": 12000,
  "relatieveIndex": 0.98,
  "kenmerkendeGebreken": [ { "code": "…", "omschrijving": "…", "lift": 1.8 } ],
  "toelichting": "Aandeel van het wagenpark met een geregistreerd APK-gebrek — géén slagingspercentage."
}

Cohorten onder de publicatiedrempel (wagenpark ≥ 200 én ≥ 100 gebrekregistraties) krijgen bewust geen cijfer en geven 404. Geen score zonder n. Zo rekenen wij →

Wegenbelasting berekenen

POST /v1/mrb

POST /v1/mrb
Content-Type: application/json

{ "gewichtKg": 1300, "brandstof": "diesel", "provincie": "Utrecht", "fijnstof": true }

brandstof: petrol, diesel, lpg_g3, electric, hydrogen of phev. gewichtKg is de massa rijklaar (vanaf 1 juli 2026 de grondslag). Het antwoord splitst hoofdsom, toeslagen, fijnstof en provinciale opcenten uit.

BPM berekenen

POST /v1/bpm

POST /v1/bpm
Content-Type: application/json

{ "co2": 120, "diesel": false, "leeftijdMaanden": 36, "kmStand": 60000 }

Levert de bruto BPM tegen 2026-tarieven en de restwaarde na de forfaitaire afschrijving. Een koerslijst of taxatierapport kan lager uitvallen; die routes rekenen wij niet door.

Foutcodes

{
  "fout": {
    "code": "limiet_bereikt",
    "bericht": "Maandlimiet van 10000 calls bereikt. …"
  }
}
HTTPcodeWanneer
400ongeldig_kentekenkenteken is geen zes letters/cijfers
400ongeldige_invoerontbrekend of verkeerd getypeerd veld in de body
401geen_sleutelgeen Authorization-header meegestuurd
401ongeldige_sleutelsleutel bestaat niet of is ingetrokken
404niet_gevondenonbekend kenteken of niet-gepubliceerd cohort
429limiet_bereiktmaandlimiet bereikt
500interne_foutfout aan onze kant

Versiebeleid & actualiteit

Het versienummer staat in het pad. Binnen v1 voegen we alleen velden toe; velden verwijderen of hernoemen doen we niet zonder een nieuwe versie. De dataset wordt dagelijks bijgewerkt vanuit de RDW open data; peildatum in elk antwoord zegt hoe vers de cijfers zijn. Belastingtarieven volgen het kalenderjaar.

Gebruik & licentie

De onderliggende RDW-data is CC-0; de afgeleide laag is ons werk. U mag die verwerken in uw eigen product, maar niet als losse dataset doorverkopen. De sandbox vereist een zichtbare bronvermelding. Wij leveren geen persoonsgegevens: geen tenaamstelling, geen adressen.

Sandbox-sleutel aanvragen → · vragen: redactie@kentekenzicht.nl

Onafhankelijke dienst op basis van RDW Open Data (CC-0), niet afkomstig van of goedgekeurd door de RDW. Belastingbedragen zijn indicaties; de Belastingdienst stelt het definitieve bedrag vast. Aan de uitkomsten kunnen geen rechten worden ontleend.