KVK API in Python: Makkelijke KVK API voor KVK Nummer Opzoeken, BTW Nummer Validatie en Bedrijfsgegevens API Nederland
KVKBase Team

KVK API in Python: Makkelijke KVK API voor KVK Nummer Opzoeken, BTW Nummer Validatie en Bedrijfsgegevens API Nederland

Leer hoe je de makkelijke KVK API integreert in Python voor KVK nummer opzoeken, BTW nummer validatie en het ophalen van bedrijfsgegevens API Nederland. Stap-voor-stap met code voorbeelden, VIES validatie API (KVK lookup API) en de KVKBase widget.

kvkapipythonbedrijfsgegevensbtwnederland

KVK API in Python: Bedrijfsgegevens Ophalen met Drie Regels Code

Python is de meest gebruikte taal voor data-integraties, scripts en backend-services. Als je met Nederlandse bedrijfsdata werkt, heb je vroeg of laat een KVK API nodig. In dit artikel laten we zien hoe je met de makkelijke KVK API van KVKBase in Python bedrijfsgegevens ophaalt, KVK-nummers valideert en BTW-nummers controleert via VIES — allemaal via één endpoint, zonder onnodige complexiteit.

Waarom Python en de KVK API Goed Samengaan

Python’s requests-bibliotheek maakt het verbruiken van REST API’s eenvoudiger dan in bijna elke andere taal. De bedrijfsgegevens API Nederland van KVKBase geeft een schone JSON-response terug, wat perfect aansluit bij Python’s ingebouwde json-module en dataklassen zoals dataclasses of Pydantic-modellen.

Typische use cases in Python:

  • Batch-verrijking van CRM-data: loop door een lijst KVK-nummers en voeg bedrijfsgegevens toe
  • Onboarding-validatie: controleer bij registratie of een KVK-nummer actief is
  • BTW-compliance: valideer klant-BTW-nummers via VIES voor factuurverwerking
  • Data-pipelines: integreer KVK open data in ETL-processen of analytics dashboards

Installatie en Eerste Request

Je hebt alleen de requests-bibliotheek nodig. Die is standaard beschikbaar in de meeste Python-omgevingen; zo niet, installeer je hem met:

pip install requests

Vraag daarna een gratis API-sleutel aan op kvkbase.nl en voer je eerste request uit:

import requests

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.kvkbase.nl/api/v1"

headers = {"Authorization": f"Bearer {API_KEY}"}

# KVK nummer opzoeken
response = requests.get(f"{BASE_URL}/lookup/12345678", headers=headers)
data = response.json()
print(data["tradeName"])   # Voorbeeld B.V.
print(data["isActive"])    # True

Dat is alles. Geen XML-parsing, geen OAuth-flows, geen SDK nodig.

KVK Nummer Opzoeken: Volledig Voorbeeld

Het KVK nummer opzoeken via de KVK lookup API geeft een volledig bedrijfsprofiel terug:

import requests
from dataclasses import dataclass
from typing import Optional

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.kvkbase.nl/api/v1"

@dataclass
class Adres:
    straat: str
    huisnummer: str
    postcode: str
    stad: str

@dataclass
class Bedrijf:
    kvk_nummer: str
    handelsnaam: str
    rechtsvorm: str
    adres: Adres
    is_actief: bool
    btw_nummer: Optional[str] = None

def haal_bedrijfsgegevens_op(kvk_nummer: str) -> Bedrijf:
    url = f"{BASE_URL}/lookup/{kvk_nummer}"
    headers = {"Authorization": f"Bearer {API_KEY}"}
    
    response = requests.get(url, headers=headers)
    response.raise_for_status()
    d = response.json()
    
    return Bedrijf(
        kvk_nummer=d["kvkNumber"],
        handelsnaam=d["tradeName"],
        rechtsvorm=d["legalForm"],
        adres=Adres(
            straat=d["address"]["street"],
            huisnummer=d["address"]["houseNumber"],
            postcode=d["address"]["postalCode"],
            stad=d["address"]["city"],
        ),
        is_actief=d["isActive"],
        btw_nummer=d.get("vatNumber"),
    )

