Docs/CS2 API/CS2 Stats and Leaderboards API

CS2 Stats and Leaderboards API

Aggregated leaders and scene-wide stats: leaderboards by metric, and deep dives into duels, clutches, utility and economy.

11 endpoints in this section. Authenticate with the x-api-key header; every response is { success, data, meta }. Other sections: Live, Player props, Odds, Positions & heatmaps, Watch live (embeds), Pro skins & 3D, Matches, Maps & rounds, Rankings, Teams, Players, Events, Skins, Transfers, Search & reference.

Player leaderboard

GET/api/v1/cs2/leaderboards/{metric}

Top players by one metric over a recent window, with a minimum number of maps. `metric`: `rating`, `adr`, `kast`, `kd`, `kills` or `opening-kills`.

Query parameters

ParameterTypeDescription
metric (path)*stringOne of rating, adr, kast, kd, kills, opening-kills.
limitintegerRows to return. Maximum 200; larger values are reduced to 200.
min_mapsintegerMinimum maps played to be included.
window_daysintegerLook-back window in days.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/leaderboards/rating" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "playerId": "cs2-player-11893",
      "playerName": "ZywOo",
      "teamId": "cs2-team-9565",
      "teamName": "Vitality",
      "maps": 63,
      "rating": 1.24,
      "adr": 88.5,
      "kast": 0.771,
      "kills": 1067,
      "deaths": 740,
      "openingKills": 179,
      "kd": 1.44,
      "player": {
        "id": "cs2-player-11893",
        "nickname": "ZywOo",
        "slug": "zywoo",
        "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/9a20575a48df13463513233c6314f72c.webp",
        "countryName": "France",
        "countryCode": "FR",
        "imageIsPlaceholder": false
      }
    },
    {
      "playerId": "cs2-player-4679",
      "playerName": "jks",
      "teamId": "cs2-team-12774",
      "teamName": "FlyQuest",
      "maps": 58,
      "rating": 1.23,
      "adr": 84.3,
      "kast": 0.794,
      "kills": 931,
      "deaths": 667,
      "openingKills": 108,
      "kd": 1.4,
      "player": {
        "id": "cs2-player-4679",
        "nickname": "jks",
        "slug": "jks",
        "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/6c6cf0b51b83088a93334afcd6eb1640.webp",
        "countryName": "Australia",
        "countryCode": "AU",
        "imageIsPlaceholder": false
      }
    }
  ],
  "meta": {
    "metric": "rating",
    "count": 2,
    "aggregated": true,
    "windowDays": 90,
    "minMaps": 20,
    "availability": "available",
    "dataAvailable": true,
    "unavailableReason": null,
    "limit": 2,
    "total": 2,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Player stat leaders

GET/api/v1/cs2/stats/players

Players ranked by total kills (ties by player id), one row per player, with maps, matches, K/D, ADR, KAST, rating, `headshotPercent` and opening duels, and `asOf`. Totals come from one rollup shared by `/stats`, `/career`, `/seasons`, `/periods` and `/cs2/stats/players`, refreshed every 15 minutes, so they agree. Fields not every match records (assists, opening kills / deaths) are given only when at least 90% of the player's maps record them, else null; the sum over the maps that do is always in `assistsRecorded`, `openingKillsRecorded`, `openingDeathsRecorded`, with `assistsCoverage` / `openingDuelCoverage`. `headshotPercent` is total headshots / kills on the maps that record headshots (0-1, 4 decimals).

Query parameters

ParameterTypeDescription
daysintegerLook-back window in days.
limitintegerRows to return. Maximum 200; larger values are reduced to 200.
window_daysintegerLook-back window in days.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/stats/players" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "playerId": "cs2-player-21783",
      "playerName": "brutmonster",
      "teamId": "cs2-team-13573",
      "teamName": "ex-Zero Tenacity",
      "maps": 1222,
      "kills": 18624,
      "deaths": 17006,
      "assists": 4709,
      "kdRatio": 1.0951,
      "adr": 73.10682266009852,
      "kast": 0.7101723316912972,
      "rating": 1.042940212940213,
      "openingKills": 3502,
      "openingDeaths": 2598,
      "openingDuelSuccessRate": 0.5741,
      "ratingProfile": {
        "rating": 1.042940212940213,
        "ratingVersion": "cito_rating_1",
        "components": {
          "killsPerMap": 15.241,
          "adr": 73.10682266009852,
          "kast": 0.7101723316912972,
          "killsPlusAssistsPerDeath": 1.372
        },
        "openingDuels": {
          "openingKills": 3502,
          "openingDeaths": 2598,
          "successRate": 0.5741
        },
        "formula": "Cito Rating 1.0 per map: 0.30*KPR/0.683 + 0.25*(1-DPR)/0.305 + 0.25*ADR/74.1 + 0.15*KAST/0.716 + 0.05*APR/0.223 (per-…"
      },
      "matches": 513,
      "assistsRecorded": 4709,
      "assistsCoverage": 0.988,
      "openingKillsRecorded": 3502,
      "openingDeathsRecorded": 2598,
      "openingDuelMaps": 1208,
      "openingDuelCoverage": 0.989,
      "headshotPercent": 0.3479,
      "…": "1 more fields"
    },
    {
      "playerId": "cs2-player-21302",
      "playerName": "Cjoffo",
      "teamId": "cs2-team-13573",
      "teamName": "ex-Zero Tenacity",
      "maps": 1231,
      "kills": 17900,
      "deaths": 16969,
      "assists": 5115,
      "kdRatio": 1.0549,
      "adr": 71.3140589198036,
      "kast": 0.7255391980360065,
      "rating": 1.0342926829268293,
      "openingKills": 2051,
      "openingDeaths": 1933,
      "openingDuelSuccessRate": 0.5148,
      "ratingProfile": {
        "rating": 1.0342926829268293,
        "ratingVersion": "cito_rating_1",
        "components": {
          "killsPerMap": 14.541,
          "adr": 71.3140589198036,
          "kast": 0.7255391980360065,
          "killsPlusAssistsPerDeath": 1.3563
        },
        "openingDuels": {
          "openingKills": 2051,
          "openingDeaths": 1933,
          "successRate": 0.5148
        },
        "formula": "Cito Rating 1.0 per map: 0.30*KPR/0.683 + 0.25*(1-DPR)/0.305 + 0.25*ADR/74.1 + 0.15*KAST/0.716 + 0.05*APR/0.223 (per-…"
      },
      "matches": 517,
      "assistsRecorded": 5115,
      "assistsCoverage": 0.999,
      "openingKillsRecorded": 2051,
      "openingDeathsRecorded": 1933,
      "openingDuelMaps": 1227,
      "openingDuelCoverage": 0.997,
      "headshotPercent": 0.6114,
      "…": "1 more fields"
    }
  ],
  "meta": {
    "category": "players",
    "count": 2,
    "dataAvailable": true,
    "total": 6641,
    "limit": 2,
    "page": 1,
    "totalPages": 3321,
    "hasNext": true,
    "hasPrev": false
  }
}

