csstats APIcsstats.gg ↗
Access CS2 player statistics, match history, scoreboards, leaderboards, and ban data from csstats.gg via a structured JSON API.
What is the csstats API?
The csstats.gg API exposes 8 endpoints covering Counter-Strike 2 player profiles, match history, and leaderboard rankings. Use get_player_stats to retrieve aggregated career stats including K/D ratio, HLTV Rating, ADR, HS%, and Win Rate for any Steam ID, or call get_match_scoreboard to pull full per-player scoreboard data for a specific match. Player lookup, ban monitoring, and played-with history are also available.
curl -X GET 'https://api.parse.bot/scraper/758b30c6-74c7-46ea-a4fb-2efd60740f7c/search_player?query=s1mple' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for a player by Steam ID, name, or profile URL. When a 17-digit Steam ID is provided, returns the resolved profile URL directly. Name-based queries resolve via the site's search form and may return multiple matching players.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Steam ID (17-digit numeric), player name, or Steam profile URL |
{
"type": "object",
"fields": {
"players": "array of player objects with name, steam_id, profile_url (present when multiple results found)",
"steam_id": "string - resolved 64-bit Steam ID (present for single-result lookups)",
"profile_url": "string - full URL to the player's csstats.gg profile (present for single-result lookups)"
},
"sample": {
"data": {
"players": [
{
"name": "s1mple",
"steam_id": "76561197978186923",
"profile_url": "https://csstats.gg/player/76561197978186923"
}
]
},
"status": "success"
}
}About the csstats API
Player Lookup and Stats
The search_player endpoint accepts a 17-digit Steam ID, a player name, or a Steam profile URL. When a direct Steam ID is provided it returns the resolved profile_url immediately; name-based queries may return an array of matching player objects each with name, steam_id, and profile_url. Once you have a steam_id, get_player_stats returns an overview object containing labeled stat pairs — K/D, HLTV Rating, ADR, HS%, Win Rate — aggregated across the player's career on csstats.gg.
Match History and Scoreboards
get_player_matches returns an array of match objects ordered most-recent-first, each carrying match_id, ISO 8601 UTC date, map, score, result (w/l/t), and per-match performance fields including k, d, a, hs, adr, and rating. The match_id values feed into two match-level endpoints: get_match_scoreboard returns both teams as arrays of player objects (name, steam_id, k, d, a, rating), while get_player_match_stats returns a single player's detailed stat panels — base, summary, utility, fk, trade, 1vX, and multikill — each mapped to column codes with display, value, and detail fields. The team field in get_player_match_stats aligns with the team index order from get_match_scoreboard.
Leaderboards and Social Data
get_leaderboard returns ranked players with rank, name, steam_id, and elo for the premier or wingman modes. get_player_played_with retrieves stats for players encountered in a given player's match history, with pagination via an offset parameter. get_ban_stats returns a single field — total_bans_30d — representing the comma-formatted count of VAC and game bans detected across all tracked players in the last 30 days.
The csstats API is a managed, monitored endpoint for csstats.gg — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when csstats.gg 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.gg 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?+
- Track a player's HLTV Rating and ADR trends over time using get_player_matches combined with get_player_stats
- Build a CS2 team analysis tool by pulling full scoreboards via get_match_scoreboard for recent matches
- Monitor Premier leaderboard rankings and elo changes with get_leaderboard on a scheduled basis
- Identify frequent teammates or opponents for a player using get_player_played_with with offset-based pagination
- Aggregate global VAC and game ban activity across tracked CS2 players using get_ban_stats
- Resolve arbitrary Steam IDs, names, or profile URLs to a canonical steam_id for downstream processing via search_player
- Compare per-round utility and trade stats between two players in the same match using get_player_match_stats
| 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.