Dezelfde zoeker, vanuit je eigen software.

Een toegangssleutel uit je account geeft REST- en MCP-toegang met dezelfde limieten, rechten en uitsluitingsregels als de browser.

Aan de slag

  1. Maak een gratis account op app.firmtrove.nl en bevestig je e-mailadres.
  2. Maak onder Mijn account → Koppelingen een toegangssleutel. De sleutel wordt één keer getoond, wordt gehasht opgeslagen en is per direct in te trekken. Maximaal vijf actieve sleutels per account.
  3. Stuur de sleutel mee als Authorization: Bearer ft_live_…. Sleutels horen in een geheimenbeheerder, nooit in een URL of in clientcode.

Koppel je AI-agent

Zet je sleutel in een omgevingsvariabele en verwijs ernaar. Let op de enkele aanhalingstekens bij Claude Code: zo bewaart Claude de verwijzing en niet de sleutel zelf. Controleer daarna met claude mcp get firmtrove of de status Connected is.

Claude Code

export FIRMTROVE_KEY=ft_live_…
claude mcp add --transport http firmtrove https://app.firmtrove.nl/mcp \
  --header 'Authorization: Bearer ${FIRMTROVE_KEY}'
Terminal: claude mcp get firmtrove meldt Connected.

Daarna stel je gewoon je vraag. Claude kiest zelf de juiste FirmTrove-tool.

Claude Code vraagt FirmTrove hoeveel bedrijven met software in de naam er in Utrecht staan: 87.

Codex

export FIRMTROVE_KEY=ft_live_…
codex mcp add firmtrove --url https://app.firmtrove.nl/mcp \
  --bearer-token-env-var FIRMTROVE_KEY

codex mcp list toont de koppeling. De sleutel zelf staat alleen in je omgeving.

Terminal: codex mcp list toont firmtrove met Bearer token.

Cursor

Zet dit in .cursor/mcp.json:

{ "mcpServers": { "firmtrove": {
  "url": "https://app.firmtrove.nl/mcp",
  "headers": { "Authorization": "Bearer ${env:FIRMTROVE_KEY}" }
} } }

De zes tools

  • firmtrove_search_companies: zoeken op naam, sector, provincie, postcode, oprichtingsjaar en beschikbaarheid van website, telefoon of zakelijk e-mailadres
  • firmtrove_get_company: één bedrijf met alle velden die je mag zien
  • firmtrove_market_size: aantallen per sector en provincie
  • firmtrove_find_similar: vergelijkbare bedrijven met reden
  • firmtrove_export: een CSV binnen je exportlimiet
  • firmtrove_dataset_info: stand en labels van de database

REST

Basis-URL https://app.firmtrove.nl. Alle antwoorden zijn JSON. Limieten en labels zijn gelijk aan de browser.

AanroepParametersAntwoord
GET /api/companiesq (minimaal 3 tekens; zoekt in naam en plaats), sector, province, signal (tender, grant, timely), postcode (PC4-prefix of exacte PC6 van de gekozen bronwaargenomen bedrijfslocatie), foundedFrom, foundedTo (inclusieve bronvermelde jaartallen), email=business_available, website=available, phone=available, page, limit (max 50), cursor uit het vorige begrensde resultaat{total, items[], page, limit, hasMore, nextCursor}; total is null bij postcode-, oprichtingsjaar- en beschikbaarheidsfilters
GET /api/companies/:idid zoals firmtrove:126726het record met optionele postcode van een bedrijfslocatie, bronvermeld oprichtingsjaar, overige velden, signals en withheld
GET /api/companies/:id/similar{items[]} met reasons
GET /api/facetszoekfilters zonder postcode, oprichtingsjaar of website-, telefoon- of e-mailbeschikbaarheid{total, sectors[], provinces[]}
POST /api/exports{companyIds[], idempotencyKey} (max 5.000 ids voor Pro, 100 voor Free; dezelfde sleutel geeft dezelfde export terug){id, count, remaining, downloadUrl}
GET /api/exports/:idCSV (UTF-8, bronvermelding op regel 1)
GET /api/suppressions{people[], items[]}: mensen die zich lieten verwijderen, als sha256 van het e-mailadres in kleine letters of van het telefoonnummer in cijfers met landcode (31612345678); verwijder of onderdruk ze ook bij jou

