Csstats APIcsstats.org ↗
Access CS2 player profiles, match history, round-by-round data, leaderboards, and VAC ban stats from csstats.gg via a structured JSON API.
What is the Csstats API?
The csstats.gg API exposes 7 endpoints covering CS2 player profiles, match history, and leaderboards from csstats.gg. The search_player endpoint resolves a Steam ID, profile URL, or custom URL to a full player profile including weapon stats, map stats, and rank history. Other endpoints surface per-match performance data, round-by-round outcomes, heatmap coordinates, and global daily ban counts — all returned as structured JSON.
curl -X POST 'https://api.parse.bot/scraper/8e04485d-f2ca-441f-a18c-e1d6ac48b195/search_player' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"query": "76561198088771412"
}'Search for a player by Steam ID, Steam Profile Link, or Custom Steam URL. Returns the player's full profile including stats, weapon stats, map stats, and rank history. The query is resolved to a SteamID64 and the full profile is fetched. Players without CS2 match data will return empty stats and rank_history.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Steam ID (e.g. 76561198088771412), Steam Profile Link, or Custom Steam URL |
{
"type": "object",
"fields": {
"stats": "object containing overall stats, totals, weapons, maps, past10, best, and matches",
"avatar": "string or null, avatar image URL",
"steam_id": "string, the player's SteamID64",
"username": "string or null, player display name",
"ban_status": "string, ban status such as 'Clean'",
"rank_history": "array of rank history entries with date, adr, premier, csrank, faceit"
},
"sample": {
"data": {
"stats": {
"best": {
"rank": 39069
},
"maps": {
"overall": {}
},
"rank": 38727,
"past10": [],
"totals": {
"overall": {
"wins": 726,
"games": 967
}
},
"matches": [
139794175
],
"overall": {
"hs": 56,
"wr": 75,
"adr": 98,
"kpd": 1.58,
"rating": 1.52
},
"weapons": {
"overall": {}
},
"comp_wins": 264
},
"avatar": null,
"steam_id": "76561198088771412",
"username": "AceaS",
"ban_status": "Clean",
"rank_history": [
{
"adr": 86,
"date": 1695850598000,
"csrank": null,
"faceit": null,
"premier": 0
}
]
},
"status": "success"
}
}About the Csstats API
Player Profiles and Search
The search_player (POST) and get_player_profile (GET) endpoints both return the same profile shape: a stats object with overall totals, weapon breakdowns, per-map performance, last-10-match summaries, and a matches array. They also return ban_status (e.g. 'Clean'), avatar, username, and a rank_history array whose entries carry date, adr, premier rating, csrank, and faceit level over time. The difference is input format: search_player accepts raw Steam IDs, full profile URLs, or custom Steam URLs and resolves them before fetching; get_player_profile requires a SteamID64 directly. Players with no CS2 match data return empty stats and rank_history.
Match History and Round Detail
get_player_matches returns every match on a player's history tab, ordered newest first, with per-match fields including kills, deaths, adr, map, date (ISO 8601 UTC), match_id, and a rank object that records the rank type (premier, mm, or faceit) and, for Premier, the before/after rating and change. get_match_details takes a match_id and returns heatmap_data — arrays of coordinate objects for kills, deaths, shots, damage, hurt, smokes, flashes, and HE grenades — alongside basic match_info. get_round_history accepts both a match_id and a steam_id and returns each round's won boolean, player_side (T or CT), running team_score/opponent_score, and win_reason, plus aggregate wins, losses, and total_rounds.
Leaderboards and Ban Statistics
get_leaderboard returns a ranked list of players with rank, steam_id, and username. Only the premier leaderboard type is reliably supported at this time. get_ban_stats requires no inputs and returns daily_bans: 30 days of global VAC and Game Ban counts, each entry carrying a date (YYYY-MM-DD) and a num string.
The Csstats API is a managed, monitored endpoint for csstats.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when csstats.org changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official csstats.org API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a CS2 stat tracker dashboard using per-map and per-weapon breakdowns from
get_player_profile. - Plot a player's Premier rating progression over time using the
rank_historyarray returned bysearch_player. - Render in-game kill and death heatmaps by consuming
heatmap_datacoordinate arrays fromget_match_details. - Audit a player's competitive history by reading
ban_statusalongsiderank_historyfrom the profile endpoints. - Display round-by-round T/CT side outcomes and win reasons using
get_round_historyfor post-match analysis. - Monitor global CS2 ban trends by charting the 30-day
daily_banstime series fromget_ban_stats. - Show Premier leaderboard standings in a bot or web UI using
get_leaderboardplayer entries.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does csstats.gg have an official developer API?+
What does get_player_matches return, and does it include scoreboard data for all players in the match?+
get_match_details for heatmap data, or get_round_history for round outcomes, but full multi-player scoreboards are not currently exposed. You can fork this API on Parse and revise it to add a multi-player scoreboard endpoint.What leaderboard types does get_leaderboard support?+
premier type is reliably supported. Matchmaking (MM) and FACEIT leaderboards are not currently returned. You can fork this API on Parse and revise it to add support for those leaderboard types.What happens when I look up a player with no CS2 match history?+
search_player and get_player_profile return a valid response, but the stats object and rank_history array will be empty. The steam_id, username, avatar, and ban_status fields are still populated if the Steam profile resolves correctly.