Te veel API calls maken in een korte tijd (Rate Limiting)

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Alex de Vries
Quantitatief Analist & Algo-Trading Expert
Brokers & API Integraties · 2026-02-15 · 7 min leestijd

Je zit eindelijk achter je scherm. Je Python-bot draait, de markt beweegt, en je voelt die adrenaline.

Je wilt snelle actie, veel data, en directe feedback van je broker.

Maar dan gebeurt het: je script stopt abrupt, je krijgt een foutmelding, en je handel ligt stil. Waarom? Omdat je te veel API calls hebt gemaakt in een te korte tijd. Dit is rate limiting, een onderdeel van de risicomanagement-strategie van je broker.

Het voelt frustrerend, maar het is er om je te beschermen. Laten we dit samen uitzoeken, zodat je bot soepel blijft draaien en je geen kansen mist.

Wat is rate limiting eigenlijk?

Stel je voor dat je een koffiebar binnenstapt. Er is één barista die alle bestellingen moet aannemen.

Als jij en je tien vrienden tegelijkertijd schreeuwen wat je wilt, raakt die barista overweldigd. Hij zal je vragen om rustig op je beurt te wachten. Dat is precies wat rate limiting doet.

Het is een limiet die brokers instellen op het aantal API calls dat je mag maken binnen een bepaalde tijd.

Bij een broker zoals Interactive Brokers of een crypto-exchange als Binance mag je bijvoorbeeld maar 60 requests per minuut versturen via je REST API. Als je daar overheen gaat, blokkeert de server je tijdelijk. Je krijgt een HTTP 429-fout, oftewel "Too Many Requests".

Dit gebeurt vaak zonder waarschuwing, dus je bot kan zomaar stoppen met werken. Waarom doen brokers dit?

Om hun systemen stabiel te houden. Zonder rate limiting zouden duizenden traders tegelijkertijd de servers overbelasten, wat leidt tot vertragingen of zelfs uitval.

Voor jou als trader betekent dit dat je je aan de regels moet houden, anders verlies je toegang tot de markt.

Waarom is dit zo belangrijk voor je trading bot?

Rate limiting is niet zomaar een irritante hobbel; het is een kernonderdeel van je risicomanagement.

Als je bot te vaak api calls maakt, kun je belangrijke signalen missen. Stel je voor dat je een scalping-bot hebt die elke seconde prijzen checkt. Als je limiet wordt overschreden, mis je een cruciale entry of exit, wat je direct geld kost. Bij Python-bots voor algoritmische trading gaat het vaak om complexe strategieën.

Je kunt bijvoorbeeld een bot bouwen die data van meerdere brokers haalt, zoals eToro voor sociale handel of Kraken voor crypto. Als je niet oppast, raak je geblokkeerd bij één broker terwijl je andere posities openhoudt.

Dat kan leiden tot onnodige verliezen, vooral als de markt snel beweegt.

Denk ook aan backtesting. Je wilt historische data ophalen om je strategie te testen. Brokers zoals Alpaca of Tradier bieden gratis API-toegang, maar ook daar gelden limieten.

Te veel calls in één keer kunnen je test vertragen of zelfs onderbreken. Het is dus essentieel om je bot zo te programmeren dat hij binnen de grenzen blijft, zodat je betrouwbare resultaten krijgt.

En laten we de kosten niet vergeten. Sommige brokers rekenen extra voor overmatig gebruik van hun API. Bij premium diensten zoals Bloomberg of Refinitiv betaal je al snel €500-€2000 per maand voor toegang, en als je de limieten overschrijdt, komen daar boetes bij. Rate limiting helpt je om deze kosten onder controle te houden.

Hoe werkt rate limiting in de praktijk?

Rate limiting wordt meestal bepaald door twee factoren: het aantal requests per tijdseenheid en de snelheid waarmee je ze verstuurt. Laten we een concreet voorbeeld nemen met een populaire broker voor algoritmische trading: Interactive Brokers (IBKR). Hun TWS API heeft een limiet van 50-100 requests per seconde, afhankelijk van je accounttype.

Als je een Python-script gebruikt met libraries zoals ib_insync, moet je dit in de gaten houden.

Stel je bouwt een bot die elke 10 seconden de prijs van een aandeel checkt. Als je 6 verschillende aandelen volgt, maak je 36 calls per minuut.

Dat is binnen de limiet van 60. Maar als je bot ook nog real-time data streamt via WebSocket, zoals bij Binance, dan telt elke heartbeat of subscribe-boodschap mee. Binance staat bijvoorbeeld 1200 requests per minuut toe voor spot-markets, maar voor futures is het maar 600.

Als je te snel gaat, krijg je een time-out van 5-10 minuten.

Er zijn verschillende methoden om rate limiting te beheren. Een populaire aanpak is het gebruik van een token bucket-algoritme. Je krijgt een bepaald aantal tokens per minuut (bijv. 60), en elke limietorder via de API kost één token.

Als je tokens op zijn, wacht je tot ze worden aangevuld. In Python kun je dit implementeren met libraries zoals ratelimit of time.sleep().

Bijvoorbeeld: na elke call slaap je 1 seconde om onder de 60 calls per minuut te blijven.

