Betfair · Rate Limits

Betfair Rate Limits

Betfair governs Exchange API usage through a combination of per-operation transaction limits, market-data request weighting, session lifecycle rules, and stream-connection limits rather than a single global requests-per-second quota. Market data requests (listMarketBook / listRunnerBook) are weighted, and a single request has a maximum weighting of 200 (the weighting grows with the number of markets/runners and the price data requested). Bet-placement operations are subject to transaction limits and Betfair monitors accounts whose weighted data usage is disproportionate to their betting activity (Data Request Charges). Session tokens expire after an inactivity period and must be refreshed with keepAlive. On the Exchange Stream API, a client must send a message within 15 seconds of connecting or the server returns a TIMEOUT; the number of concurrent stream connections is capped per account (reported to the client as connectionsAvailable), and exceeding subscription or connection limits returns SUBSCRIPTION_LIMIT_EXCEEDED / MAX_CONNECTION_LIMIT_EXCEEDED.

Betfair Rate Limits is the machine-readable rate-limit profile for Betfair on the APIs.io network, conforming to the API Commons Rate Limits specification.

It captures 7 rate-limit definitions, measuring weight, requests, instructions, inactivity, and seconds.

The profile also includes 4 backoff/retry policies defined and response codes documented for throttled and errorCodes.

Tagged areas include Betting Exchange, Market Data, Rate Limiting, Quotas, and Streaming.

7 Limits Throttle: 429
Betting ExchangeMarket DataRate LimitingQuotasStreaming

Limits

Market Data Request Weighting request
weight
200 max per request
listMarketBook/listRunnerBook requests are weighted; a single request may not exceed a weighting of 200. Weighting grows with market/runner count and price data requested.
Betting REST/JSON-RPC Requests account
requests
not published (monitored)
No fixed numeric per-second cap is published; excessive use returns TOO_MANY_REQUESTS / SERVICE_BUSY. Betfair applies Data Request Charges when weighted data usage is high relative to betting activity.
placeOrders Instructions request
instructions
bounded per request
A single placeOrders call carries a bounded number of instructions per market; batch bets rather than issuing many single-bet calls.
Session Token Lifetime session
inactivity
jurisdiction-dependent
Session tokens expire after an inactivity period (shorter for Italian/Spanish exchanges); call keepAlive to refresh before expiry.
Stream Connect Timeout connection
seconds
15
On the Exchange Stream API a message must be sent within 15 seconds of connecting or the server returns a TIMEOUT status.
Stream Concurrent Connections account
connections
capped (connectionsAvailable)
Concurrent stream connections are capped per account; the remaining allowance is reported as connectionsAvailable, and exceeding it returns MAX_CONNECTION_LIMIT_EXCEEDED.
Stream Subscriptions connection
subscriptions
capped
Exceeding the per-connection subscription limit returns SUBSCRIPTION_LIMIT_EXCEEDED.

Policies

Data Request Charges
Betfair may charge accounts whose weighted API data usage is disproportionately high relative to their betting turnover, incentivizing efficient use of the Stream API over aggressive polling.
Prefer Streaming Over Polling
For low-latency needs Betfair directs clients to the Exchange Stream API (subscription push) instead of repeatedly polling listMarketBook, reducing data weighting.
Session Keep-Alive
Refresh the session token with keepAlive before its inactivity timeout; a new login is required once a token has expired.
Backoff on Errors
On TOO_MANY_REQUESTS / SERVICE_BUSY / TIMEOUT_ERROR, back off with jitter and retry; do not hammer the endpoint.

Sources