Team stat leaders

GET/api/v1/cs2/stats/teams

Teams by maps played over a recent window (`days`, default 365; `min_maps`, default 10), with match, map and round win rates from completed maps. `search` (or `q`) filters by team name, slug or id.

Query parameters

ParameterTypeDescription
limitintegerRows to return. Maximum 200; larger values are reduced to 200.
min_mapsintegerMinimum maps played to be included.
qstringSame as search.
searchstringOnly teams whose name or slug contains this text, or this team id. Alias q.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/stats/teams" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "teamId": "cs2-team-13027",
      "teamName": "Nuclear TigeRES",
      "matches": 160,
      "matchWins": 102,
      "matchWinPercent": 0.6375,
      "maps": 360,
      "mapWins": 212,
      "mapLosses": 148,
      "mapWinPercent": 0.5889,
      "roundsFor": 4091,
      "roundsAgainst": 3702,
      "roundWinPercent": 0.525
    },
    {
      "teamId": "cs2-team-11609",
      "teamName": "GenOne",
      "matches": 161,
      "matchWins": 89,
      "matchWinPercent": 0.5528,
      "maps": 348,
      "mapWins": 192,
      "mapLosses": 156,
      "mapWinPercent": 0.5517,
      "roundsFor": 3842,
      "roundsAgainst": 3497,
      "roundWinPercent": 0.5235
    }
  ],
  "meta": {
    "category": "teams",
    "count": 2,
    "windowDays": 365,
    "minMaps": 10,
    "dataAvailable": true,
    "unavailableReason": null,
    "limit": 2,
    "total": 2,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Map stats

GET/api/v1/cs2/stats/maps

How many times each map was played in completed matches over a recent window (`days`, default 365), most played first, with its share of all maps.

Query parameters

ParameterTypeDescription
limitintegerRows to return. Maximum 200; larger values are reduced to 200.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/stats/maps" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "mapName": "Dust II",
      "mapsPlayed": 4713,
      "share": 0.1927
    },
    {
      "mapName": "Mirage",
      "mapsPlayed": 4277,
      "share": 0.1749
    }
  ],
  "meta": {
    "category": "maps",
    "count": 2,
    "windowDays": 365,
    "dataAvailable": true,
    "unavailableReason": null,
    "limit": 2,
    "total": 2,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Weapon stats

GET/api/v1/cs2/stats/weapons

Kills and headshot rate by weapon across recorded matches, with each weapon's share of all kills.

Query parameters

ParameterTypeDescription
limitintegerRows to return. Maximum 200; larger values are reduced to 200.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/stats/weapons" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "weapon": "AK-47",
      "kills": 754748,
      "headshots": 453588,
      "headshotPercent": 0.601,
      "killShare": 0.3422,
      "maps": 15105
    },
    {
      "weapon": "M4A1-S",
      "kills": 334935,
      "headshots": 138879,
      "headshotPercent": 0.4146,
      "killShare": 0.1519,
      "maps": 15065
    }
  ],
  "meta": {
    "category": "weapons",
    "count": 2,
    "dataAvailable": true,
    "dataScope": "parsed_demos",
    "limit": 2,
    "total": 2,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Pistol round stats

GET/api/v1/cs2/stats/pistol-rounds

Team pistol round win rates. Currently being recomputed: returns `data_available: false` with `unavailable_reason: being_recomputed`.

Query parameters

ParameterTypeDescription
limitintegerRows to return. Maximum 200; larger values are reduced to 200.
min_mapsintegerMinimum maps played to be included.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/stats/pistol-rounds" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "teamId": "cs2-team-13865",
      "teamName": "Arch",
      "pistolRoundsPlayed": 26,
      "pistolRoundsWon": 21,
      "pistolWinPercent": 0.8077,
      "firstHalfPistolWins": 10,
      "secondHalfPistolWins": 11,
      "ctPistolWinPercent": 0.7273,
      "tPistolWinPercent": 0.8667,
      "maps": 13
    },
    {
      "teamId": "cs2-team-14014",
      "teamName": "Gothic",
      "pistolRoundsPlayed": 32,
      "pistolRoundsWon": 24,
      "pistolWinPercent": 0.75,
      "firstHalfPistolWins": 12,
      "secondHalfPistolWins": 12,
      "ctPistolWinPercent": 0.8333,
      "tPistolWinPercent": 0.7,
      "maps": 16
    }
  ],
  "meta": {
    "category": "pistol-rounds",
    "count": 2,
    "dataAvailable": true,
    "minPistolRounds": 20,
    "dataScope": "round_1_and_round_13",
    "limit": 2,
    "total": 2,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Opening duel stats

GET/api/v1/cs2/stats/opening-duels

Players ranked by first kills and opening duel win rate.

Query parameters

ParameterTypeDescription
limitintegerRows to return. Maximum 200; larger values are reduced to 200.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/stats/opening-duels" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "playerId": "cs2-player-8311",
      "playerName": "nEMANHA",
      "teamId": "cs2-team-12257",
      "teamName": "Wildcard",
      "maps": 1059,
      "openingKills": 3541,
      "openingDeaths": 3303,
      "openingDuelAttempts": 6844,
      "openingDuelSuccessRate": 0.5173874926943308,
      "kills": 16636,
      "deaths": 16479
    },
    {
      "playerId": "cs2-player-21783",
      "playerName": "brutmonster",
      "teamId": "cs2-team-13573",
      "teamName": "ex-Zero Tenacity",
      "maps": 1208,
      "openingKills": 3502,
      "openingDeaths": 2598,
      "openingDuelAttempts": 6100,
      "openingDuelSuccessRate": 0.5740983606557377,
      "kills": 18399,
      "deaths": 16804
    }
  ],
  "meta": {
    "category": "opening-duels",
    "count": 2,
    "dataAvailable": true,
    "limit": 2,
    "total": 2,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Clutch stats

GET/api/v1/cs2/stats/clutches

Players ranked by clutch wins. Currently being recomputed: returns `data_available: false` with `unavailable_reason: being_recomputed`.

Query parameters

ParameterTypeDescription
limitintegerRows to return. Maximum 200; larger values are reduced to 200.
min_attemptsstringFilter by min_attempts.
min_mapsintegerMinimum maps played to be included.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/stats/clutches" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "playerId": "cs2-player-22481",
      "playerName": "Chucky",
      "teamId": "cs2-team-10503",
      "teamName": "OG",
      "clutchAttempts": 749,
      "clutchesWon": 115,
      "clutchWinPercent": 15.4,
      "wins1v1": 67,
      "wins1v2": 34,
      "wins1v3Plus": 14
    },
    {
      "playerId": "cs2-player-24818",
      "playerName": "k4nfuz",
      "teamId": "cs2-team-14124",
      "teamName": "Lunacy",
      "clutchAttempts": 751,
      "clutchesWon": 113,
      "clutchWinPercent": 15,
      "wins1v1": 72,
      "wins1v2": 28,
      "wins1v3Plus": 13
    }
  ],
  "meta": {
    "category": "clutches",
    "count": 2,
    "dataAvailable": true,
    "minAttempts": 20,
    "limit": 2,
    "total": 2,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Flash assist stats

GET/api/v1/cs2/stats/flash-assists

Players ranked by flash assists.

Query parameters

ParameterTypeDescription
limitintegerRows to return. Maximum 200; larger values are reduced to 200.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/stats/flash-assists" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "playerId": "cs2-player-19065",
      "playerName": "SHiNE",
      "teamId": "cs2-team-12889",
      "teamName": "G2 Ares",
      "flashAssists": 419,
      "maps": 174,
      "flashAssistsPerMap": 2.408
    },
    {
      "playerId": "cs2-player-22481",
      "playerName": "Chucky",
      "teamId": "cs2-team-10503",
      "teamName": "OG",
      "flashAssists": 400,
      "maps": 170,
      "flashAssistsPerMap": 2.3529
    }
  ],
  "meta": {
    "category": "flash-assists",
    "count": 2,
    "dataAvailable": true,
    "dataScope": "flash_assists_from_player_death_assistedflash",
    "limit": 2,
    "total": 2,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Utility stats

GET/api/v1/cs2/stats/utility

Players ranked by grenades thrown, by type. Updated hourly.

Query parameters

ParameterTypeDescription
limitintegerRows to return. Maximum 200; larger values are reduced to 200.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/stats/utility" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "playerId": "cs2-player-21513",
      "playerName": "4X1s",
      "teamId": "cs2-team-13924",
      "teamName": "Black Phoenix",
      "maps": 289,
      "utilityEvents": 14775,
      "flashes": 4134,
      "smokes": 4108,
      "fireGrenades": 3271,
      "heGrenades": 3103,
      "decoys": 159,
      "utilityPerMap": 51.1246,
      "lastSyncedAt": "2026-11-10T13:52:03.473Z"
    },
    {
      "playerId": "cs2-player-25349",
      "playerName": "Salazar_9",
      "teamId": "cs2-team-13924",
      "teamName": "Black Phoenix",
      "maps": 287,
      "utilityEvents": 14753,
      "flashes": 3187,
      "smokes": 4345,
      "fireGrenades": 3908,
      "heGrenades": 3295,
      "decoys": 18,
      "utilityPerMap": 51.4042,
      "lastSyncedAt": "2026-11-10T13:52:03.473Z"
    }
  ],
  "meta": {
    "category": "utility",
    "count": 2,
    "dataAvailable": true,
    "dataScope": "player_utility_throws_by_type",
    "limit": 2,
    "total": 2,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Economy stats

GET/api/v1/cs2/stats/economy

Players ranked by spend, with full-buy, half-buy, force-buy and eco round counts. Updated hourly.

Query parameters

ParameterTypeDescription
limitintegerRows to return. Maximum 200; larger values are reduced to 200.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/stats/economy" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "playerId": "cs2-player-21513",
      "playerName": "4X1s",
      "teamId": "cs2-team-13924",
      "teamName": "Black Phoenix",
      "maps": 302,
      "purchases": 48700,
      "totalSpend": 28405800,
      "avgEquipmentValue": 3934.31,
      "equipmentSnapshots": 6523,
      "fullBuyRounds": 4195,
      "halfBuyRounds": 797,
      "forceBuyRounds": 411,
      "ecoOrPistolRounds": 1120,
      "spendPerMap": 94058.9404,
      "lastSyncedAt": "2026-11-10T13:52:03.473Z"
    },
    {
      "playerId": "cs2-player-22676",
      "playerName": "karnez",
      "teamId": "cs2-team-13924",
      "teamName": "Black Phoenix",
      "maps": 302,
      "purchases": 41090,
      "totalSpend": 27014400,
      "avgEquipmentValue": 4025.86,
      "equipmentSnapshots": 6523,
      "fullBuyRounds": 4472,
      "halfBuyRounds": 537,
      "forceBuyRounds": 440,
      "ecoOrPistolRounds": 1074,
      "spendPerMap": 89451.6556,
      "lastSyncedAt": "2026-11-10T13:52:03.473Z"
    }
  ],
  "meta": {
    "category": "economy",
    "count": 2,
    "dataAvailable": true,
    "dataScope": "player_purchase_and_freeze_end_equipment_summary",
    "limit": 2,
    "total": 2,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Try the CS2 Stats and Leaderboards API

Run a real request with your key, then wire the same call into your app. The free plan includes 500 requests a month.

bash
curl "https://api.citoapi.com/api/v1/cs2/leaderboards/rating?limit=10" \
  -H "x-api-key: YOUR_API_KEY"
Was this page helpful?