Steam API rate limits, and how to stay under them.
The Steam Web API allows 100,000 calls per key per day under Valve's Terms of Use and answers 429 when you go too fast. Valve publishes no per-minute figure and no Retry-After header, so budget calls yourself, cache, batch IDs, and back off on 429.
- 100,000 / day / key
- 429 when throttled
- No published per-minute limit
{ "success": true, "data": [ { "id": "cs2-match-2398594", "eventName": "CCT 2026 South America Series 6", "startsAt": "2026-10-03T22:00:00.000Z", "team1Name": "ex-Keyd Stars", "team2Name": "Procyon" }, { "id": "cs2-match-2398853", "eventName": "ESN Fall Showdown 2026", "startsAt": "2026-10-04T06:00:00.000Z", "team1Name": "The Huns", "team2Name": "5star" } ... ]}What are the Steam Web API rate limits?
Valve documents three things: a daily limit of 100,000 calls per key, the 429 Too Many Requests response for rate-limited callers, and stricter per-IP limits for traffic that keeps producing 403 errors. Anything beyond that, such as a per-second ceiling, is not published.
| Limit | Value | Source |
|---|---|---|
| Calls per key per day | 100,000 | Steam Web API Terms of Use |
| Response when throttled | 429 Too Many Requests | Steamworks Web API response codes |
| Traffic that generates 403s | Stricter per-IP rate limits | Steamworks Web API overview |
| Retry-After header | Not documented | – |
| Per-minute limit | Not published | – |
How many calls can my app make per minute?
100,000 a day averages to about 69 calls a minute, or 1.16 a second, spread evenly. Real traffic is bursty, so plan for a sustained rate well below that and leave headroom for retries.
| Pattern | Calls a day | Fits? |
|---|---|---|
| 500 users refreshed every 10 minutes | 72,000 | Yes, with little headroom |
| 2,000 users refreshed every 30 minutes | 96,000 | Barely; no room for retries |
| 2,000 users, 20 IDs per batched call, every 10 minutes | 14,400 | Yes |
How do I cut the number of calls?
Cache each response for as long as the data stays valid, batch IDs where the method accepts a list (GetPlayerSummaries takes up to 100 Steam IDs), refresh only what users actually look at, and retry with exponential backoff instead of immediately.
import time, threading
class DailyBudget:
"""Spread a daily allowance evenly; block when it is used up."""
def __init__(self, per_day=90_000):
self.rate = per_day / 86_400 # tokens per second
self.capacity = 60 # allow short bursts of 60 calls
self.tokens, self.t = self.capacity, time.monotonic()
self.lock = threading.Lock()
def take(self):
with self.lock:
while True:
now = time.monotonic()
self.tokens = min(self.capacity, self.tokens + (now - self.t) * self.rate)
self.t = now
if self.tokens >= 1:
self.tokens -= 1
return
time.sleep((1 - self.tokens) / self.rate)
budget = DailyBudget()
# call budget.take() before every request to api.steampowered.comHow do CS2 API rate limits compare?
The CS2 API publishes per-minute and monthly limits for every plan, and every 429 carries Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset, so a client always knows when to try again. Pro esports data is not in Steam at all, so for match data the comparison is moot.
| Plan | Per month | Per minute | Per day |
|---|---|---|---|
| Free | 500 | 10 | 200 |
| Starter ($15) | 10,000 | 30 | No daily cap |
| Pro ($59) | 250,000 | 100 | 25,000 |
| Scale ($100) | 1,000,000 | 400 | 100,000 |
Frequently asked questions
Something missing? Email support@citoapi.com.
How many requests can I make to the Steam Web API?
100,000 calls per API key per day, under the Steam Web API Terms of Use.
Does the Steam API have a per-minute rate limit?
Valve does not publish one. It returns 429 Too Many Requests when you are throttled, so spread calls evenly and back off on 429.
What happens if I exceed the Steam API rate limit?
Requests return 429 until the limit resets. Traffic that keeps producing 403 errors also gets stricter per-IP limits.
Related
- Steam Web API rate limit exceededThe daily call limit on a Steam key and what to do when you hit it.
- Steam API 429 Too Many RequestsThrottled by Steam: backoff that works and how to stop triggering it.
- Steam CS2 APIWhat Valve's Steam Web API covers for CS2, and the match-data gap.
- CS2 API pricingFree, Starter, Pro and Scale: requests, live delay and history per plan.
Build CS2 live score apps
Free is for building and testing. Paid plans add commercial use, real-time live data and the full archive.