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, 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-17384",
      "playerName": "Vexite",
      "teamId": "cs2-team-12774",
      "teamName": "FlyQuest",
      "maps": 29,
      "rating": 1.52,
      "adr": 85.9,
      "kast": 0.859,
      "kills": 438,
      "deaths": 310,
      "openingKills": 46,
      "kd": 1.41,
      "player": {
        "id": "cs2-player-17384",
        "nickname": "Vexite",
        "slug": "vexite",
        "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/042a64a7af4293ee4960693f2c787d70.webp",
        "countryName": "Australia",
        "countryCode": "AU"
      }
    },
    {
      "playerId": "cs2-player-4679",
      "playerName": "jks",
      "teamId": "cs2-team-12774",
      "teamName": "FlyQuest",
      "maps": 28,
      "rating": 1.43,
      "adr": 82.2,
      "kast": 0.771,
      "kills": 412,
      "deaths": 278,
      "openingKills": 38,
      "kd": 1.48,
      "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"
      }
    }
  ],
  "meta": {
    "metric": "rating",
    "count": 2,
    "aggregated": true,
    "windowDays": 90,
    "minMaps": 20,
    "availability": "available",
    "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, one row per player, with maps, K/D, ADR, KAST, rating and opening duels.

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-21708",
      "playerName": "npl",
      "teamId": "cs2-team-11241",
      "teamName": "B8",
      "maps": 338,
      "kills": 5379,
      "deaths": 5132,
      "assists": 677,
      "kdRatio": 1.0481,
      "adr": 79.07878472222222,
      "kast": 0.7236527777777778,
      "rating": 1.0897278106508876,
      "openingKills": 342,
      "openingDeaths": 317,
      "openingDuelSuccessRate": 0.519,
      "rating3Profile": {
        "rating3": null,
        "rating3Available": false,
        "subratings": {
          "kills": 15.914,
          "damage": 79.07878472222222,
          "survival": 1.18,
          "kast": 0.7236527777777778,
          "multiKills": null,
          "roundSwing": null
        },
        "openingDuels": {
          "openingKills": 342,
          "openingDeaths": 317,
          "successRate": 0.519
        },
        "unavailableSubratings": [
          "multi_kills",
          "round_swing"
        ],
        "rating2": 1.0897278106508876
      },
      "source": "match_stats"
    },
    {
      "playerId": "cs2-player-16948",
      "playerName": "TRAVIS",
      "teamId": "cs2-team-13214",
      "teamName": "SPARTA",
      "maps": 357,
      "kills": 5356,
      "deaths": 5035,
      "assists": 1056,
      "kdRatio": 1.0638,
      "adr": 76.59497975708501,
      "kast": 0.741314979757085,
      "rating": 1.0780169014084506,
      "openingKills": 432,
      "openingDeaths": 456,
      "openingDuelSuccessRate": 0.4865,
      "rating3Profile": {
        "rating3": null,
        "rating3Available": false,
        "subratings": {
          "kills": 15.003,
          "damage": 76.59497975708501,
          "survival": 1.2735,
          "kast": 0.741314979757085,
          "multiKills": null,
          "roundSwing": null
        },
        "openingDuels": {
          "openingKills": 432,
          "openingDeaths": 456,
          "successRate": 0.4865
        },
        "unavailableSubratings": [
          "multi_kills",
          "round_swing"
        ],
        "rating2": 1.0780169014084506
      },
      "source": "match_stats"
    }
  ],
  "meta": {
    "category": "players",
    "count": 2,
    "source": "match_stats",
    "dataAvailable": true,
    "limit": 2,
    "total": 2,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "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.

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/teams" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "teamId": "cs2-team-13027",
      "teamName": "Nuclear TigeRES",
      "matches": 166,
      "matchWins": 107,
      "matchWinPercent": 0.6446,
      "maps": 381,
      "mapWins": 198,
      "mapLosses": 183,
      "mapWinPercent": 0.5197,
      "roundsFor": 4238,
      "roundsAgainst": 4053,
      "roundWinPercent": 0.5112
    },
    {
      "teamId": "cs2-team-12895",
      "teamName": "K27",
      "matches": 145,
      "matchWins": 94,
      "matchWinPercent": 0.6483,
      "maps": 336,
      "mapWins": 192,
      "mapLosses": 144,
      "mapWinPercent": 0.5714,
      "roundsFor": 3796,
      "roundsAgainst": 3473,
      "roundWinPercent": 0.5222
    }
  ],
  "meta": {
    "category": "teams",
    "count": 2,
    "windowDays": 365,
    "minMaps": 10,
    "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": 3623,
      "share": 0.1955
    },
    {
      "mapName": "Mirage",
      "mapsPlayed": 3219,
      "share": 0.1737
    }
  ],
  "meta": {
    "category": "maps",
    "count": 2,
    "windowDays": 365,
    "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 parsed demos, 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": 43201,
      "headshots": 25978,
      "headshotPercent": 0.6013,
      "killShare": 0.3448,
      "maps": 856
    },
    {
      "weapon": "M4A1-S",
      "kills": 17551,
      "headshots": 7324,
      "headshotPercent": 0.4173,
      "killShare": 0.1401,
      "maps": 851
    }
  ],
  "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": [],
  "meta": {
    "category": "pistol-rounds",
    "count": 0,
    "dataAvailable": false,
    "unavailableReason": "being_recomputed",
    "message": "Side and buy-type round win rates are being recomputed and are not available yet.",
    "limit": 0,
    "total": 0,
    "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-22676",
      "playerName": "karnez",
      "teamId": "cs2-team-13924",
      "teamName": "Black Phoenix",
      "maps": 239,
      "openingKills": 693,
      "openingDeaths": 664,
      "openingDuelAttempts": 1357,
      "openingDuelSuccessRate": 0.5106853352984525,
      "kills": 3975,
      "deaths": 3806
    },
    {
      "playerId": "cs2-player-21369",
      "playerName": "1NVISIBLEE",
      "teamId": "cs2-team-12609",
      "teamName": "Lavked",
      "maps": 197,
      "openingKills": 688,
      "openingDeaths": 771,
      "openingDuelAttempts": 1459,
      "openingDuelSuccessRate": 0.4715558601782042,
      "kills": 3118,
      "deaths": 3421
    }
  ],
  "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.