# Gebruik
bedrijf = haal_bedrijfsgegevens_op("12345678")
print(f"{bedrijf.handelsnaam}{bedrijf.adres.stad} — Actief: {bedrijf.is_actief}")

De bedrijfsgegevens API Nederland retourneert onder andere:

  • Handelsnaam en eventuele andere namen
  • Volledig adres (bezoek- en postadres)
  • Rechtsvorm (BV, NV, eenmanszaak, stichting, etc.)
  • SBI-codes met hoofd- en nevenactiviteiten
  • Datum van oprichting en actief/inactief status
  • BTW-nummer (indien beschikbaar)

KVK Zoeken op Bedrijfsnaam

Weet je het KVK-nummer nog niet? Gebruik de KVK zoeken API om op naam te zoeken:

def zoek_bedrijf(naam: str) -> list[dict]:
    url = f"{BASE_URL}/search"
    headers = {"Authorization": f"Bearer {API_KEY}"}
    params = {"q": naam}
    
    response = requests.get(url, headers=headers, params=params)
    response.raise_for_status()
    return response.json()["results"]

# Resultaten tonen
resultaten = zoek_bedrijf("Coolblue")
for r in resultaten[:5]:
    print(f"{r['kvkNumber']}{r['tradeName']}{r['city']}")

BTW Nummer Validatie via VIES in Python

BTW nummer validatie is een wettelijke vereiste bij intracommunautaire leveringen in de EU. De VIES validatie API van KVKBase valideert zowel Nederlandse als Europese BTW-nummers rechtstreeks:

def valideer_btw_nummer(btw_nummer: str) -> dict:
    """
    Valideert een BTW-nummer via VIES.
    Geeft terug: valid (bool), name, address
    """
    url = f"{BASE_URL}/validate/vat"
    headers = {"Authorization": f"Bearer {API_KEY}"}
    params = {"vatNumber": btw_nummer}
    
    response = requests.get(url, headers=headers, params=params)
    response.raise_for_status()
    return response.json()

# Voorbeeld
resultaat = valideer_btw_nummer("NL123456789B01")
if resultaat["valid"]:
    print(f"Geldig BTW-nummer voor: {resultaat['name']}")
else:
    print("BTW-nummer is niet geldig of niet actief in VIES")

Voor een diepgaande uitleg over BTW-validatie en foutcodes, zie onze gids BTW nummer valideren met VIES.

Batch-verrijking van KVK Bedrijfsgegevens in Python

Een van de krachtigste use cases voor de bedrijfsdata API in Python is het verrijken van lijsten. Stel je hebt een CSV met KVK-nummers en wilt er handelsnamen en adressen aan toevoegen:

import csv
import time
import requests

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.kvkbase.nl/api/v1"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}

def verrijk_csv(invoer_pad: str, uitvoer_pad: str):
    with open(invoer_pad, newline="") as invoer, \
         open(uitvoer_pad, "w", newline="") as uitvoer:
        
        reader = csv.DictReader(invoer)
        velden = reader.fieldnames + ["handelsnaam", "stad", "postcode", "is_actief"]
        writer = csv.DictWriter(uitvoer, fieldnames=velden)
        writer.writeheader()
        
        for rij in reader:
            kvk = rij.get("kvk_nummer", "").strip()
            if not kvk:
                writer.writerow(rij)
                continue
            
            try:
                resp = requests.get(
                    f"{BASE_URL}/lookup/{kvk}",
                    headers=HEADERS,
                    timeout=5
                )
                if resp.status_code == 200:
                    d = resp.json()
                    rij["handelsnaam"] = d["tradeName"]
                    rij["stad"] = d["address"]["city"]
                    rij["postcode"] = d["address"]["postalCode"]
                    rij["is_actief"] = d["isActive"]
            except Exception as e:
                print(f"Fout bij KVK {kvk}: {e}")
            
            writer.writerow(rij)
            time.sleep(0.1)  # Respecteer rate limits

