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
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
| Parameter | Type | Description |
|---|---|---|
| metric (path)* | string | One of rating, adr, kast, kd, kills, opening-kills. |
| limit | integer | Rows to return. Maximum 200; larger values are reduced to 200. |
| min_maps | integer | Minimum maps played to be included. |
| window_days | integer | Look-back window in days. |
Example
curl "https://api.citoapi.com/api/v1/cs2/leaderboards/rating" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
Players ranked by total kills, one row per player, with maps, K/D, ADR, KAST, rating and opening duels.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| days | integer | Look-back window in days. |
| limit | integer | Rows to return. Maximum 200; larger values are reduced to 200. |
| window_days | integer | Look-back window in days. |
Example
curl "https://api.citoapi.com/api/v1/cs2/stats/players" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
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
| Parameter | Type | Description |
|---|---|---|
| limit | integer | Rows to return. Maximum 200; larger values are reduced to 200. |
| min_maps | integer | Minimum maps played to be included. |
Example
curl "https://api.citoapi.com/api/v1/cs2/stats/teams" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
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
| Parameter | Type | Description |
|---|---|---|
| limit | integer | Rows to return. Maximum 200; larger values are reduced to 200. |
Example
curl "https://api.citoapi.com/api/v1/cs2/stats/maps" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
Kills and headshot rate by weapon across parsed demos, with each weapon's share of all kills.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| limit | integer | Rows to return. Maximum 200; larger values are reduced to 200. |
Example
curl "https://api.citoapi.com/api/v1/cs2/stats/weapons" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
Team pistol round win rates. Currently being recomputed: returns `data_available: false` with `unavailable_reason: being_recomputed`.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| limit | integer | Rows to return. Maximum 200; larger values are reduced to 200. |
| min_maps | integer | Minimum maps played to be included. |
Example
curl "https://api.citoapi.com/api/v1/cs2/stats/pistol-rounds" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
Players ranked by first kills and opening duel win rate.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| limit | integer | Rows to return. Maximum 200; larger values are reduced to 200. |
Example
curl "https://api.citoapi.com/api/v1/cs2/stats/opening-duels" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
Players ranked by clutch wins. Currently being recomputed: returns `data_available: false` with `unavailable_reason: being_recomputed`.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| limit | integer | Rows to return. Maximum 200; larger values are reduced to 200. |
Example
curl "https://api.citoapi.com/api/v1/cs2/stats/clutches" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
Players ranked by flash assists.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| limit | integer | Rows to return. Maximum 200; larger values are reduced to 200. |
Example
curl "https://api.citoapi.com/api/v1/cs2/stats/flash-assists" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
Players ranked by grenades thrown, by type. Updated hourly.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| limit | integer | Rows to return. Maximum 200; larger values are reduced to 200. |
Example
curl "https://api.citoapi.com/api/v1/cs2/stats/utility" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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
Players ranked by spend, with full-buy, half-buy, force-buy and eco round counts. Updated hourly.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| limit | integer | Rows to return. Maximum 200; larger values are reduced to 200. |
Example
curl "https://api.citoapi.com/api/v1/cs2/stats/economy" \
-H "x-api-key: YOUR_API_KEY"Response
{
"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.
curl "https://api.citoapi.com/api/v1/cs2/leaderboards/rating?limit=10" \
-H "x-api-key: YOUR_API_KEY"