Example

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

Response

json
{
  "success": true,
  "data": [],
  "meta": {
    "category": "clutches",
    "count": 0,
    "dataAvailable": false,
    "unavailableReason": "being_recomputed",
    "message": "Clutch statistics are being recomputed and are not available yet.",
    "limit": 0,
    "total": 0,
    "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-22481",
      "playerName": "Chucky",
      "teamId": "cs2-team-11609",
      "teamName": "GenOne",
      "flashAssists": 221,
      "maps": 89,
      "flashAssistsPerMap": 2.4831
    },
    {
      "playerId": "cs2-player-23598",
      "playerName": "noni",
      "teamId": "cs2-team-12194",
      "teamName": "Rune Eaters",
      "flashAssists": 142,
      "maps": 63,
      "flashAssistsPerMap": 2.254
    }
  ],
  "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-21263",
      "playerName": "olimp",
      "teamId": "cs2-team-13808",
      "teamName": "Walczaki",
      "maps": 112,
      "utilityEvents": 7567,
      "flashes": 2132,
      "smokes": 2509,
      "fireGrenades": 1710,
      "heGrenades": 1209,
      "decoys": 7,
      "utilityPerMap": 67.5625,
      "lastSyncedAt": "2026-08-01T12:47:53.691Z"
    },
    {
      "playerId": "cs2-player-19738",
      "playerName": "djokooo",
      "teamId": "cs2-team-11609",
      "teamName": "GenOne",
      "maps": 159,
      "utilityEvents": 7297,
      "flashes": 2413,
      "smokes": 1757,
      "fireGrenades": 1764,
      "heGrenades": 1357,
      "decoys": 6,
      "utilityPerMap": 45.8931,
      "lastSyncedAt": "2026-08-01T14:37:51.857Z"
    }
  ],
  "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-21971",
      "playerName": "brooxsy",
      "teamId": "cs2-team-11609",
      "teamName": "GenOne",
      "maps": 179,
      "purchases": 26551,
      "totalSpend": 16058200,
      "avgEquipmentValue": 3887.96,
      "equipmentSnapshots": 3833,
      "fullBuyRounds": 2481,
      "halfBuyRounds": 423,
      "forceBuyRounds": 241,
      "ecoOrPistolRounds": 688,
      "spendPerMap": 89710.6145,
      "lastSyncedAt": "2026-08-01T14:37:51.857Z"
    },
    {
      "playerId": "cs2-player-24818",
      "playerName": "k4nfuz-",
      "teamId": "cs2-team-13214",
      "teamName": "SPARTA",
      "maps": 177,
      "purchases": 25567,
      "totalSpend": 15764050,
      "avgEquipmentValue": 3857.99,
      "equipmentSnapshots": 3825,
      "fullBuyRounds": 2413,
      "halfBuyRounds": 405,
      "forceBuyRounds": 300,
      "ecoOrPistolRounds": 707,
      "spendPerMap": 89062.4294,
      "lastSyncedAt": "2026-08-01T23:08:53.397Z"
    }
  ],
  "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"