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, 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-11893",
"playerName": "ZywOo",
"teamId": "cs2-team-9565",
"teamName": "Vitality",
"maps": 53,
"rating": 1.29,
"adr": 92.6,
"kast": 0.788,
"kills": 918,
"deaths": 599,
"openingKills": 128,
"kd": 1.53,
"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"
}
},
{
"playerId": "cs2-player-21211",
"playerName": "adeX",
"teamId": "cs2-team-9958",
"teamName": "Alter Ego",
"maps": 40,
"rating": 1.25,
"adr": 93.2,
"kast": 0.746,
"kills": 784,
"deaths": 534,
"openingKills": 102,
"kd": 1.47,
"player": {
"id": "cs2-player-21211",
"nickname": "adeX",
"slug": "adex",
"imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/e24bf29a60fffb9e0b6ea9992bf6dd18.webp",
"countryName": "Romania",
"countryCode": "RO"
}
}
],
"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-13776",
"playerName": "Jame",
"teamId": "cs2-team-12467",
"teamName": "PARIVISION",
"maps": 860,
"kills": 13479,
"deaths": 10489,
"assists": 4088,
"kdRatio": 1.2851,
"adr": 70.62405275779376,
"kast": 0.7506424460431654,
"rating": 1.1304418604651163,
"openingKills": 2167,
"openingDeaths": 1110,
"openingDuelSuccessRate": 0.6613,
"ratingProfile": {
"rating": 1.1304418604651163,
"ratingVersion": "cito_rating_1",
"components": {
"killsPerMap": 15.673,
"adr": 70.62405275779376,
"kast": 0.7506424460431654,
"killsPlusAssistsPerDeath": 1.6748
},
"openingDuels": {
"openingKills": 2167,
"openingDeaths": 1110,
"successRate": 0.6613
},
"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-…"
},
"source": "match_stats"
},
{
"playerId": "cs2-player-19673",
"playerName": "Patsi",
"teamId": "cs2-team-5378",
"teamName": "Virtus.pro",
"maps": 825,
"kills": 12667,
"deaths": 13106,
"assists": 4509,
"kdRatio": 0.9665,
"adr": 78.2783762886598,
"kast": 0.718086469072165,
"rating": 1.0111515151515151,
"openingKills": 1394,
"openingDeaths": 1523,
"openingDuelSuccessRate": 0.4779,
"ratingProfile": {
"rating": 1.0111515151515151,
"ratingVersion": "cito_rating_1",
"components": {
"killsPerMap": 15.354,
"adr": 78.2783762886598,
"kast": 0.718086469072165,
"killsPlusAssistsPerDeath": 1.3105
},
"openingDuels": {
"openingKills": 1394,
"openingDeaths": 1523,
"successRate": 0.4779
},
"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-…"
},
"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": 178,
"matchWins": 117,
"matchWinPercent": 0.6573,
"maps": 404,
"mapWins": 247,
"mapLosses": 157,
"mapWinPercent": 0.6114,
"roundsFor": 4653,
"roundsAgainst": 4121,
"roundWinPercent": 0.5303
},
{
"teamId": "cs2-team-12895",
"teamName": "K27",
"matches": 156,
"matchWins": 102,
"matchWinPercent": 0.6538,
"maps": 364,
"mapWins": 218,
"mapLosses": 146,
"mapWinPercent": 0.5989,
"roundsFor": 4200,
"roundsAgainst": 3681,
"roundWinPercent": 0.5329
}
],
"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": 4572,
"share": 0.1926
},
{
"mapName": "Mirage",
"mapsPlayed": 4106,
"share": 0.173
}
],
"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": 584676,
"headshots": 352150,
"headshotPercent": 0.6023,
"killShare": 0.3409,
"maps": 11762
},
{
"weapon": "M4A1-S",
"kills": 253394,
"headshots": 105745,
"headshotPercent": 0.4173,
"killShare": 0.1477,
"maps": 11727
}
],
"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": [
{
"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
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-13915",
"playerName": "YEKINDAR",
"teamId": "cs2-team-8297",
"teamName": "FURIA",
"maps": 664,
"openingKills": 2354,
"openingDeaths": 2359,
"openingDuelAttempts": 4713,
"openingDuelSuccessRate": 0.499469552302143,
"kills": 10311,
"deaths": 10314
},
{
"playerId": "cs2-player-13776",
"playerName": "Jame",
"teamId": "cs2-team-12467",
"teamName": "PARIVISION",
"maps": 857,
"openingKills": 2167,
"openingDeaths": 1110,
"openingDuelAttempts": 3277,
"openingDuelSuccessRate": 0.6612755569118096,
"kills": 13423,
"deaths": 10448
}
],
"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. |
| min_attempts | string | Filter by min_attempts. |
| min_maps | integer | Minimum maps played to be included. |
Example
curl "https://api.citoapi.com/api/v1/cs2/stats/clutches" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": [
{
"playerId": "cs2-player-22481",
"playerName": "Chucky",
"teamId": "cs2-team-10503",
"teamName": "OG",
"clutchAttempts": 687,
"clutchesWon": 108,
"clutchWinPercent": 15.7,
"wins1v1": 62,
"wins1v2": 32,
"wins1v3Plus": 14
},
{
"playerId": "cs2-player-24818",
"playerName": "k4nfuz",
"teamId": "cs2-team-12609",
"teamName": "Lavked",
"clutchAttempts": 641,
"clutchesWon": 105,
"clutchWinPercent": 16.4,
"wins1v1": 67,
"wins1v2": 26,
"wins1v3Plus": 12
}
],
"meta": {
"category": "clutches",
"count": 2,
"dataAvailable": true,
"minAttempts": 20,
"source": "demo_round_timeline",
"limit": 2,
"total": 2,
"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": 361,
"maps": 153,
"flashAssistsPerMap": 2.3595
},
{
"playerId": "cs2-player-19065",
"playerName": "SHiNE",
"teamId": "cs2-team-12889",
"teamName": "G2 Ares",
"flashAssists": 329,
"maps": 133,
"flashAssistsPerMap": 2.4737
}
],
"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-22883",
"playerName": "k1slll",
"teamId": "cs2-team-13814",
"teamName": "INOX Division",
"maps": 184,
"utilityEvents": 11818,
"flashes": 3201,
"smokes": 3273,
"fireGrenades": 2523,
"heGrenades": 2799,
"decoys": 22,
"utilityPerMap": 64.2283,
"lastSyncedAt": "2026-10-26T13:50:10.805Z"
},
{
"playerId": "cs2-player-21513",
"playerName": "4X1s",
"teamId": "cs2-team-13924",
"teamName": "Black Phoenix",
"maps": 230,
"utilityEvents": 11809,
"flashes": 3371,
"smokes": 3274,
"fireGrenades": 2569,
"heGrenades": 2466,
"decoys": 129,
"utilityPerMap": 51.3435,
"lastSyncedAt": "2026-10-25T18:02:58.957Z"
}
],
"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-21513",
"playerName": "4X1s",
"teamId": "cs2-team-13924",
"teamName": "Black Phoenix",
"maps": 244,
"purchases": 39046,
"totalSpend": 22700350,
"avgEquipmentValue": 3903.09,
"equipmentSnapshots": 5263,
"fullBuyRounds": 3350,
"halfBuyRounds": 641,
"forceBuyRounds": 348,
"ecoOrPistolRounds": 924,
"spendPerMap": 93034.2213,
"lastSyncedAt": "2026-10-25T18:02:58.957Z"
},
{
"playerId": "cs2-player-24818",
"playerName": "k4nfuz-",
"teamId": "cs2-team-12609",
"teamName": "Lavked",
"maps": 251,
"purchases": 35887,
"totalSpend": 22188000,
"avgEquipmentValue": 3915.14,
"equipmentSnapshots": 5441,
"fullBuyRounds": 3492,
"halfBuyRounds": 580,
"forceBuyRounds": 404,
"ecoOrPistolRounds": 965,
"spendPerMap": 88398.4064,
"lastSyncedAt": "2026-10-25T14:28:17.480Z"
}
],
"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"