Bedrijf zoeken op naam in het Handelsregister via API
Een bedrijf zoeken op naam levert vaak meerdere treffers op. Zo kies je de juiste treffer, ga je om met handelsnamen en bouw je een goed zoekveld.
Je klant vult in dat hij werkt bij “Bakkerij De Gouden Korst”. Je zoekt die naam op in het Handelsregister en krijgt zeven resultaten terug. Twee ervan zijn uitgeschreven, drie staan in een andere plaats en één heet net iets anders. Welke is het? Een naam lijkt een simpele zoekvraag, maar het is de lastigste manier om een Nederlands bedrijf te vinden.
In dit artikel lopen we door hoe zoeken op naam werkt, waarom het regelmatig fout gaat en hoe je een zoekveld bouwt dat uiteindelijk bij een KVK-nummer uitkomt in plaats van bij een gok.
Waarom zoeken op naam lastiger is dan het lijkt
Een bedrijf heeft in het Handelsregister meestal meer dan één naam. Er is de statutaire naam uit de oprichtingsakte, en daarnaast een of meer handelsnamen waaronder het bedrijf naar buiten treedt. Wat op de gevel staat, hoeft dus niet te zijn wat in de akte staat. Het verschil leggen we uit op onze pagina over handelsnaam en statutaire naam.
Daar komen de gewone verschillen in schrijfwijze nog bij. “B.V.”, “BV” en “bv” zijn voor een mens hetzelfde, voor een zoekfunctie niet altijd. Hetzelfde geldt voor “De Gouden Korst” tegenover “Gouden Korst, De”, voor een ampersand tegenover het woord “en” en voor accenten.
En dan zijn er gewoon veel bedrijven met bijna dezelfde naam. Een naam is een label en geen identiteit. Het KVK-nummer is wel een identiteit, en daar wil je uiteindelijk op uitkomen.
Zoeken met de KVKBase API
Het search-endpoint zoekt op naam en handelsnaam en geeft een gepagineerde lijst terug. Elk resultaat bevat het KVK-nummer, de naam, de plaats en of het bedrijf actief is. Een zoekopdracht kost 1 token. De volledige parameters staan in de API-documentatie.
curl "https://api.kvkbase.nl/v1/search?q=gouden%20korst&pageSize=10" \
-H "Authorization: Bearer jouw_api_key"
Het antwoord ziet er zo uit:
{
"results": [
{ "kvkNumber": "12345678", "name": "Bakkerij De Gouden Korst B.V.", "city": "Zwolle", "isActive": true },
{ "kvkNumber": "23456789", "name": "Gouden Korst Beheer B.V.", "city": "Zwolle", "isActive": true }
],
"total": 2,
"page": 1,
"pageSize": 10
}
Let op dat de zoekterm minimaal twee tekens moet zijn. Voor een zoekveld waarin iemand typt is er ook het autocomplete-endpoint, dat een korte lijst van maximaal acht suggesties teruggeeft zodat je het op elke toetsaanslag kunt aanroepen zonder een lange lijst te hoeven doorlopen.
De juiste treffer kiezen
Het gevaarlijkste wat je kunt doen is automatisch het eerste resultaat nemen. Dat werkt in de demo en gaat mis bij het eerste bedrijf met een veelvoorkomende naam. Gebruik liever extra gegevens die je al hebt om te filteren, en laat een mens beslissen als er twijfel blijft.
Een paar signalen die in de praktijk goed werken: de plaats of postcode uit het formulier, de vraag of het bedrijf actief is, en een afgeleide zoals het domein van het e-mailadres. Staat er na het filteren precies één treffer over, dan kun je die voorstellen. Zijn het er meer, toon dan alle kandidaten met plaats naast de naam, want mensen herkennen een adres sneller dan een nummer.
import requests
HEADERS = {"Authorization": "Bearer jouw_api_key"}
def zoek_bedrijf(naam: str, plaats: str | None = None) -> list[dict]:
r = requests.get(
"https://api.kvkbase.nl/v1/search",
params={"q": naam, "pageSize": 20},
headers=HEADERS,
timeout=10,
)
r.raise_for_status()
treffers = [c for c in r.json()["results"] if c["isActive"]]
if plaats:
treffers = [c for c in treffers if c["city"].lower() == plaats.lower()]
return treffers
Sla daarna altijd het KVK-nummer op, niet de naam. Vanaf dat moment hoef je nooit meer op naam te zoeken voor dit bedrijf, en kun je gewoon het nummer gebruiken om gegevens op te halen.
Een zoekveld dat niet in de weg zit
Wie een zoekveld bouwt voor klanten, wil dat het snel aanvoelt en weinig onnodige aanroepen kost. Een paar afspraken helpen daarbij.
Wacht met zoeken tot er minstens twee of drie tekens zijn getypt en stel een korte vertraging in (debounce van zo’n 250 milliseconden), zodat je niet voor elke letter een verzoek doet. Annuleer het vorige verzoek als er een nieuw komt, anders verschijnt een oud antwoord boven een nieuw.
Toon bij elke suggestie de plaats, en bij voorkeur ook of het bedrijf actief is. Laat de gebruiker daarna bevestigen, en vul pas dan de rest van het formulier in met de gegevens van het gekozen KVK-nummer. Dat is sneller dan zelf typen en levert geen schrijfvarianten op. Hoe dat in een checkout werkt lees je in automatisch bedrijfsgegevens invullen.
Wat je niet moet verwachten
Zoeken op naam is geen fuzzy matching op een spelfout van drie letters. Een zoekterm die flink afwijkt van de geregistreerde naam geeft weinig of niets terug. Doe je import- of koppelwerk, normaliseer dan eerst de naam: haal rechtsvormaanduidingen als “B.V.” weg, verwijder leestekens en probeer eventueel een tweede keer met een kortere term.
Er zijn ook bedrijven die je niet vindt omdat ze er niet in staan. Buitenlandse bedrijven hebben geen KVK-nummer, en een maatschap of vereniging kan onder een andere naam bekend zijn dan je verwacht. Behandel “geen resultaat” daarom als een reden om het te laten controleren, niet als bewijs dat het bedrijf niet bestaat.
Van naam naar een schone database
Zoeken op naam is het begin, niet het eind. Het doel is dat elk bedrijf in je systeem één KVK-nummer heeft, zodat je er zonder gedoe verder mee kunt werken. Heb je al een database met losse namen, dan is dat precies het opschoonwerk dat we beschrijven in dubbele bedrijven in je CRM opschonen. Meer over de basis staat in onze complete gids over KVK-nummer opzoeken.
Wil je het zelf proberen? Maak een KVKBase-account aan, zoek je eigen bedrijfsnaam op en kijk hoeveel treffers je krijgt.