API rate limits at eight exchanges, checked 2026-10-29: Binance spot allows 6,000 request weight per minute per IP and 100 orders per 10 seconds; OKX allows 60 order requests per 2 seconds per instrument; Bybit allows 600 requests per 5 seconds per IP and 10 orders per second on USDT perpetuals; Bitget allows 6,000 requests per minute per IP and 10 orders per second; MEXC spot allows 500 per 10 seconds per endpoint; Gate allows 10 spot orders and 100 futures orders per second; KuCoin's VIP0 spot pool is 4,000 per 30 seconds; BingX allows 500 market-data requests per 10 seconds per IP and 10 futures orders per second. Going over usually returns HTTP 429, and Binance and MEXC go on to ban the IP for anywhere from 2 minutes to 3 days.
You can't compare these numbers directly. Some exchanges count per IP, some per UID, some per instrument; some count requests and some count weight; some use fixed windows and some use rolling ones. This guide puts the REST and WebSocket limits of all eight in tables, explains how weight is counted, what happens when you go over, and the fill-ratio and cancel-rate rules, then gives a checklist for avoiding bans and a worked example.
Quick answers
- Check the unit first: Binance counts request weight per IP and orders per account; OKX, Bybit, Bitget and Gate count order limits per UID; market-data endpoints are almost always per IP.
- Use WebSocket for market data: polling depth and tickers over REST is the fastest way to burn an IP's quota, and OKX's docs recommend WebSocket for market data and order book depth.
- Read the response headers: Binance, Bybit, Bitget, Gate and KuCoin return used or remaining quota in headers, and your code should slow down by them.
- Back off on 429: Binance says that if you keep sending after a 429, the IP is banned automatically with 418. Bybit returns 403 when an IP goes over and asks you to stop all sessions for at least 10 minutes.
- Too many cancels also gets you limited: OKX, Gate and BingX all adjust limits by fill ratio or cancel rate.
REST rate limits at eight exchanges
| Exchange | Overall or IP limit | Orders | Market data | How it's counted |
|---|---|---|---|---|
| Binance | Spot 6,000 weight/min; USDⓈ-M futures 2,400 weight/min | Spot 100 per 10 s and 200,000 per day; futures 300 per 10 s and 1,200 per minute | Weight-based, e.g. depth up to 100 levels costs 5, up to 5,000 levels costs 250 | Weight per IP, orders per account; fixed windows that reset on the minute |
| OKX | Set per endpoint | 60 per 2 s per instrument; batch 300 orders per 2 s; 1,000 new and amended orders per 2 s per sub-account | Order book 40 per 2 s, all tickers 20 per 2 s | Public per IP, private per UID; order limits shared between REST and WebSocket |
| Bybit | 600 per 5 s per IP | USDT perpetual 10/s, spot 20/s | IP limit only | Rolling per-second window per UID; each order in a batch counts once |
| Bitget | 6,000 per minute per IP on the common domain | 10/s; batch 5/s with up to 20 orders per batch | Tickers 20/s | Private per UID, market data per IP; REST and WebSocket share the quota |
| MEXC | 500 per 10 s per endpoint | Spot order weight 1 (IP and UID counted separately); most futures endpoints 20 per 2 s | Weight-based, mostly 1 to 10 | IP and UID limits are independent |
| Gate | Public endpoints 200 per 10 s per IP | Spot place + amend 10/s (UID + market); futures place + amend 100/s; cancels 200/s | 200 per 10 s per endpoint | Private per UID or sub-account; other private endpoints 200 per 10 s |
| KuCoin | Classic VIP0: spot pool 4,000 per 30 s, futures pool 2,000; unified account trading pool 300/s | Spot order weight 1, futures order weight 2 | Public pool 2,000 per 30 s per IP | Private pools per UID; master and sub-accounts are independent; quotas rise with VIP level |
| BingX | Account endpoints 2,000 per 10 s per IP | Futures 10/s, cancel 5/s; spot 5/s | Spot and futures market data share 500 per 10 s per IP | Copy-trading lead traders have a lower order limit (1/s) |
Sources: Binance spot exchangeInfo, Binance futures exchangeInfo, Binance spot REST docs, OKX API v5, Bybit Rate Limit Rules, Bitget Quick Start, Bitget Order Management, MEXC spot API, MEXC futures API, Gate API v4, KuCoin rate limit (Classic), KuCoin rate limit (UTA), BingX rate limit upgrade notice, checked 2026-10-29.
ⓘ Binance's figures come straight from its public exchangeInfo endpoints and change whenever Binance changes them. The GitHub version of MEXC's futures docs we read still marks the order endpoints "Under maintenance"; MEXC announced they reopened on 2026-03-31, so go by the newer docs for current limits. BingX's IP limit for account endpoints is the figure in effect since 2025-09-10.
WebSocket limits
| Exchange | Connections | Messages and subscriptions | Heartbeat and disconnects |
|---|---|---|---|
| Binance | 300 connection attempts per 5 minutes per IP | Spot 5 messages/s, futures 10/s (pings and pongs count); up to 1,024 streams per connection | Connections last up to 24 hours; the futures server pings every 3 minutes and disconnects after 10 minutes without a pong |
| OKX | 3 connection requests per second per IP; up to 30 connections per private channel (orders, account, positions and so on) per sub-account | 480 subscribe, unsubscribe and login requests per hour per connection | Disconnects after 30 seconds without data; send the string "ping" yourself |
| Bybit | No more than 500 connections per 5 minutes; up to 1,000 market-data connections per IP, counted separately for spot, linear, inverse and options | The args of one public connection can't exceed 21,000 characters; spot takes up to 10 args per subscribe request; from 2026-11-26, spot and futures take up to 100 args per connection | Ping every 20 seconds is recommended; with no ping-pong and no data, the connection drops after 10 minutes |
| Bitget | 300 connection requests per 5 minutes per IP, 100 connections max | 10 messages/s per connection; 240 subscription requests per hour, up to 1,000 channels, fewer than 50 recommended | Ping every 30 seconds; the server disconnects after 2 minutes without a ping |
| MEXC | No connection limit stated | 100 per second; up to 30 subscriptions per connection | Connections last up to 24 hours; a user data stream listenKey is valid for 60 minutes and must be extended |
| Gate | Up to 300 connections per IP | Spot place and amend 10/s; futures place, amend and cancel 100/s; other channels unlimited | Not covered in that part of the docs |
| KuCoin | Up to 800 concurrent connections (private per UID, public per IP) | 100 messages per 10 seconds per connection; up to 100 topics per request; up to 400 topics per spot connection | Ping interval 18 seconds, timeout 10 seconds; token valid 24 hours |
| BingX | We found no published connection limit | Up to 200 subscriptions per spot connection (since 2024-08-20) | The futures docs say the server pings every 5 seconds and expects a pong |
Sources: Binance WebSocket Streams, Binance futures WebSocket connect, OKX API v5, Bybit WebSocket Connect, Bitget Quick Start, MEXC spot API, Gate API v4, KuCoin rate limits, KuCoin WebSocket introduction, BingX spot WebSocket subscription limit notice, checked 2026-10-29.
Going over a WebSocket limit usually means an immediate disconnect, and an IP that keeps getting disconnected may be banned; the Binance, Bitget and MEXC docs all say so. Don't reconnect in a tight loop after a drop: Binance allows 300 connection attempts per 5 minutes and Bybit 500 connections per 5 minutes, and a buggy reconnect loop hits those quickly.
How weight systems work
On Binance, "6,000 per minute" means weight, not requests. Each endpoint has its own weight, and heavier queries cost more:
- Binance depth: limit 1 to 100 costs 5, 101 to 500 costs 25, 501 to 1,000 costs 50, and 1,001 to 5,000 costs 250. At 5,000 levels you use up the 6,000 in 24 calls a minute.
- Binance 24-hour ticker: weight 2 for one symbol, 80 with no symbol (all pairs).
- MEXC: also weight-based, but each endpoint has its own 500 per 10 seconds, with IP and UID counted separately; a spot order costs IP weight 1 and UID weight 1.
- KuCoin: private endpoints share one pool that resets every 30 seconds; a spot order costs 1, a futures order 2, and the docs' batch-cancel example costs 4.
OKX, Bybit, Bitget, Gate and BingX instead set "so many per second or per 2 seconds" for each endpoint, with no weight pool across endpoints (Bitget adds an overall 6,000 per minute per IP, and Bybit 600 per 5 seconds per IP).
The windows differ too. Binance uses fixed windows: the 1-minute quota resets at second 00 of each minute, the 10-second quota at seconds 00, 10, 20 and so on, and the daily order count at 00:00 UTC. Bybit counts over a rolling one-second window. KuCoin's headers tell you how many milliseconds remain until reset.
What happens when you go over
| Exchange | Response | What the docs say happens | Header or field to watch |
|---|---|---|---|
| Binance | HTTP 429; 418 when banned | Keep sending after a 429 and the IP is banned automatically, from 2 minutes up to 3 days for repeat offenders; Retry-After gives the seconds to wait | X-MBX-USED-WEIGHT-1M, X-MBX-ORDER-COUNT-10S |
| OKX | Error 50011; 50061 for the sub-account cap | The request is rejected; throttle as the docs say | GET /api/v5/trade/account-rate-limit shows the sub-account limit |
| Bybit | retCode 10006; HTTP 403 for the IP limit | After an IP breach, stop all HTTP sessions for at least 10 minutes; the ban lifts automatically | X-Bapi-Limit, X-Bapi-Limit-Status, X-Bapi-Limit-Reset-Timestamp |
| Bitget | HTTP 429 | Requests are throttled automatically; IPs repeatedly disconnected from WebSocket may be blocked | x-mbx-used-remain-limit |
| MEXC | HTTP 429; 403 when the WAF blocks you | IP bans for repeat offenders from 2 minutes to 3 days; the FAQ says access returns after about 10 minutes | Retry-After |
| Gate | HTTP 429 | The request is rejected | X-Gate-RateLimit-Requests-Remain, X-Gate-RateLimit-Limit, X-Gate-RateLimit-Reset-Timestamp |
| KuCoin | HTTP 429 with error 429000 | Wait until the reset time in the headers; under server overload you may also get 429000, which doesn't count against your quota | gw-ratelimit-limit, gw-ratelimit-remaining, gw-ratelimit-reset |
| BingX | Not stated in the notice | The rate limit notice gives no penalty; the cancel-rate rule restricts buying for 10 minutes | We didn't find one |
Binance's futures docs add a warning: a 503 "Unknown error" may mean the order actually went through, so check via WebSocket updates or an orderId query before resending. A 503 "Service Unavailable" is a definite failure, and you can retry 3 to 5 times with exponential backoff such as 200, 400 and 800 ms. The -1008 overload throttle exempts reduce-only and close-position orders.
Fill-ratio and cancel-rate rules
- Binance: the spot order limit counts only unfilled orders, so if your orders keep filling you can keep placing them.
- OKX: from VIP5, the past 7 days' fill ratio puts a sub-account in one of 8 tiers, from 1,000 to 10,000 new and amended orders per 2 seconds; it updates daily at 08:00 UTC, with a one-day grace period on downgrades.
- Gate: on perpetual futures, more than 86,400 requests in 24 hours with no fills cuts order placement to 10 per 10 seconds for the next hour; a fill ratio under 1% cuts it to 20 per 10 seconds.
- BingX: from 2025-12-02, if your completed orders in the past hour pass a threshold (2,000 overall, or 500 each for limit, Post Only, IOC and FOK orders) with a cancel rate of 99%, buy orders of that type are restricted for 10 minutes; sells are not affected (BingX API trading rule update).
For market-making or high-frequency strategies that cancel and amend a lot, the real ceiling is often the fill ratio rather than requests per second. Before each cancel or amend, ask whether the order had any chance of filling.
How to avoid hitting limits and getting your IP banned
Move market data to WebSocket
subscribe to depth, trades and candles, and use REST only for snapshots.Read the headers on every response
when the remaining quota drops below about 20%, slow down before you get a 429.On 429, wait for Retry-After
without it, back off exponentially, and pause every thread that shares the IP.Batch where you can
OKX takes 300 orders per 2 seconds in batches, Bitget 20 per batch, Bybit 1 to 10 per request; Bybit and OKX still count each order in a batch.Spread load across sub-accounts
OKX and KuCoin both say sub-account limits are independent and suggest sub-accounts for more capacity.Send heartbeats as documented
Bybit every 20 seconds, Bitget 30, KuCoin 18. Add a delay to reconnects so you don't hit the per-5-minute connection caps.
Worked example: a grid bot on 20 pairs
Say you run 20 pairs on Binance spot and each pair pulls 100-level depth over REST once a second (weight 5): 20 × 5 × 60 = 6,000 weight a minute, exactly the IP limit, so any extra query returns 429. Subscribe to one depth stream per pair instead, all 20 on one connection, which is far below the 1,024-stream cap, and REST weight drops to almost nothing.
Put the same 20 pairs on OKX: order limits are per instrument, so each pair gets its own 60 per 2 seconds. But all pairs in one sub-account share a cap of 1,000 new and amended orders per 2 seconds, so 20 pairs averaging 50 each per 2 seconds already hit it. Check both layers: the per-endpoint limit and the account-wide total.
Grid fills rarely hit order limits on their own: 2 million USDT a month at 100 USDT per grid is about 20,000 fills, under 0.01 per second on average. Trouble usually comes from market-data polling and reconnect loops.
Do API orders earn a rebate?
| Exchange | Fee Otter rebate | What the official terms say about API orders |
|---|---|---|
| MEXC | No rebate on API orders | Affiliate FAQ: "All trades made by users via API will no longer count toward commission" |
| KuCoin | No rebate on API orders | Referral page: API trading is currently not eligible for commission |
| Bitget | 50% | PRO users (API share of 20% or more, plus 30-day spot volume above 50 million or futures above 100 million USDT) have no upstream commission |
| Binance | 40% | The referral terms neither exclude API orders nor say they count |
| OKX | 20% automatic rebate + exclusive rewards | The affiliate rules don't mention API separately |
| Bybit | 40% | The affiliate terms don't mention API separately |
| Gate | 70% | The referral rules don't mention API |
| BingX | 45%, all paid automatically by BingX | We found no rule excluding API orders |
Sources: MEXC affiliate FAQ, KuCoin referral, Bitget PRO (published 2025-07-01), checked 2026-10-29; the other exchanges' terms are covered in each API setup guide.
ⓘ Futures rates shown; spot: Gate 65%, Bitget 45%. Where the terms are silent, your settlement records show whether API orders counted.
Binding a Fee Otter rebate takes only your UID, never an API key, but API orders on MEXC and KuCoin earn no rebate, so count the rebate as zero when you cost them.
FAQ
Which exchange has the most generous API rate limits?
It depends on the strategy. For order count, Gate futures at 100 per second is highest; OKX counts per instrument, so many pairs can add up to more, but a sub-account caps at 1,000 per 2 seconds; KuCoin's quota rises with VIP level. A single number won't settle it.
How long does a Binance API IP ban last?
Binance says that sending after a 429 triggers an automatic IP ban with HTTP 418, lasting from 2 minutes up to 3 days for repeat offenders. The Retry-After header tells you how many seconds are left.
What is the Bybit API rate limit?
600 requests per 5 seconds per IP. Orders are counted per UID over a rolling second: 10 per second on USDT perpetuals and 20 on spot. An IP breach returns 403, and you should stop all sessions for at least 10 minutes.
What is the Bitget API rate limit?
6,000 requests per minute per IP on the common domain, shared by REST and WebSocket; orders 10 per second, batch orders 5 per second (20 per batch), tickers 20 per second.
What is the MEXC API rate limit, and do API orders get a rebate?
Spot allows 500 per 10 seconds per endpoint, with IP and UID counted separately; a WebSocket connection takes up to 30 subscriptions. MEXC's affiliate FAQ says API trades don't count toward commission, so API orders get no rebate.
Does trading by API affect my rebate?
API orders on MEXC and KuCoin earn no rebate, and Bitget PRO users have no upstream commission. The other exchanges' terms don't address API separately, so your settlement records are what count. Binding needs only your UID, never an API key.