Steam API: Get player count history
Gets a Steam game's current players, 24-hour peak, all-time peak and monthly player-count history from SteamCharts. Takes a game name, SteamCharts or Steam store link, or Steam app ID.
Unofficial. Not affiliated with or endorsed by Steam.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Game, required
game Game name, SteamCharts link, Steam store link, or Steam app ID; for example, Counter-Strike 2.
Counter-Strike 2
- Max Months optional
max_months Maximum number of completed calendar months to return, newest first; for example, 24.
24 (default)
Whole number from 1 to 200.
Input as JSON
{ "game": "Counter-Strike 2"}Output
{ "months": [ { "month": "2026-09", "peak_players": 1450705, "change_percent": -2.38, "change_players": -19619.98, "average_players": 805637.82 }, { "month": "2026-08", "peak_players": 1331274, "change_percent": -3.28, "change_players": -27974.65, "average_players": 825257.8 }, { "month": "2026-07", "peak_players": 1420896, "change_percent": -6.92, "change_players": -63422.08, "average_players": 853232.45 } ], "game_name": "Counter-Strike 2", "steam_app_id": 730, "all_time_peak": 1818368, "peak_24_hours": 1218335, "steamcharts_link": "https://steamcharts.com/app/730" , "players_right_now": 548570, "all_time_peak_date": "2025-03-01"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"store.steampowered.com/get_player_count_history","input":{"game":"Counter-Strike 2"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "store.steampowered.com/get_player_count_history" , "input": { "game": "Counter-Strike 2" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "store.steampowered.com/get_player_count_history" , "input": { "game": "Counter-Strike 2" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run store.steampowered.com/get_player_count_history# with {"game":"Counter-Strike 2"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "game" ], "properties": { "game": { "type": "string", "description": "Game name, SteamCharts link, Steam store link, or Steam app ID; for example, Counter-Strike 2." }, "max_months": { "type": "integer", "default": 24, "maximum": 200, "minimum": 1, "description": "Maximum number of completed calendar months to return, newest first; for example, 24." } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "game_name", "players_right_now", "peak_24_hours", "all_time_peak", "all_time_peak_date", "steamcharts_link", "steam_app_id", "months" ], "properties": { "months": { "type": "array", "items": { "type": "object", "required": [ "month", "average_players", "change_players", "change_percent", "peak_players" ], "properties": { "month": { "type": "string", "description": "Calendar month (YYYY-MM)." }, "peak_players": { "type": "integer", "description": "Highest concurrent player count in this month." }, "change_percent": { "type": [ "number", "null" ], "description": "Percentage change in average concurrent players from the prior month, if provided." }, "change_players": { "type": [ "number", "null" ], "description": "Change in average concurrent players from the prior month, if provided." }, "average_players": { "type": "number", "description": "Average concurrent player count for the month." } }, "additionalProperties": false }, "description": "Completed calendar months, newest first; excludes the rolling last 30 days." }, "game_name": { "type": "string", "description": "Name of the tracked game." }, "steam_app_id": { "type": "integer", "description": "Steam app identifier." }, "all_time_peak": { "type": "integer", "description": "Highest concurrent player count ever shown by SteamCharts." }, "peak_24_hours": { "type": "integer", "description": "Highest concurrent player count in the last 24 hours." }, "steamcharts_link": { "type": "string", "description": "Page for this game on SteamCharts." }, "players_right_now": { "type": "integer", "description": "Most recently displayed concurrent player count." }, "all_time_peak_date": { "type": [ "string", "null" ], "description": "Date of the all-time peak chart point (YYYY-MM-DD). Older monthly points are labeled on the first of the month, not the exact peak day." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
store.steampowered.com/get_player_count_history- Returns
- current players, 24-hour peak, all-time peak and date, monthly average and peak players
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method store.steampowered.com/get_player_count_history with the inputs above.
Ask your agent
- How many people are playing Counter-Strike 2 right now on Steam?
- What was the all-time peak concurrent player count for Dota 2 and when did it happen?
- Show me the monthly average and peak player numbers for Apex Legends over the last 12 months on steamcharts
- Current player count and 24-hour peak for app ID 730
- Can you pull the last 6 months of player count history for Baldur's Gate 3 from the Steam store page https://store.steampowered.com/app/1086940/Baldurs_Gate_3/
See more
All Steam methodsLists the games with the most players on Steam right now, with current and peak players and prices for a chosen country.
store.steampowered.com/list_most_playedFinds a PC game on Steam by name, store link or app ID and returns its store details, country price, reviews, tags and live player count.
store.steampowered.com/get_gameReads public Steam player reviews for a game by name, store link, or app ID, with optional sorting (most helpful or most recent), verdict and language filters. Overall figures cover all lifetime reviews in every language and verdict.
store.steampowered.com/get_game_reviewsLists Steam's top-selling, discounted, or new and trending games in store order, with prices for a chosen country, review summaries and release dates.
store.steampowered.com/list_top_sellersGets Fortnite players online now, the 24-hour and all-time in-match peaks, and the most-played islands with their creators. Optionally looks up one island by name or code.
fortnite.gg/get_player_countGets a Roblox experience by name or game link, with players online, visits, likes, creator, dates, maturity rating and icon. For names with several matches, returns the match with the most players.
roblox.com/get_gameGets a Chess.com player's public profile, ratings and game records, best puzzle rating and Puzzle Rush best score from a username or member profile link.
chess.com/get_player_statsLooks up a Premier League player by name and returns the profile and either career totals or the stats for a chosen season. If names clash, a current Premier League player is preferred.
premierleague.com/get_player_stats