Tooling
Browserbase vs Anchor vs Playwright: KvK-monitoring getest
Een Amsterdams belastingadvieskantoor met 17 mensen wilde 3.200 entiteiten continu monitoren bij de KvK. We testten drie browser-stacks; één brak op zondagochtend 02:00.

Maandag 06:42. De compliance-lead van een belastingadvieskantoor aan de Keizersgracht klapt haar laptop open, scrolt door achttien Slack-kaarten van de nacht, en stopt bij de derde: een trouwe klant verloor afgelopen nacht een bestuurder bij de KvK en het kantoor wist het niet. Die kaart is het werk van de agent. De agent bestaat omdat dit handmatig doen voor 3.200 entiteiten in 2023 onmogelijk was geworden.
De interessante vraag, een half jaar nadat die agent draait, is niet of je hem moet bouwen. Het is welke browser-automation-laag eronder hoort, nu we echte cijfers hebben uit een echte productie-run.
De klus: 3.200 entiteiten, elk werkblok
Het kantoor heeft 17 mensen, voornamelijk seniors die bij de Big Four zijn opgegroeid. Ze doen doorlopend compliance-werk voor 3.200 Nederlandse entiteiten. Bestuurswijzigingen, handelsregister-uittreksels, UBO-mutaties, ontbindingen, adreswijzigingen. Voor de agent er was, deden twee paralegals zo'n 80 entiteiten per dag handmatig. Wat van de lijst viel werd de verrassing van het volgende kwartaal.
De opdracht was klein: trek elke 8 werkuren de handelsregister-status van elke entiteit op, vergelijk met de laatst bekende staat, post een Slack-kaart naar de verantwoordelijke adviseur als er iets veranderd is. We sloegen slapende entiteiten en weekenden over en kwamen uit op 4.800 pulls per week in steady-state.
De officiële KvK Handelsregister API bestaat. Hij is degelijk, maar bij dit volume liepen de kosten per query sneller op dan het kantoor wilde, en de API geeft niet dezelfde verrijkte view terug die Mijn KvK toont na inloggen. Dus de build werd browser-automation tegen de ingelogde gateway.
Drie kandidaat-stacks belandden op het whiteboard.
De drie stacks
Browserbase. Een managed Chromium-fleet die je via een WebSocket aanspreekt. Je krijgt stealth-profielen, residentiële proxies, session-replay video, en een dashboard dat een niet-engineer om 02:00 kan openen om te zien wat er stuk is.
Anchor Browser. Vergelijkbare opzet, nieuwer, leunt zwaarder op de framing 'browser voor agents'. Goedkoper per minuut op het moment dat we testten. Kleiner, schoner API-oppervlak.
Self-hosted Playwright op chromium-headless-shell. Eén Hetzner CCX23-bak (€30/maand, 4 vCPU, 16 GB), een Redis-queue, residentiële proxies apart ingekocht, geen UI. De echte kosten zaten in engineering-tijd.
Kosten per run bij 4.800 pulls per week
Een pull duurde gemiddeld 27 seconden end-to-end: sessie-check, navigeren, renderen, scrapen, netjes uitloggen. Reken op 30 seconden inclusief overhead.
4.800 runs × 30s = 40 browser-uren per week.
Ruwe cijfers uit onze inkoop (juni 2026; prijzen bewegen):
- Browserbase met stealth en captcha-solving: ongeveer €380 tot €460 per week all-in. Gedomineerd door minuten, niet bandbreedte.
- Anchor Browser bij hetzelfde aantal minuten, residentiële proxy inbegrepen: ongeveer €180 tot €240 per week.
- Self-hosted: €30 per maand voor de bak, €110 per maand voor residentiële proxies, plus één engineer stand-by. Dus circa €33 per week aan hardware, plus welk deel van je payroll je tegen deze ene agent afschrijft.
Als je de analyse hier stopt, wint self-hosted met een ordegrootte. Wij stopten hier niet.
Overleven op Mijn KvK
Mijn KvK heeft het afgelopen jaar stilletjes z'n sessie-telemetrie aangescherpt. Canvas-fingerprinting, checks op muis-entropie, en een zachte challenge die opduikt zodra de gateway twijfelt over je. Het is geen reCAPTCHA. Het is een nudge om opnieuw in te loggen, en dat is genoeg om een onbewaakte job stuk te laten lopen.
Over een pilot van twee weken op het volle volume van 4.800/week kwamen sessies-gevlagd-voor-reauth uit op:
- Browserbase, stealth-profiel + residentiële proxy: ~0,4% van de runs.
- Anchor Browser, default-profiel + residentiële proxy: ~1,1% van de runs.
- Self-hosted Playwright op chromium-headless-shell, residentiële proxy: ~3,7% van de runs.
Het self-hosted-getal bewoog. Toen we stealth-plugin patronen overzetten naar Playwright en user agents per IP rouleerden, zakte self-hosted naar ~1,6%. Browserbase had geen tuning nodig. Daar betaalden we voor.
chromium-headless-shell is sneller en lichter dan volledige Chromium, maar ook beter te herkennen. Geeft de doelsite om fingerprint, draai dan volledige Chromium en betaal de RAM-kosten.
De vraag van 02:00
Kosten zijn de makkelijke as. De interessante as is: wie zet de boel weer op de rails als een sessie zondagnacht om 02:00 stukgaat.
Daar zit de verborgen prijs van self-hosted. De klant had geen duty engineer. Wij waren de duty engineer. Dat betekende of dat ABN de pages opving, of dat we een runbook moesten schrijven dat schoon genoeg was om op maandagochtend door de office manager gevolgd te worden, met een blinde periode van 6 uur als gevolg.
Browserbase en Anchor leveren allebei een dashboard waar de operator de laatste mislukte sessie als video kan terugkijken, één keer kan inloggen, de sessie als gezond kan markeren en weer weg kan lopen. De UI van Anchor was nieuwer en ruwer in juni 2026, maar werkbaar. De session-replay van Browserbase was de feature die de compliance-lead daadwerkelijk twee keer gebruikte tijdens de pilot, op uren waarop ze ons niet gebeld zou hebben.
Heeft je klant on-call engineers, dan is self-hosted een serieuze optie. Is je klant 17 accountants en heeft niemand Linux in z'n portefeuille, dan verdient de managed stack zich terug bij de eerste keer dat er om middernacht iets vlagt.
De audit-tabel, kort
Zijdelings, maar het noemen waard. Elke pull schrijft een rij naar een Postgres audit-tabel (entity_id, pulled_at, raw_html_hash, diff_summary). Bij 4.800 pulls per week is dat ruwweg 250k rijen per jaar, bewaard voor zeven jaar (fiscale bewaarplicht). De tabel is vanaf dag één gepartitioneerd per maand. Een HN-thread op de front page herinnerde iedereen die week eraan dat de enige schaalbare delete in Postgres DROP TABLE is, en dat is precies waarom declaratieve partitionering bestaat. Komt 2032 in beeld en verlopen de partities van 2025, dan dropt de retention-job de partitie. Geen VACUUM-drama.
Een terzijde dat je in jaar drie een refactor kan besparen.
Wat we kozen, en waarom
We kozen Browserbase voor de uurlijkse job, met self-hosted Playwright als fallback voor de bulk-re-scrape op zaterdagnacht.
De redenering was banaal:
- De marginale €200/week boven Anchor kocht ons session-replay die de compliance-lead daadwerkelijk opende.
- De marginale €400/week boven self-hosted kocht ons dat we niet de on-call ploeg waren voor een klant wiens runbook nooit genoeg liefde zou krijgen om om 02:00 te werken.
- Anchor blijft op de shortlist. Scherpt Browserbase z'n prijzen aan of lanceert Anchor een session-replay UI die een niet-engineer kan bedienen, dan gaat de keuze opnieuw open.
De zaterdag-bulkjob, die geen SLA heeft en over een venster van 12 uur draait, gebruikt nog steeds self-hosted Playwright. Daar weegt kostprijs zwaarder dan betrouwbaarheid, want we kunnen 'm gewoon zondagmiddag herstarten.
De goedkoopste browser-stack is degene die je niet om 02:00 wakker belt, ook als de prijs per minuut op de factuur alarmerend lijkt.
Als je deze week iets kiest
Een audit van vijf minuten voor je je vastlegt op een van deze drie:
- Pak een steekproef van 50 pulls. Draai ze door je doelsite vanaf een residentieel IP. Meet de flag rate.
- Vermenigvuldig die flag rate met je wekelijkse volume. Zoveel mens-herstel-events bezit je team per week.
- Bepaal wie die events bezit. Schrijf de naam op. Lukt het je niet om een naam op te schrijven, dan koop je de managed optie.
Toen we deze AI-agent voor het belastingadvieskantoor bouwden, was wat we steeds onderschatten de kosten van herstel, niet de kosten van draaien. We hebben het uiteindelijk opgelost door te betalen voor session-replay en de compliance-lead de sleutels in handen te geven, zodat de agent kapot kon gaan op een manier die haar team daadwerkelijk zag.
Kern
De goedkoopste browser-stack is degene die je niet om 02:00 wakker belt, ook als de prijs per minuut op de factuur alarmerend lijkt.
FAQ
Waarom niet gewoon de officiële KvK Handelsregister API?
Werkt prima bij laag volume. Bij 4.800 wekelijkse pulls stapelen de kosten per query zich op, en de API geeft niet de verrijkte ingelogde view terug die Mijn KvK toont. Volume duwde de build richting browser-automation.
Heb je bij dit volume residentiële proxies nodig voor KvK?
Ja. Datacenter-IP's worden binnen een paar honderd opeenvolgende pulls op Mijn KvK gevlagd. Residentieel is het saaie antwoord dat de flag rate onder 1% houdt bij alle drie de stacks.
Is chromium-headless-shell productie-veilig?
Voor minder oplettende targets, ja. Voor sites die canvas- en font-fingerprinting doen, overleeft volledige Chromium langer. Headless-shell is lichter en sneller maar makkelijker te detecteren.
Wat dan met pure HTTP-scraping zonder browser?
Mijn KvK wordt zwaar via JS gerenderd achter een login. Je kan de sessie handmatig reconstrueren, maar de onderhoudslast als ze hun gateway aanpassen eet alles op wat je op compute hebt bespaard.
Wanneer wint self-hosted Playwright daadwerkelijk?
Als je een duty engineer stand-by hebt, als de target niet agressief fingerprinted, en als de workload tolereert dat hij uren later wordt herstart in plaats van direct.