Een andere methode is exponential backoff. Als je een 429-fout krijgt, wacht je eerst 1 seconde, dan 2, dan 4, enzovoort, tot de limiet is gereset. Dit is handig voor bots die grote datasets ophalen, zoals historische candle-data voor backtesting.

Tools als de CCXT-library voor crypto-exchanges ondersteunen dit automatisch, zodat je niet steeds opnieuw hoeft te beginnen. Prijzen voor API-toegang variëren. Bij gratis brokers zoals Alpaca betaal je niets extra, maar limieten zijn streng (bijv.

200 calls per minuut). Premium services zoals Polygon.io voor real-time data kosten €99-€199 per maand, met hogere limieten tot 5000 calls per minuut.

Voor professionele traders bij IBKR is de API gratis, maar houd rekening met de verborgen kosten van API trading, zoals de €10-€20 per maand voor data-abonnementen als je de limieten wilt verhogen.

Varianten en modellen: wat past bij jou?

Niet alle rate limiting-modellen zijn hetzelfde. Sommige brokers gebruiken een eenvoudig per-minuut limiet, terwijl anderen complexere systemen hebben.

Laten we een paar varianten bekijken die relevant zijn voor je Python-bot en risicomanagement. Een basismodel is het fixed-window model, zoals bij eToro.

Hier tellen alle calls binnen een vaste periode (bijv. 1 minuut) mee. Als je 60 calls maakt in de laatste 30 seconden, ben je nog steeds binnen de limiet. Dit is makkelijk te implementeren in Python met een simpele timer. Maar het kan leiden tot pieken aan het einde van de window, wat je bot kan vertragen.

Een beter model is het sliding-window, gebruikt door exchanges zoals Coinbase. Dit kijkt naar de laatste 60 seconden continu, dus je kunt niet ineens 60 calls in één seconde pompen.

Voor een scalping-bot is dit ideaal, omdat het eerlijker is en je minder snel geblokkeerd raakt. Je kunt dit nabootsen met een deque in Python om timestamps bij te houden. Er is ook het token bucket-model, dat we al noemden.

Dit is populair bij brokers zoals Kraken, waar je 10 tokens per seconde krijgt. Elke call verbruikt een token, en ze vullen zich langzaam aan.

Dit geeft je flexibiliteit: als je even niets doet, bouw je een buffer op voor drukke momenten.

Voor algoritmische trading bots is dit efficiënter dan fixed windows, vooral als je combineert met backtesting-tools zoals Backtrader of Zipline. En dan is er nog het leaky bucket-model, vergelijkbaar maar met een constante "lekkage" van calls. Dit wordt gebruikt door sommige data-providers zoals Quandl (nu Nasdaq Data Link).

Je kunt een maximum van 500 calls per uur instellen, maar als je eronder blijft, lekt het langzaam weg. Prijzen hier zijn €50-€150 per maand voor toegang, afhankelijk van de dataset. Kies een model dat past bij je bot-frequentie: voor high-frequency trading (HFT) ga je voor hogere limieten, voor long-term investeren volstaat een eenvoudig fixed window.

Praktische tips om rate limiting te omzeilen (op een slimme manier)

Je hoeft niet te wachten tot je bot crasht; je kunt actie ondernemen.

Ten eerste, implementeer een rate limiter in je Python-code. Gebruik libraries zoals tenacity voor exponential backoff of ratelimit voor throttling. Bijvoorbeeld: voeg een decorator toe aan je API-functies die elke call vertraagt, zodat je begrijpt wat zijn rate limits en hoe voorkom je een IP-ban.

Dit voorkomt fouten en houdt je bot draaiende. Ten tweede, optimaliseer je calls.

Haal niet elke seconde dezelfde data op. Gebruik WebSockets voor real-time updates in plaats van REST-calls.

Bij Binance of IBKR kun je een WebSocket-verbinding openen en alleen updates ontvangen, wat maar één call kost om te starten. Voor backtesting, download grote datasets in één keer via batch-requests, als je broker dat toestaat. Ten derde, monitor je gebruik. Log elke API-call met timestamps in een database of CSV-bestand.

Tools zoals Prometheus of Grafana helpen bij het bijhouden, maar voor beginners volstaat een simpel Python-scriptje. Stel alerts in als je 80% van je limiet bereikt, zodat je kunt bijsturen voordat je geblokkeerd raakt.

En tot slot, kies de juiste broker voor je behoeften. Als je een beginner bent, begin met gratis opties zoals Alpica of Paper Trading bij IBKR (kost €0, maar limieten zijn laag). Voor geavanceerde bots, investeer in premium API's van €100-€500 per maand voor hogere limieten.

Onthoud: rate limiting is niet je vijand; het is een vriend die je helpt om je risico's te beheren en je bot stabiel te houden.

Zo blijf je gefocust op wat telt: winstgevende trades.

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Over Alex de Vries

Alex is een ervaren quantitatief analist en Python-ontwikkelaar die complexe trading concepten vertaalt naar begrijpelijke, praktische handleidingen voor zowel beginners als gevorderden.

Volgende stap
Bekijk alle artikelen over Brokers & API Integraties
Ga naar overzicht →