MCP

Eindpunt POST https://app.firmtrove.nl/mcp, JSON-RPC 2.0, protocolversie 2025-03-26, dezelfde Bearer-sleutel. Methoden: initialize, ping, tools/list, tools/call. Er is geen streaming-transport; GET geeft 405.

ToolArgumentenGeeft terug
firmtrove_search_companiesq, sector, province, postcode, foundedFrom, foundedTo, email, website, phone, cursorzoekresultaat zoals REST
firmtrove_get_companyidéén record
firmtrove_market_sizesector, provinceaantallen per categorie
firmtrove_find_similaridvergelijkbare records
firmtrove_exportcompanyIds, idempotencyKeyexportbon met downloadUrl
firmtrove_removed_peoplegeendezelfde lijst als people in GET /api/suppressions
firmtrove_dataset_infogeenavailable, shareRisk, exportRiskLevels, asOf

Iemand benaderen

Zet in je eerste bericht aan iemand uit FirmTrove deze zin (artikel 10 van de voorwaarden):

Ik vond uw gegevens via FirmTrove (firmtrove.com). Wilt u daar niet in staan? Via firmtrove.com/sta-ik-erin laat u zich met één klik verwijderen.

Een echte aanroep

Met de API-sleutel van een gratis account.

curl -s -X POST https://app.firmtrove.nl/mcp \
  -H "Authorization: Bearer ft_live_…" -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"firmtrove_dataset_info","arguments":{}}}'

curl -s -H "Authorization: Bearer ft_live_…" "https://app.firmtrove.nl/api/companies?q=software&province=Utrecht"
{"total":87,"items":[{"id":"firmtrove:126726","name":"Bulxoft Software","city":"Lexmond",
  "website":"https://bulxoft.com","province":"Utrecht","shareRisk":"attribution",
  "withheld":[{"field":"sector","reason":"source_redistribution_not_approved"}, …]}, …],"page":1,"limit":12}

KVK API kosten naast de FirmTrove API

De FirmTrove API is niet de KVK API. De KVK API levert gegevens uit het Handelsregister en kost €6,40 per maand, plus €0,02 per opgevraagd basisprofiel; zoeken is gratis. De FirmTrove API doorzoekt 4.306.825 bedrijfsrecords, waarvan 2.957.640 met KVK-nummer. Free geeft 100 exportrijen per maand, Pro kost €29 per maand exclusief btw en start met 5.000 rijen per kalendermaand, met +2.500 per opeenvolgende betaalde maand tot 25.000. Pro Jaar kost €290 exclusief btw vooraf en heeft 25.000 rijen per kalendermaand vanaf dag één. Heb je het officiële registerprofiel per KVK-nummer nodig, dan is de KVK API de juiste bron.

Limieten en fouten

