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
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": 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
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
| 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-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
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
| 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. |
| q | string | Same as search. |
| search | string | Only teams whose name or slug contains this text, or this team id. Alias q. |
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": 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
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": 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
Kills and headshot rate by weapon across recorded matches, 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": 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
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-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
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": 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
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-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
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-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
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": 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.
curl "https://api.citoapi.com/api/v1/cs2/leaderboards/rating?limit=10" \
-H "x-api-key: YOUR_API_KEY"