Marktonderzoek dat
zegt hoe zeker het is
Bedrijfsgegevens uit het Handelsregister, gecombineerd met CBS-demografie per buurt. Elk getal komt terug met zijn noemer, een benchmark en een betrouwbaarheidsoordeel — zodat een AI-assistent niet stelliger wordt dan de data toelaat.
MCP staat voor Model Context Protocol, een open standaard van Anthropic waarmee een AI-assistent externe gegevensbronnen kan bevragen. Herkend is zo'n bron: je koppelt hem één keer aan je AI-client en stelt daarna gewone vragen over de Nederlandse markt.
“Wat is de beste plek om een bakker te openen?”
Die vraag valt bij de concurrentie uiteen in drie losse tools, waarna de ondernemer ze zelf moet combineren en dat niet doet. Hier is het één gesprek — en desgewenst één aanroep: het hele onderzoek voor een plek in één antwoord, waarin alle onderdelen hetzelfde verzorgingsgebied gebruiken.
Baken de branche af
Een branche wordt afgebakend op onze eigen indeling van de vrije tekst die de ondernemer bij de KVK opgaf, aangevuld met externe categoriebronnen. Deze stap laat zien wat elke zoekstrategie oplevert en of je term meerdere betekenissen heeft — een term als “kapper” vindt zonder afbakening ook de kappersgroothandel.
herkend_resolve_branche("bakker")
→ categorie: zekerheid hoog
vrije tekst: zekerheid laag Meet de verzadiging
Niet het aantal, maar het aantal per duizend inwoners, afgezet tegen het landelijke cijfer. En sinds kort ook tegen de officiële CBS-telling onder de bijbehorende SBI-code, zodat je ziet hoe goed onze afbakening die branche dekt: bij bakkers 1,11, bij kledingwinkels 2,79.
herkend_market_saturation(
"bakker", "BU0363AB01")
→ 2,1 per 1000 inw
landelijk 0,8 → +170%
ijkpunt SBI 1071+4724: 1,11 Kijk hoe groot ze zijn
Twaalf bakkers van honderd meter is een andere markt dan twaalf van driehonderd, en in een verzadigingscijfer zien die er identiek uit. Uit de BAG komt de mediane oppervlakte van de concurrenten — en het aandeel dat überhaupt een bedrijfspand heeft in plaats van een inschrijving op een woonadres. Dat verschilt enorm: 79% van de supermarkten tegen 30% van de kappers.
herkend_competitor_size(
"kapper", "GM0014")
→ 318 zaken, 42% met winkelruimte
mediaan 90 m2 (landelijk 97) Trek het verzorgingsgebied
Niet de gemeentegrens, maar wie er binnen een kwartier rijden woont. Over het echte wegennet met eenrichtingsverkeer, want een gemeentegrens is willekeurig ten opzichte van waar klanten vandaan komen.
herkend_catchment(
postcode="1016XE", minuten=15)
→ 995.065 inwoners, 544.800 hh
556 buurten in 9 gemeenten Kijk wie er woont
Leeftijdsopbouw, huishoudens, koopkracht, dichtheid en afstand tot voorzieningen, uit CBS per buurt. Plus wat een ondernemer op deze plek overkomt: winkeldiefstal en bedrijfsinbraak uit de politiecijfers, en dan per honderd handels- en horecabedrijven in plaats van per inwoner. Dat scheelt: Amsterdam staat met 3.197 winkeldiefstallen bovenaan in absolute aantallen, per duizend inwoners op plaats 14 van 337 gemeenten, en per honderd handels- en horecabedrijven op index 1,16 — zestien procent boven landelijk in plaats van veruit de ergste.
herkend_area_profile("BU0363AB01")
→ 1.445 inwoners
WOZ 481k (landelijk 398k) Kijk wie er overdag is
Wie er woont is voor een lunchroom het verkeerde getal. Haarlemmermeer heeft 1,08 baan per inwoner en Almere 0,34: de een loopt ’s ochtends vol, de ander leeg. Daaronder ligt een laag per adres: 6.917 schooladressen met 1.461.514 leerlingen, waarvan 6.060 basisscholen met 1.354.324 leerlingen en de rest speciaal onderwijs, met de prognose per school erbij. Passantentellingen bestaan niet als open data; dit komt er het dichtste bij.
herkend_location_score(
"bakker", "BU0363AB01")
→ ruimte 0 · drukte 100
groei 93 · koopkracht ontbreekt Reken het om naar euro's
Huishoudens maal wat een huishouden landelijk aan die categorie uitgeeft. De correctie voor het inkomen van het gebied is gemeten en niet aangenomen: brood loopt mee met 0,45, kleding met 0,73, vervoer met 1,10. Zelfs alle bestedingen samen lopen mee met 0,57 en niet met 1,00, want de spaarquote loopt op — een correctie die recht evenredig met het inkomen schaalt staat voor élke categorie te steil.
Weeg het af
Een score uit vier assen — en nooit alleen het totaal, want de gewichten zijn een keuze en geen meting.
Geen getal zonder zijn noemer
Een ondernemer die een pand zoekt struikelt zelden over een getal dat ontbreekt. Hij struikelt over een getal dat er goed uitziet. Op drie plekken weigert deze dienst er zo een te geven — en zegt hij wat er in plaats daarvan wél klopt.
De buurt waar het CBS geen inkomen publiceert
Het gemiddelde inkomen per buurt staat in de Kerncijfers Wijken en Buurten alleen boven de tweeduizend inwoners: 1.950 van de 14.574 buurten hebben er een. Nul van de 3.739 buurten met honderd tot vijfhonderd inwoners, nul van de 5.515 daarboven tot tweeduizend. Wie een buurt zonder cijfer als gemiddeld behandelt, behandelt de Marnixbuurt als gemiddeld. De WOZ-waarde staat er wél — voor 12.781 buurten — en het inkomen loopt daarmee mee: niet één op één maar tot de macht een half, gemeten over de 1.949 buurten waar allebei staat. Er komt dus een index uit, mét het label dat hij uit de WOZ komt. Een afgeleide 1,10 en een gemeten 1,10 zien er anders identiek uit, en ze zijn niet even hard.
herkend_spending_potential(
"bakker", "BU0363AB01")
→ potentieel_euro 1.116.423
…_gecorrigeerd 944.704
inkomensindex 1,102
inkomensindex_bron
AFGELEID UIT DE WOZ-WAARDE
(1,21 keer het landelijke
gemiddelde) — het CBS
publiceert hier geen inkomen De sporthal die als leeg vakje terugkwam
De BAG kent elf gebruiksdoelen en deze dienst gaf er zes terug. Een sportcomplex van 92.391 vierkante meter kwam daardoor terug met een lege uitsplitsing: alle meters zaten in een doel dat niet in de lijst stond. Dat gold voor 77.138 adressen, en het verschil tussen “nul” en “niet gemeten” ziet een lezer niet. Het zijn er nu elf, met sport, zorg, bijeenkomst, onderwijs en cel erbij. En de BAG-code 999.999, die “oppervlakte onbekend” betekent maar er als een oppervlakte uitziet, telt niet meer mee in een som: 1.849 adressen dragen hem, samen goed voor 68,3% van alle woonoppervlakte in de database.
herkend_postcode_profile("5612AW")
→ adressen 1, objecten 2
grootste_object_m2 92.229
m2_per_gebruiksdoel
{ "sport": 92.391 } Het antwoord dat er stellig uitzag
Op nul graden noord en nul graden oost — de kust van Ghana — noemde de haltevraag Berlin-Spandau als dichtstbijzijnde station, op nul meter, met 297 vertrekken per werkdag. Vijfentwintig Duitse haltes stonden zonder coördinaat in de import en waren als (0, 0) opgeslagen. Zo'n antwoord is erger dan geen antwoord: het is stellig, gedetailleerd en fout. Een punt buiten Nederland krijgt nu een fout, met de vraag erbij of latitude en longitude niet verwisseld zijn — verreweg de vaakste oorzaak. Hetzelfde geldt voor een gemiddelde dat drie dingen door elkaar haalt: het CBS publiceert het sportcijfer drie keer per gemeente, voor 18 jaar en ouder, voor 18 tot 65 en voor 65-plus. In Emmen is dat 43,8, 48,3 en 33,2 procent, en de dienst pakte de rij die de database toevallig bovenaan zette. En de bestemmingsvraag pakt het nieuwste vastgestelde plan in plaats van het kleinste vlak: in Ysbrechtum besliste tien vierkante meter dat een plan uit 2019 het won van een uit 2023.
herkend_transit(latitude=0, longitude=0)
→ fout: "het punt (0.0, 0.0) ligt buiten
Nederland. Latitude loopt hier van 50,7
tot 53,6 en longitude van 3,2 tot 7,3;
controleer of ze niet verwisseld zijn.
Deze dienst heeft alleen Nederlandse
data: buiten die grenzen is elk antwoord
dat eruit komt toeval." Alle drie zijn dezelfde keuze. En een deel van de branches krijgen om precies die reden een uitleg in plaats van een leeg vakje — daar gaat het volgende stuk over.
Een branche is hier een woordenlijst, geen SBI-code
Typ “bakker” of “bakkerij” — dat maakt niet uit. Het woordenboek kent 701 ingangen voor 123 branches en zet ze allemaal op dezelfde hoofdterm, inclusief de termen die je er juist níet bij wilt: “kapper” sluit de kappersgroothandel uit. Wat wél uitmaakt is dat een woordenlijst geen officiële indeling is, en dat zegt de dienst er elke keer bij — bij bakkers telt onze afbakening 1,11 keer wat het CBS onder SBI 1071 en 4724 telt, bij kledingwinkels 2,79 keer.
74 branches met een vraagkant
Wat een huishouden landelijk per jaar aan die categorie uitgeeft, uit de nationale rekeningen. Brood 1.163 euro, kleding 2.467, boeken en schrijfwaren 482, tandarts en fysiotherapie samen 1.024, kinderopvang 665. Maal de huishoudens in het verzorgingsgebied, en gecorrigeerd voor het inkomen en de huishoudensgrootte daar.
En 46 zonder — met de reden erbij
Voor de andere branches bestaat het cijfer niet. Daar komt geen leeg vakje terug maar de reden, en de noemer die wél klopt. Drie soorten reden, hieronder.
De klant is geen huishouden
Een schoonmaakbedrijf leeft van kantoren, scholen en zorginstellingen. Ook software, organisatieadvies en de accountant vallen hieronder. De noemer is dan het aantal vestigingen in het gebied en hun vloeroppervlak, niet het aantal huishoudens.
Het CBS telt hem samen met iets veel groters
Een fiets staat bij de auto’s onder “aankoop van voertuigen”: 1.885 euro per huishouden per jaar, en dat is voor het overgrote deel auto. Een taxirit staat bij de trein, de bus en het vliegticket: 1.371 euro. Een potje dat een orde van grootte te groot is, is geen antwoord.
De markt loopt via een verzekering of een voorraad
Huisartsenzorg gaat via de basisverzekering en komt in de consumptiecijfers vrijwel niet voor; de vraagkant van een praktijk is het aantal inwoners. Het werk van een loodgieter, schilder of elektricien komt grotendeels van corporaties en nieuwbouw — huishoudens geven zelf 399 euro per jaar uit aan onderhoud van hun eigen woning — dus de noemer is de woningvoorraad.
En één branche die geen gebied heeft
Een webshop. Zijn markt is heel Nederland en zijn concurrentie ook, dus een bestedingspotentieel binnen tien minuten rijden zegt niets over hem. Ook dat krijg je te horen in plaats van een getal.
Elke keer een reden in plaats van een leeg vakje is dezelfde keuze als het veld betrouwbaarheid: een model dat weet waarom een getal ontbreekt, verzint er geen.
Elk getal draagt zijn eigen onzekerheid
Een dashboard toont “12 fysiopraktijken” en de lezer vult zelf zijn twijfel in. Een taalmodel dat een kaal getal krijgt heeft dat instinct niet en presenteert het als feit. Daarom verlaat geen enkel aggregaat deze server zonder envelop.
{
"aantal": 3,
"noemer": "vestigingen in branche 'kapper' in Marnixbuurt-Noord
(BU0363AB01, buurt), exclusief VvE's, holdings,
inschrijvingen zonder eigen vestiging en records
zonder bruikbaar adres",
"genormaliseerd": { "per_1000_inwoners": 2.076,
"landelijk_per_1000": 2.05 },
"betrouwbaarheid": "laag",
"kanttekening": "N=3 is te klein om iets over de markt te zeggen;
branche-afbakening gebeurt op categorie- en vrije
tekst, niet op een gesloten bedrijfsindeling…",
"bron": ["KVK Handelsregister", "CBS Kerncijfers Wijken en Buurten 2025"]
} Dat veld betrouwbaarheid is het product. Een model dat wéét hoe zeker een getal is, geeft een beter antwoord dan een dashboard dat het getal alleen maar toont.
39 tools, op volgorde van de vraag
Je hoeft geen enkele toolnaam te kennen: je stelt de vraag in gewone taal en je client kiest. Ze staan hier zodat je vooraf kunt zien of jouw vraag erbij zit. Wil je het hele onderzoek in één keer, dan is er herkend_location_report — acht blokken in één antwoord, allemaal over hetzelfde verzorgingsgebied.
Wie staat er ingeschreven
9“Wie zit er op dit adres, wie hoort er bij dit nummer, welke vestigingen heeft deze keten?”
herkend_find_companyherkend_search_companiesherkend_lookup_phoneherkend_companies_nearbyherkend_similar_companiesherkend_enrich_batchherkend_find_by_socialherkend_company_groupherkend_address_profile
Hoe druk is de markt
8“Hoeveel concurrenten zitten er, hoe groot zijn ze, en waar zit een gat?”
herkend_resolve_brancheherkend_market_saturationherkend_competitor_sizeherkend_competition_radiusherkend_white_spotsherkend_colocationherkend_compare_areasherkend_location_score
Wie woont en werkt er
9“Wie zijn mijn klanten binnen een kwartier rijden, en wat geven ze uit?”
herkend_catchmentherkend_area_profileherkend_postcode_profileherkend_amenitiesherkend_amenity_ringsherkend_transitherkend_daytime_populationherkend_region_outlookherkend_spending_potential
Welk pand
4“Hoeveel vierkante meter is dit, mag hier horeca, en welke panden voldoen aan mijn eisen?”
herkend_buildingherkend_floorspaceherkend_zoningherkend_find_premises
Beweegt de markt
4“Komen er zaken bij of gaan ze weg, en hoe lang houdt zo'n zaak het hier vol?”
herkend_market_dynamicsherkend_industry_trendherkend_survival_oddsherkend_opening_hours
Het hele onderzoek in één aanroep
1“Doe dit allemaal, voor deze branche op deze plek.”
herkend_location_report
Wat de dataset niet weet
4“Hoe hard is dit cijfer eigenlijk, en waar zit een breuk in de reeks?”
herkend_count_companiesherkend_data_coverageherkend_digital_presenceherkend_series_breaks
Wat deze dienst niet weet
Vier dingen, en ze staan hier omdat je er betere vragen door stelt. Het zijn geen slagen om de arm: alle vier zijn ze nagemeten, en het getal staat erbij.
Het register telt inschrijvingen, geen concurrenten
Er staan 3.858.162 vestigingen in — het hele Handelsregister, dus een telling hieruit ís een landelijke telling. Maar een inschrijving is niet hetzelfde als een zaak waar een klant naar binnen loopt. Landelijk staat 66,50% van het register op een adres waarvan het gebouwenregister alleen een woonfunctie kent. Per branche loopt dat enorm uiteen: bij supermarkten 11,5%, bij kappers 58%, bij taxibedrijven 91,7%. Tien taxibedrijven in een wijk zijn dus negen huiskamers. Daarom zet elk verzadigingscijfer dat aandeel erbij — zonder dat getal zijn twee branches niet te vergelijken.
Er zijn geen passantentellingen
Ze bestaan niet als open data op het niveau van een vestiging, en dat is nagemeten: 0,62% van de winkel- en horecavestigingen heeft een verkeerstelpunt binnen honderd meter, en in de drukste kernwinkelgebieden — 1.371 vestigingen — is dat 0,00%. Juist waar de passant de markt ís, staat er niets. Wat er wel is: vertrekken per halte, bevolkingsdichtheid, en het aantal banen per buurt. Vraag je toch naar passanten, dan krijg je die drie mét het verschil erbij, niet een schatting die er precies uitziet.
Er zijn geen huur- of transactieprijzen
Voor bedrijfsruimte bestaan ze niet openbaar. Nagezocht en opgeschreven: nul treffers in 5.956 CBS-tabellen en 825 tabellen van dataderden, nul datasets op data.overheid.nl, en het Kadaster rekent 1,81 euro per bedrijfsmatige transactie. Wat je wél per adres krijgt is de oppervlakte, het gebruiksdoel en wat het bestemmingsplan er toestaat. Een prijs zul je zelf moeten opvragen; wij verzinnen er geen.
Het register is compleet, de verrijking niet
Van alle vestigingen heeft 32,99% een telefoonnummer en 27,87% een website. Een leeg veld betekent hier “niet gevonden” en niet “bestaat niet”, dus reken zulke percentages af tegen de groep waar iets te vinden valt en niet tegen het hele register. herkend_data_coverage geeft die noemers per veld, en elk antwoord draagt zijn eigen dekking mee.
Wat hierboven staat is de reden dat deze dienst bestaat en niet een voorbehoud eronder. Een dashboard dat deze vier weglaat ziet er zekerder uit en is het niet.
Hoe je koppelt
De server staat op https://mcp.herkend.nl/bedrijfsdata. Je voegt hem in je client toe als externe MCP-server; daarna stel je je vragen gewoon in het gesprek.
- 1 Kan je client een browser openen — Claude, ChatGPT, Cursor, VS Code, Claude Code — dan log je in met je Herkend-account. Je maakt zelf geen sleutel aan en kopieert niets.
- 2 Werk je met curl, n8n of een server zonder bureaublad, dan is er een persoonlijke sleutel die je in de header
X-API-Keymeestuurt. - 3 Per aansluiting geldt 500 aanroepen per uur en 50 MB antwoord per dag. Een grondig vestigingsonderzoek kost tien tot dertig aanroepen.
- 4 Eerst kijken zonder iets te koppelen kan ook: de speeltuin op mcp.herkend.nl draait de lezende tools, zestig vragen per uur, zonder account.
Deze build
vestigingen — het hele Handelsregister
met telefoonnummer (32,99%)
CBS-buurten met demografie
tools
panden met oppervlakte en gebruiksdoel
bestemmingsvlakken
schooladressen met leerlingenaantal
CBS-reekswaarden over 21 tabellen
Deze server is een proof of concept. Verbinden gaat met een Herkend-account; op dit moment (september 2026) brengen we niets in rekening. Er zit wél een rem op: 500 aanroepen per uur en 50 MB antwoord per dag per aansluiting. Een grondig vestigingsonderzoek kost tien tot dertig aanroepen, dus in een gesprek loop je daar niet tegenaan; tegen leegtrekken van het register wel. De actuele grenzen staan in limits.json, en zolang dit een proof of concept is kunnen ze veranderen.
De handleiding
Deze pagina is het verhaal. De handleiding op mcp.herkend.nl is het naslagwerk, en je kunt er een vraag afvuren zonder eerst iets te koppelen.
Alle tools met hun parameters
Elke tool uitgeklapt: wat hij aanneemt, wat hij teruggeeft en waarvoor hij niet bedoeld is.
Probeer het zonder sleutel
Een speeltuin met de lezende analysetools, zestig vragen per uur, zonder account.
Wat de dataset niet weet
De grenzen van de afbakening en de dekking, met de cijfers erbij.
Waar alles vandaan komt
Elke bron met zijn peildatum en licentie: KVK, CBS, BAG, DUO, politie, NDW.