De postcode is een bronwaargenomen bedrijfslocatie en kan afwijken van het officiële vestigingsadres. Plaats, provincie en postcode kunnen uit onafhankelijk onderbouwde velden komen en vormen samen geen bevestigd geregistreerd adres. Het oprichtingsjaar is de waarde die de bron opgeeft en bewijst geen juridische oprichtings- of inschrijvingsdatum. De zakelijke e-mailfilter vindt alleen het exacte adres dat via de standaard API-, MCP- en CSV-levering beschikbaar is; persoonlijke mailboxen en de aparte exportkeuze daarvoor vallen buiten dit filter.

  • CSV, REST en MCP delen je maandtegoed. Browserweergaven kosten geen rijen. Elke rij van een nieuwe CSV-export telt mee; geleverde REST- en MCP-ID’s tellen één keer per UTC-kalendermaand. Per export geldt maximaal 5.000 rijen voor Pro en 100 voor Free, binnen je resterende tegoed. Een zoekopdracht toont maximaal 10.000 resultaten. Postcode-, oprichtingsjaar- en beschikbaarheidsfilters geven een ondergrens en een cursor, geen exact totaal.
  • 401 login_required ontbrekende of ingetrokken sleutel · 400 search_too_short · 400 postcode_filter_invalid · 400 founding_year_filter_invalid · 400 search_depth verfijn je filters · 400 availability_count_unsupported · 400 availability_cursor_required · 400 export_too_large · 429 quota_exhausted · 429 machine_record_quota · 409 idempotency_conflict zelfde sleutel, andere selectie · 410 export_withdrawn een bedrijf uit de export is later verwijderd
  • Per account gelden 30 zoekopdrachten en 60 detailaanvragen per minuut; per IP-adres vier keer die grenzen. Browser, REST en MCP delen deze grenzen. Bij overschrijding beperken we eerst de aanvragen. De derde hernieuwde overtreding blokkeert het account tot handmatige beoordeling; er is geen automatische vrijgave. Volg bij 429 de wachttijd in Retry-After.

Velden

VeldBetekenisHerkomst van de datum
name, city, province, website, sizeidentiteit van het recordnieuwste bronvermelding van het record
postcodebronwaargenomen bedrijfslocatie; kan afwijken van het officiële vestigingsadreswaarnemingsdatum van de gekozen bron
foundedYearoprichtingsjaar volgens de bron; geen bewijs van juridische oprichting of inschrijvingwaarnemingsdatum van de gekozen bron
sectorcategorie van de bronnieuwste bronvermelding met categorie
description, phoneletterlijk citaat van de eigen websiteeigen waarnemingsdatum en vervaldatum
emailzakelijke mailbox in standaardlevering; persoonlijke mailboxen hebben een aparte exportkeuzeverificatiedatum
signals[]kind tender, grant of timely met waardeeigen waarnemingsdatum en vervaldatum
shareRiskdeelrisico van het record: none of attribution
withheld[]velden die niet geleverd zijn, met reden
Maak gratis een account

Je gedeelde maandtegoed

Pro: €29 per maand excl. btw. Start met 5.000 rijen, elke opeenvolgende betaalde maand +2.500, tot 25.000 per kalendermaand. Pro Jaar: €290 excl. btw vooraf, met 25.000 per kalendermaand vanaf dag één.

Free heeft 100 rijen per kalendermaand. CSV, REST en MCP delen één tegoed per account, ook met teamleden en meerdere sleutels. Iedere geëxporteerde CSV-rij telt, ook bij een nieuwe export van hetzelfde bedrijf. Via REST en MCP telt een geleverd bedrijfs-ID één keer per kalendermaand, ongeacht de sleutel of aanroep. In de volgende maand telt dat ID opnieuw. Een bestaande export opnieuw downloaden kost geen extra rijen. Zoeken, filteren en bedrijfsrecords bekijken in de browser verbruikt geen tegoed; daarvoor gelden snelheidsgrenzen. Per account gelden 30 zoekopdrachten en 60 detailaanvragen per minuut; per IP-adres gelden vier keer die grenzen. Browser, REST en MCP delen deze snelheidsgrenzen. Bij overschrijding beperken we eerst de aanvragen. De derde hernieuwde overtreding blokkeert het account tot handmatige beoordeling; er is geen automatische vrijgave. Per export geldt maximaal 5.000 rijen voor Pro en 100 voor Free, binnen het resterende tegoed. Het tegoed vernieuwt om 00:00 UTC op de eerste dag van de kalendermaand en ongebruikte rijen vervallen. Bestaande betaalde accounts behouden 25.000 rijen per kalendermaand.

Een merk van Gottmer Agency. Drie producten van dezelfde maker, Menno Gottmer, elk met een eigen taak. Klantgegevens en toestemmingen worden niet tussen de merken gedeeld.