KVK-vestigingen opvragen: vestigingsnummer vs KVK-nummer
Wat is het verschil tussen een KVK-nummer en een vestigingsnummer, en hoe haal je alle vestigingen van een bedrijf op via de API? Lees de gids.
Wie een tijdje met KVK-data werkt, loopt er vroeg of laat tegenaan: een klant geeft een KVK-nummer op, maar het adres op de factuur hoort bij een filiaal in een andere stad. Of je CRM toont drie keer hetzelfde bedrijf, omdat iemand drie winkels als losse klanten heeft aangemaakt. Het probleem zit bijna altijd in hetzelfde verschil: een bedrijf is niet hetzelfde als een vestiging.
Het Handelsregister telde begin 2026 ruim 2,5 miljoen vestigingen. Een groot deel daarvan hoort bij een onderneming met maar één adres, maar supermarktketens, franchisenemers, installatiebedrijven en zorginstellingen hebben er soms tientallen. In dit artikel leggen we uit hoe het KVK-nummer en het vestigingsnummer zich tot elkaar verhouden, en hoe je alle vestigingen van een bedrijf ophaalt via de KVKBase API.
KVK-nummer en vestigingsnummer: wat is het verschil?
Het KVK-nummer bestaat uit 8 cijfers en hoort bij de inschrijving van de onderneming of rechtspersoon. Het blijft hetzelfde zolang het bedrijf bestaat, ook als het verhuist of een nieuwe handelsnaam aanneemt. Het is het nummer dat op facturen, websites en offertes staat, en het nummer waarmee je in de meeste systemen een bedrijf identificeert. Meer over het format en de controles lees je in onze gids over KVK-nummers opzoeken.
Het vestigingsnummer heeft 12 cijfers en hoort bij een fysieke locatie waar de onderneming actief is. Elke vestiging krijgt een eigen nummer, met een eigen adres, eigen handelsnamen en eigen activiteiten. Eén vestiging is de hoofdvestiging, de rest zijn nevenvestigingen. Verhuist een filiaal, dan verandert het adres van die vestiging, maar het KVK-nummer van het bedrijf blijft staan.
Je kunt het zien als een boom: het KVK-nummer is de stam, de vestigingen zijn de takken. Een eenmanszaak kan ook meerdere vestigingen hebben, bijvoorbeeld een kapper met twee salons. Andersom bestaat er ook een rechtspersoon zonder vestiging: een stichting die alleen vermogen beheert en geen onderneming drijft, staat wel in het register maar heeft geen locatie waar ze actief is.
Wanneer heb je vestigingsdata nodig?
Voor veel toepassingen is het KVK-nummer genoeg. Wil je alleen weten of een bedrijf bestaat en actief is, dan volstaat een gewone lookup. Vestigingen worden pas belangrijk zodra de locatie zelf ertoe doet.
Neem een groothandel die levert aan horeca. De klant bestelt onder één KVK-nummer, maar de pallets moeten naar vijf verschillende restaurants. Als je bij het aanmaken van het klantaccount alle vestigingen ophaalt, kan de klant bij het afrekenen gewoon een afleveradres kiezen uit de lijst, zonder typefouten in postcodes. Hetzelfde geldt voor een serviceorganisatie die monteurs naar locaties stuurt, of een verzekeraar die per locatie een polis afsluit.
Ook in sales en marketing is het verschil relevant. Een keten met veertig filialen is een heel andere lead dan een bedrijf met één kantoor, ook al zijn ze allebei een BV met dezelfde SBI-code. Het aantal vestigingen is een sterk signaal voor omvang en spreiding, en de activiteiten kunnen per vestiging verschillen. Een bouwbedrijf kan op het ene adres een kantoor hebben en op het andere een werkplaats. In ons artikel over SBI-codes lees je hoe je die activiteiten indeelt.
Alle vestigingen ophalen via de API
De KVKBase API heeft een apart endpoint voor vestigingen: GET /v1/lookup/{kvkNumber}/branches. Je geeft het KVK-nummer mee en krijgt de lijst met vestigingen terug, elk met vestigingsnummer, naam, adres, activiteiten en een vlag die aangeeft of het de hoofdvestiging is. Een call kost 5 tokens.
import requests
API_KEY = "jouw_api_sleutel"
def haal_vestigingen_op(kvk_nummer: str) -> dict:
response = requests.get(
f"https://api.kvkbase.nl/v1/lookup/{kvk_nummer}/branches",
headers={"Authorization": f"Bearer {API_KEY}"},
timeout=10,
)
response.raise_for_status()
return response.json()
data = haal_vestigingen_op("12345678")
for v in data["branches"]:
plaats = v["address"]["city"] if v["address"] else "onbekend"
soort = "hoofdvestiging" if v["isMain"] else "nevenvestiging"
print(f"{v['branchNumber']} {v['name']} ({plaats}, {soort})")
Een response ziet er ongeveer zo uit:
{
"kvkNumber": "12345678",
"companyName": "Bakkerij De Korenaar B.V.",
"totalBranches": 2,
"branches": [
{
"branchNumber": "000012345678",
"name": "Bakkerij De Korenaar",
"isMain": true,
"address": {
"street": "Dorpsstraat",
"houseNumber": "12",
"postalCode": "3732 HB",
"city": "De Bilt",
"country": "Nederland"
},
"activities": [
{ "sbiCode": "10711", "description": "Brood- en banketbakkerijen", "isMain": true }
]
},
{
"branchNumber": "000087654321",
"name": "De Korenaar Utrecht",
"isMain": false,
"address": {
"street": "Oudegracht",
"houseNumber": "140",
"postalCode": "3511 AZ",
"city": "Utrecht",
"country": "Nederland"
},
"activities": [
{ "sbiCode": "47241", "description": "Winkels in brood en banketbakkerswerk", "isMain": true }
]
}
]
}
Twee dingen om op te letten. Het veld address kan null zijn als er voor een vestiging geen adres bekend is, dus controleer dat voordat je er een veld uit leest. En vergelijk totalBranches met de lengte van de branches lijst: bij grote ketens kan het totaal hoger zijn dan het aantal vestigingen met volledige details, en dan wil je dat weten voordat je aanneemt dat je lijst compleet is.
Afleveradressen kiezen in een bestelflow
Een veelvoorkomende toepassing is een dropdown met afleveradressen. Je haalt de vestigingen één keer op bij het aanmaken van het account, slaat ze op, en laat de klant bij elke bestelling kiezen. Zet de hoofdvestiging bovenaan, want dat is meestal ook het factuuradres.
def afleveradressen(kvk_nummer: str) -> list[dict]:
data = haal_vestigingen_op(kvk_nummer)
opties = []
for v in data["branches"]:
a = v["address"]
if not a:
continue
huisnummer = a["houseNumber"] + (a.get("houseNumberAddition") or "")
opties.append({
"vestigingsnummer": v["branchNumber"],
"label": f"{v['name']}, {a['street']} {huisnummer}, {a['city']}",
"hoofdvestiging": v["isMain"],
})
return sorted(opties, key=lambda o: not o["hoofdvestiging"])
Sla het vestigingsnummer op bij elke order, niet alleen het adres als tekst. Verhuist een filiaal later, dan kun je de vestiging opnieuw ophalen en het adres bijwerken, in plaats van te zoeken welke vrije tekst bij welke locatie hoorde.
Vestigingen in je CRM: één bedrijf, meerdere locaties
In een CRM wil je meestal één account per KVK-nummer, met de vestigingen als locaties daaronder. Dat voorkomt dubbele accounts en zorgt dat omzet, contactmomenten en contracten op het juiste niveau bij elkaar komen. Gebruik het KVK-nummer als sleutel voor het account en het vestigingsnummer als sleutel voor de locaties.
Het kan ook andersom nuttig zijn: heb je een bestaand CRM vol losse accounts, haal dan per account de vestigingen op en kijk welke accounts hetzelfde KVK-nummer delen. Zo vind je dubbelingen die op naam nooit gematcht zouden worden, omdat het filiaal onder een andere handelsnaam staat. Let daarbij op de rechtsvorm: een concern met meerdere BV’s heeft meerdere KVK-nummers, ook al voelt het voor je salesteam als één klant. Ons artikel over rechtsvormen in KVK-data gaat daar verder op in.
Gewone lookup of branches-endpoint?
Heb je alleen het adres van de hoofdvestiging nodig, dan is een gewone lookup goedkoper. Met ?enrich=true krijg je voor 2 tokens het volledige adres, de handelsnamen, de rechtsvorm en de SBI-codes. Het branches-endpoint is bedoeld voor het moment dat je echt alle locaties wilt zien. Een praktische aanpak is om eerst de gewone lookup te doen en het branches-endpoint alleen aan te roepen voor zakelijke klanten waar meerdere locaties waarschijnlijk zijn, of zodra de klant om levering op een ander adres vraagt.
Alle parameters en tokenkosten vind je in de API-referentie.
Aan de slag
Vestigingsdata maakt het verschil tussen “we kennen dit bedrijf” en “we weten waar dit bedrijf zit”. Met één extra endpoint haal je alle locaties op, met eigen adressen en activiteiten, en koppel je ze netjes aan het KVK-nummer dat je al gebruikt.
Maak een gratis account aan op KVKBase en probeer het branches-endpoint met een KVK-nummer van een bedrijf dat je kent.