Discover/Csstats API
live

Csstats APIcsstats.org

Access CS2 player profiles, match history, round-by-round data, leaderboards, and VAC ban stats from csstats.gg via a structured REST API.

This API takes change requests — .
Endpoint health
verified 15h ago
get_match_details
get_leaderboard
get_ban_stats
get_round_history
get_player_matches
6/6 passing latest checkself-healing
Endpoints
8
Updated
1mo ago

What is the Csstats API?

This API exposes 8 endpoints covering CS2 player profiles, match history, and leaderboard data from csstats.gg. Use search_player to resolve a Steam ID, profile link, or custom URL into a full player profile — including overall stats, weapon breakdowns, map stats, and rank history. Other endpoints cover individual match details with heatmap coordinates, round-by-round outcomes, co-player records, and global VAC/Game Ban daily counts.

This call costs10 credits / call— charged only on success
Try it
Steam ID (e.g. 76561198088771412), Steam Profile Link, or Custom Steam URL
api.parse.bot/scraper/8e04485d-f2ca-441f-a18c-e1d6ac48b195/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
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"
}'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace csstats-org-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""
CSStats.gg API Client
Get your API key from: https://parse.bot/settings

Analyze CS2 player performance, check match heatmaps, browse leaderboards,
and track daily ban statistics.
"""

from parse_apis.cs_stats_api import CSStats, LeaderboardType, PlayerNotFound

cs = CSStats()

# Search for a player by Steam ID and inspect their profile
player = cs.players.search(query="76561198088771412")
print(player.username, player.steam_id, player.ban_status)

# Access rank history entries
for entry in player.rank_history:
    print(entry.date, entry.premier, entry.adr)

# Get the player's match list via the instance method
match_list = player.matches()
print(match_list.total_matches)

for match_summary in match_list.matches:
    print(match_summary.match_id, match_summary.url)

# Get full match details with heatmap data
match = cs.matches.get(match_id="139794175")
print(match.match_id, match.match_info.title)

# Browse the premier leaderboard using the enum
leaderboard = cs.leaderboards.get(type=LeaderboardType.PREMIER)
print(leaderboard.type)
for lb_player in leaderboard.players:
    print(lb_player.rank, lb_player.username, lb_player.steam_id)

# Check daily ban statistics
ban_report = cs.banreports.get()
for ban in ban_report.daily_bans:
    print(ban.date, ban.num)

# Typed error handling for player lookup
try:
    profile = cs.players.get(steam_id="00000000000000000")
    print(profile.username)
except PlayerNotFound as exc:
    print(f"Player not found: {exc}")

print("exercised: players.search / players.get / player.matches / matches.get / leaderboards.get / banreports.get")
All endpoints · 8 totalmissing one? ·

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.

Input
ParamTypeDescription
queryrequiredstringSteam ID (e.g. 76561198088771412), Steam Profile Link, or Custom Steam URL
Response
{
  "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

search_player (POST) and get_player_profile (GET) both return the same rich profile shape: a stats object containing overall stats, totals, weapons, maps, past10, best, and a matches array, alongside avatar, username, ban_status, and a rank_history array. Each rank_history entry carries a date, adr, premier rating, csrank, and faceit level. search_player accepts a raw Steam ID, a full Steam profile URL, or a custom Steam URL and resolves it to a SteamID64 before fetching the profile — useful when you don't already have the numeric ID. Players with no recorded CS2 matches return empty stats and an empty rank_history.

Match Data

get_player_matches returns a paginated list of recent matches for a given steam_id, each entry containing a match_id and a url, plus a total_matches count. Those match_id values feed into two deeper endpoints. get_match_details returns a heatmap_data object with kills, deaths, shots, damage, hurt, smoke, flash, and he arrays — each entry holds coordinate data useful for spatial analysis. get_round_history takes both a match_id and a steam_id and returns every round's won boolean, player_side (T or CT), running team_score and opponent_score, and a win_reason, plus aggregate wins, losses, and total_rounds.

Leaderboards and Ban Statistics

get_leaderboard returns a ranked list of players for the premier leaderboard type; each entry has rank, steam_id, and username. The endpoint accepts a type parameter, though only premier is reliably supported. get_ban_stats requires no inputs and returns a daily_bans array covering the past 30 days, with each entry holding a date (YYYY-MM-DD) and a num string representing the ban count — useful for charting VAC and Game Ban trends over time.

Co-Player Data

get_player_played_with retrieves the list of other players a given player has shared matches with, along with shared stats. It supports an offset parameter for pagination and returns a players array alongside a vac field for the queried player.

Reliability & maintenanceVerified

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.

Last verified
15h ago
Latest check
6/6 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a CS2 career dashboard by pulling weapon and map stats from get_player_profile for a given SteamID64.
  • Track Premier rating trends over time using the rank_history array returned by search_player.
  • Visualize kill and death positions on a map using the coordinate arrays in get_match_details heatmap_data.
  • Reconstruct match timelines round-by-round with get_round_history, showing side, score progression, and win reasons.
  • Monitor daily VAC and Game Ban volumes by charting the daily_bans array from get_ban_stats.
  • Identify frequent teammates or opponents for a player using get_player_played_with with pagination.
  • Display the top-ranked Premier players by name and Steam ID using get_leaderboard.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 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.

Frequently asked questions
Does csstats.gg have an official developer API?+
csstats.gg does not publish an official public developer API or developer documentation for third-party access to its data.
What does get_round_history return beyond win/loss counts?+
get_round_history returns a rounds array where each entry includes round_number, a won boolean, player_side (T or CT), team_score, opponent_score, and win_reason. It also surfaces total_rounds, aggregate wins and losses, and a player_team integer indicating which team (0 or 1) the queried player was on. Both match_id and steam_id are required — the endpoint uses the player identity to determine which team's perspective to report.
What are the limitations when querying players with no CS2 match data?+
Any player who has not recorded CS2 matches on csstats.gg will return an empty stats object and an empty rank_history array from both search_player and get_player_profile. Similarly, get_player_matches will return total_matches: 0 and an empty matches array for those players.
Does the API return individual player scorecards (kills, deaths, ADR) for every player in a match, not just the queried player?+
Not currently. get_match_details returns heatmap coordinate data and basic match info, and get_round_history focuses on one player's perspective within a match. Full multi-player scorecards per match are not exposed. You can fork this API on Parse and revise it to add an endpoint that retrieves per-player performance rows for a given match.
Is leaderboard data available for types other than Premier?+
The get_leaderboard endpoint accepts a type parameter, but only premier is reliably supported at this time. Other leaderboard types such as regional or skill-group rankings are not currently returned. You can fork this API on Parse and revise it to add support for additional leaderboard types if csstats.gg surfaces them.
Page content last updated . Spec covers 8 endpoints from csstats.org.
Related APIs in SportsSee all →
csstats.gg API
Access Counter-Strike 2 player statistics, match history, and leaderboard rankings from csstats.gg. Search players by Steam ID or name, retrieve detailed performance metrics and recent match results, explore scoreboard data, view played-with history, and check global ban statistics.
csgostats.gg API
Track and analyze Counter-Strike 2 player performance with detailed statistics including weapon usage, match history, and head-to-head comparisons. Access global leaderboards, view recent matches, and discover which players you've competed against to benchmark your skills.
api-public-docs.cs-prod.leetify.com API
Access CS2 player statistics, match history, and individual game performance data from Leetify's competitive database. Look up player profiles by Steam64 ID or Leetify user ID and retrieve comprehensive match details including per-round metrics and performance breakdowns.
bo3.gg API
Track and compare professional esports performance across CS2, Valorant, and League of Legends by viewing detailed player statistics like kills, deaths, assists, multikills, and clutches. Discover top-performing players and analyze individual match histories to understand player performance ratings and competitive trends.
hltv.org API
Access Counter-Strike esports data from HLTV.org including match results, player and team statistics, team rankings, upcoming match schedules, tournament information, and fantasy league data.
opendota.com API
Access detailed Dota 2 match statistics, player performance metrics, hero win rates, and professional tournament data to analyze gameplay trends and competitive performance. Search for specific players, explore custom data queries through SQL, and retrieve comprehensive match histories to improve your understanding of the game.
csgo.steamanalyst.com API
Track CS2 skin prices in real-time, search for specific skins, and analyze market trends with historical pricing data and top gainers. Compare marketplace listings across different weapons and collections to make informed trading decisions.
steamcharts.com API
Track player counts and trending games on Steam, search for specific titles, and view historical statistics for individual games. Monitor which games are gaining popularity and get detailed player data to stay informed about the gaming landscape.