verrijk_csv("klanten.csv", "klanten_verrijkt.csv")

Dit is het standaardpatroon dat data-engineers gebruiken voor CRM-verrijking, lead-scoring en compliance-screening op basis van KVK bedrijfsgegevens en Nederlandse bedrijfsgegevens.

KVK Open Data: Wat Is Beschikbaar?

KVKBase geeft toegang tot KVK open data uit het Nederlandse Handelsregister. Dit zijn de openbaar beschikbare gegevens die elk bedrijf verplicht registreert bij de KVK. Via de KVK bedrijfsgegevens API krijg je:

  • Basisgegevens: handelsnaam, KVK-nummer, vestigingsnummer
  • Adresgegevens: straat, huisnummer, postcode, stad
  • Juridisch: rechtsvorm, oprichtingsdatum
  • Activiteiten: SBI-codes met beschrijving
  • Status: actief of opgeheven

Meer achtergrond over de structuur van het Nederlandse handelsregister lees je in onze gids KVK API vergelijken: officieel vs KVKBase.

Foutafhandeling en Retry-logica

Een robuuste integratie houdt rekening met tijdelijke fouten:

import time
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

def maak_sessie() -> requests.Session:
    sessie = requests.Session()
    retry = Retry(
        total=3,
        backoff_factor=0.5,
        status_forcelist=[429, 500, 502, 503, 504],
    )
    adapter = HTTPAdapter(max_retries=retry)
    sessie.mount("https://", adapter)
    return sessie

SESSIE = maak_sessie()

def veilig_opzoeken(kvk_nummer: str) -> dict | None:
    try:
        resp = SESSIE.get(
            f"https://api.kvkbase.nl/api/v1/lookup/{kvk_nummer}",
            headers={"Authorization": f"Bearer {API_KEY}"},
            timeout=10,
        )
        if resp.status_code == 404:
            return None  # KVK-nummer niet gevonden
        resp.raise_for_status()
        return resp.json()
    except requests.RequestException as e:
        print(f"API-fout voor {kvk_nummer}: {e}")
        return None

De KVKBase Widget als Alternatief voor Formulieren

Werk je aan een webapplicatie waarbij eindgebruikers zelf hun bedrijfsnaam of KVK-nummer invoeren? Dan is de KVKBase embeddable widget de snelste optie. Voeg één script-tag toe en je hebt direct een werkende zoekfunctie:

<script src="https://widget.kvkbase.nl/embed.js"
        data-api-key="YOUR_API_KEY"
        data-target="#bedrijf-zoeken">
</script>

De widget is volledig stijl-aanpasbaar en werkt zonder extra configuratie. Je kunt hem combineren met server-side Python-validatie: de widget verzorgt de UI, jouw Python-backend valideert en slaat de data op.

Aan de Slag: Makkelijke KVK API in Vijf Minuten

De makkelijke KVK API van KVKBase is ontworpen om in minuten operationeel te zijn, niet in dagen. Zo begin je:

  1. Maak een gratis account aan op kvkbase.nl
  2. Kopieer je API-sleutel vanuit het dashboard
  3. Installeer requests: pip install requests
  4. Voer je eerste lookup uit met de voorbeeldcode hierboven
  5. Schaal op naar de betaalde tier zodra je productieverkeer hebt

De gratis tier biedt voldoende ruimte voor prototypes en kleinere integraties. Schaalt je gebruik op? Dan upgrade je eenvoudig via het dashboard — geen contracten, geen minimale looptijden.

Vragen over een specifieke Python-integratie? Neem contact op via kvkbase.nl — we helpen graag.