Polymarket API Rate Limits: Every Endpoint (2026)
Polymarket enforces two rate-limit layers: IP-based Cloudflare throttling (global
15,000 requests per 10 seconds across all APIs, with per-service tables below) and
per-signer token buckets on CLOB order/cancel endpoints — Standard tier gets 40
orders per second with burst 60, scaling up to 600/s at the $10M Elite tier.
Exceeding a limit delays or queues requests rather than hard-rejecting them; true
overruns return 429 with a Retry-After header.
What are the IP-based limits per service?
| Service | General limit | Notable endpoints |
|---|---|---|
| Gamma | 4,000 req/10s | /events 500, /markets 300, /public-search 350 |
| Data API v1 | 1,000 req/10s | /trades 200, /positions 150 |
| Data API v2 | 800 req/10s | /v2/trades 300, /v2/positions 200, /v2/prices-history 200 |
| CLOB | 9,000 req/10s | /book 1,500, /price 1,500, /prices-history 1,000 |
| Bridge | 50 req/10s | — |
| Relayer | 25 req/1min | /submit |
What are the per-signer trading limits?
Token buckets scoped to your signer address (the credentials’ address), separate from IP limits. Tier eligibility follows the maker wallet’s trailing 30-day volume, refreshed every 3 hours:
| Tier | 30-day volume | Orders/s | Burst | Cancels/s | Burst |
|---|---|---|---|---|---|
| Standard | — | 40 | 60 | 80 | 120 |
| Copper | $30k | 60 | 90 | 120 | 180 |
| Bronze | $50k | 80 | 120 | 160 | 240 |
| Silver | $100k | 200 | 300 | 400 | 600 |
| Gold | $500k | 400 | 600 | 800 | 1,200 |
| Platinum | $2.5M | 450 | 675 | 900 | 1,350 |
| Diamond | $5M | 525 | 787 | 1,050 | 1,575 |
| Elite | $10M | 600 | 900 | 1,200 | 1,800 |
Key mechanics:
- Tokens refill continuously at the tier rate; burst capacity is the maximum a full bucket can spend immediately
- Batch order requests are all-or-nothing: the entire batch is admitted or rejected based on total token cost
DELETE /cancel-allcosts 1 token plus 1 per order actually cancelled — big cancels can push lower tiers into negative balance, blocking future cancels- A two-week warning mode (from July 24, 2026) preceded enforcement; requests that
would be rejected carry
Poly-RateLimit-Warning: true
How should a bot handle 429s?
import time
def call_with_backoff(fn, *args, **kwargs):
while True:
r = fn(*args, **kwargs)
if r.status_code != 429:
return r
wait = int(r.headers.get("Retry-After", 1))
time.sleep(wait)
Rules that keep you out of trouble:
- Honor
Retry-After— it names the earliest viable retry - Check
Poly-RateLimit-Remainingbefore large batches; split if the token cost exceeds your balance - Never retry a 4xx blindly — 400s are request errors, not throttles
- Prefer WebSocket streams for books and fills; polling burns budget
- Watch
Poly-RateLimit-Reset— it’s when enough tokens exist for your failed request, not when the bucket is full
What’s the practical budget for a normal bot?
A single-signer bot on Standard tier doing discovery + signal + execution:
| Action | Cost per cycle | At 1 cycle/s |
|---|---|---|
| 1 Gamma market fetch | 1 (of 500/10s) | negligible |
| 1 book snapshot (WebSocket-fed) | 0 | 0 |
| 1-3 order operations | 1-3 tokens | well under 40/s |
The limits are generous for well-designed bots; they punish polling loops and batch-spam, not strategy complexity.
FAQ
Q: What happens when I exceed a Polymarket rate limit?
A: Cloudflare throttling delays or queues over-limit requests; genuine overruns
return 429 with Retry-After. Per-signer trading buckets reject with 429 once
enforcement is live.
Q: Are rate limits per IP or per account? A: Both, separately: Cloudflare limits are per IP; CLOB order/cancel buckets are per signer address. Two bots behind one IP share the IP budget; one signer’s trading doesn’t touch another signer’s bucket.
Q: How do I get a higher trading tier? A: Trade more — tiers follow your maker wallet’s trailing 30-day volume, refreshed every 3 hours. Volume on the maker wallet counts even when the signer differs.
Q: Can a batch order fail partially? A: Under live enforcement the rate-limit check is all-or-nothing (whole batch or none), but an admitted batch retains normal per-order responses — individual orders inside can still fail for other reasons.
Q: What is Poly-RateLimit-Warning?
A: A header from the warning-mode period before live per-signer enforcement — it
flags requests that would have been rejected. Treat it as a free dress rehearsal.
Sources
Disclaimer
Not financial advice. Educational purposes only. Updated October 2026.