CS2 Player Stats API
Player profiles by id or slug ("donk", "zywoo"): headline stats, career and seasons, map and weapon splits, clutches and flash assists, form and team history.
17 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, Events, Stats & leaderboards, Skins, Transfers, Search & reference.
Search players
Find players by nickname or real name. Requires `q`. Player photos: `imageUrl` on a player (`playerImageUrl` on roster and transfer rows) is always an image URL. A player with no photo gets a neutral silhouette placeholder (400x417 transparent WebP, the same size as the photos) and `imageIsPlaceholder: true` (`playerImageIsPlaceholder` on roster and transfer rows); a real photo has `false`. Check the flag, not the URL.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| q* | string | Search text. |
Example
curl "https://api.citoapi.com/api/v1/cs2/players/search" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": [
{
"entityType": "cs2_player",
"id": "cs2-player-11893",
"nickname": "ZywOo",
"slug": "zywoo",
"realName": "Mathieu Herbaut",
"imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/9a20575a48df13463513233c6314f72c.webp",
"countryName": "France",
"countryCode": "FR",
"age": 25,
"rating": 1.24,
"mapsPlayed": 167,
"careerStats": {
"rating": 1.24,
"lastKnownRating": 1.24
},
"currentTeamId": "cs2-team-9565",
"status": "active",
"primaryRole": "AWPer",
"roleConfidence": "high",
"statusUpdatedAt": "2026-11-11T12:51:13.764Z",
"lastSyncedAt": "2026-11-11T12:51:12.962Z",
"lastVerified": "2026-11-11T12:51:12.962Z",
"availableSubresources": [
"stats",
"matches"
],
"unavailableSubresources": [
"teams",
"weapons"
],
"unavailableFields": {},
"dataQuality": "complete",
"confidence": "high",
"…": "2 more fields"
}
],
"meta": {
"query": "zywoo",
"count": 1,
"dataAvailable": true,
"unavailableReason": null,
"limit": 1,
"total": 1,
"page": 1,
"totalPages": 1,
"hasNext": false,
"hasPrev": false
}
}Player career
A player's career totals and team history (`byTeam[]`), each with `firstMapAt` / `lastMapAt`, `consistencyScore` and `volatilityScore`; `computedAt` is the rollup refresh time. 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 |
|---|---|---|
| playerIdOrSlug (path)* | string | Player id (cs2-player-11893) or slug (zywoo). |
| include | string | Filter by include. |
| includeDemo | string | Filter by includeDemo. |
| include_demo | string | Filter by include_demo. |
| limit | integer | Rows to return. Maximum 100; larger values are reduced to 100. |
Example
curl "https://api.citoapi.com/api/v1/cs2/players/donk/career" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": {
"entityType": "cs2_player_career_stats",
"playerId": "cs2-player-11893",
"playerNickname": "ZywOo",
"dataAvailable": true,
"totals": {
"matches": 282,
"maps": 654,
"kills": 12331,
"deaths": 8477,
"assists": 3130,
"kdRatio": 1.4546,
"adr": 87.77,
"kast": 0.7793,
"rating": 1.2393,
"openingKills": 2019,
"openingDeaths": 1172,
"assistsCoverage": 0.939,
"openingDuelCoverage": 0.998,
"assistsRecorded": 3130,
"openingKillsRecorded": 2019,
"openingDeathsRecorded": 1172,
"openingDuelMaps": 653,
"headshotPercent": 0.4272,
"computedAt": "2026-11-11T12:52:00.600Z",
"clutchAttempts": null,
"clutchWins": null,
"clutchWinPercent": null,
"flashAssists": null,
"utilityDamage": null
},
"clutches": null,
"flashAssists": null,
"utilityDamage": null,
"byTeam": [
{
"statKey": "team:cs2-player-11893:cs2-team-9565",
"playerId": "cs2-player-11893",
"playerName": "ZywOo",
"teamId": "cs2-team-9565",
"teamName": "Vitality",
"periodType": "career",
"periodStart": "2018-11-18T23:10:00.000Z",
"periodEnd": "2026-11-11T04:15:00.000Z",
"eventId": null,
"eventName": null,
"matches": 281,
"maps": 653,
"kills": 12314,
"deaths": 8458,
"assists": 3124,
"kdRatio": 1.4559,
"adr": 87.77,
"kast": 0.7794,
"rating": 1.2397,
"openingKills": 2018,
"openingDeaths": 1171,
"consistencyScore": 0.7446,
"volatilityScore": 0.2554,
"opponentDifficulty": null,
"…": "10 more fields"
},
{
"statKey": "team:cs2-player-11893:cs2-team-4608",
"playerId": "cs2-player-11893",
"playerName": "ZywOo",
"teamId": "cs2-team-4608",
"teamName": "Natus Vincere",
"periodType": "career",
"periodStart": "2023-07-08T17:20:00.000Z",
"periodEnd": "2023-07-08T17:20:00.000Z",
"eventId": null,
"eventName": null,
"matches": 1,
"maps": 1,
"kills": 17,
"deaths": 19,
"assists": 6,
"kdRatio": 0.8947,
"adr": 84.2,
"kast": 0.708,
"rating": 0.97,
"openingKills": 1,
"openingDeaths": 1,
"consistencyScore": null,
"volatilityScore": null,
"opponentDifficulty": null,
"…": "10 more fields"
}
]
},
"meta": {
"count": 2,
"total": 2,
"limit": 2,
"page": 1,
"dataAvailable": true,
"totalPages": 1,
"hasNext": false,
"hasPrev": false
}
}Player seasons
A player's stats by year. 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 |
|---|---|---|
| playerIdOrSlug (path)* | string | Player id (cs2-player-11893) or slug (zywoo). |
| limit | integer | Rows to return. Maximum 200; larger values are reduced to 200. |
Example
curl "https://api.citoapi.com/api/v1/cs2/players/donk/seasons" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": {
"entityType": "cs2_player_season_stats",
"playerId": "cs2-player-11893",
"playerNickname": "ZywOo",
"dataAvailable": true,
"seasons": [
{
"statKey": "year:cs2-player-11893:2026",
"playerId": "cs2-player-11893",
"playerName": "ZywOo",
"teamId": "cs2-team-9565",
"teamName": "Vitality",
"seasonYear": 2026,
"periodStart": "2026-01-14T19:15:00.000Z",
"periodEnd": "2026-11-11T04:15:00.000Z",
"matches": 68,
"maps": 165,
"kills": 2980,
"deaths": 1939,
"assists": 833,
"kdRatio": 1.5369,
"adr": 89.85,
"kast": 0.7822,
"rating": 1.2713,
"openingKills": 477,
"openingDeaths": 260,
"consistencyScore": 0.7287,
"volatilityScore": 0.2713,
"computedAt": "2026-11-11T12:52:00.600Z",
"assistsRecorded": 833,
"assistsCoverage": 1,
"…": "5 more fields"
},
{
"statKey": "year:cs2-player-11893:2025",
"playerId": "cs2-player-11893",
"playerName": "ZywOo",
"teamId": "cs2-team-9565",
"teamName": "Vitality",
"seasonYear": 2025,
"periodStart": "2025-01-15T18:40:00.000Z",
"periodEnd": "2025-12-14T17:00:00.000Z",
"matches": 82,
"maps": 200,
"kills": 3593,
"deaths": 2535,
"assists": 1075,
"kdRatio": 1.4174,
"adr": 88,
"kast": 0.7812,
"rating": 1.2338,
"openingKills": 587,
"openingDeaths": 337,
"consistencyScore": 0.7372,
"volatilityScore": 0.2628,
"computedAt": "2026-11-11T12:52:00.600Z",
"assistsRecorded": 1075,
"assistsCoverage": 0.98,
"…": "5 more fields"
}
]
},
"meta": {
"count": 2,
"total": 8,
"limit": 2,
"page": 1,
"dataAvailable": true,
"totalPages": 4,
"hasNext": true,
"hasPrev": false
}
}Player periods
A player's stats per team and over rolling periods (e.g. last 3 months). Career rows equal `/career` `byTeam[]` and come first (most maps first), then every other period newest first; `meta.total` counts all rows. 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 |
|---|---|---|
| playerIdOrSlug (path)* | string | Player id (cs2-player-11893) or slug (zywoo). |
| limit | integer | Rows to return. Maximum 200; larger values are reduced to 200. |
| period_type | string | Filter by period_type. |
Example
curl "https://api.citoapi.com/api/v1/cs2/players/donk/periods" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": {
"entityType": "cs2_player_period_stats",
"playerId": "cs2-player-11893",
"playerNickname": "ZywOo",
"periodTypeFilter": null,
"periods": [
{
"statKey": "career:source-player-11893:source-team-9565:vitality",
"playerId": "cs2-player-11893",
"playerName": "ZywOo",
"teamId": "cs2-team-9565",
"teamName": "Vitality",
"periodType": "career",
"periodStart": "2018-11-18T23:10:00.000Z",
"periodEnd": "2026-11-11T04:15:00.000Z",
"eventId": null,
"eventName": null,
"matches": 281,
"maps": 653,
"kills": 12314,
"deaths": 8458,
"assists": 3124,
"kdRatio": 1.4559,
"adr": 87.77,
"kast": 0.7794,
"rating": 1.2397,
"openingKills": 2018,
"openingDeaths": 1171,
"consistencyScore": 0.7446,
"volatilityScore": 0.2554,
"opponentDifficulty": null,
"…": "10 more fields"
},
{
"statKey": "career:source-player-11893:source-team-4608:natus_vincere",
"playerId": "cs2-player-11893",
"playerName": "ZywOo",
"teamId": "cs2-team-4608",
"teamName": "Natus Vincere",
"periodType": "career",
"periodStart": "2023-07-08T17:20:00.000Z",
"periodEnd": "2023-07-08T17:20:00.000Z",
"eventId": null,
"eventName": null,
"matches": 1,
"maps": 1,
"kills": 17,
"deaths": 19,
"assists": 6,
"kdRatio": 0.8947,
"adr": 84.2,
"kast": 0.708,
"rating": 0.97,
"openingKills": 1,
"openingDeaths": 1,
"consistencyScore": null,
"volatilityScore": null,
"opponentDifficulty": null,
"…": "10 more fields"
}
],
"dataAvailable": true
},
"meta": {
"count": 2,
"total": 84,
"limit": 2,
"page": 1,
"dataAvailable": true,
"totalPages": 42,
"hasNext": true,
"hasPrev": false
}
}Player tournaments
Events a player has played, with placement and stats. These routes are equivalent; use whichever reads best.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| playerIdOrSlug (path)* | string | Player id (cs2-player-11893) or slug (zywoo). |
| limit | integer | Rows to return. Maximum 200; larger values are reduced to 200. |
Example
curl "https://api.citoapi.com/api/v1/cs2/players/donk/tournaments" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": {
"entityType": "cs2_player_tournaments",
"playerId": "cs2-player-11893",
"playerNickname": "ZywOo",
"tournaments": [
{
"eventId": "cs2-event-8251",
"eventName": "BLAST Rivals 2026 Season 2",
"eventSlug": "blast-rivals-2026-season-2",
"eventTier": "A",
"startsAt": "2026-11-11T00:00:00.000Z",
"endsAt": "2026-11-15T23:59:59.000Z",
"logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/ffad5ce2b72e370f6ed5c30a6ddf41cc.webp",
"teamId": "cs2-team-9565",
"teamName": "Vitality",
"matches": 1,
"maps": 2,
"kills": 36,
"deaths": 27,
"assists": 8,
"kdRatio": 1.333,
"adr": 75.7,
"kast": 0.76,
"rating": 1.135,
"openingKills": 8,
"openingDeaths": 3,
"logoIsPlaceholder": false
},
{
"eventId": "cs2-event-8050",
"eventName": "PGL Masters Bucharest 2026",
"eventSlug": "pgl-masters-bucharest-2026",
"eventTier": "A",
"startsAt": "2026-10-24T00:00:00.000Z",
"endsAt": "2026-10-31T23:59:59.000Z",
"logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/3d243df9e55b3252320526320ebfa51e.webp",
"teamId": "cs2-team-9565",
"teamName": "Vitality",
"matches": 7,
"maps": 16,
"kills": 257,
"deaths": 209,
"assists": 100,
"kdRatio": 1.23,
"adr": 86.18,
"kast": 0.73,
"rating": 1.159,
"openingKills": 61,
"openingDeaths": 24,
"logoIsPlaceholder": false
}
],
"dataAvailable": true
},
"meta": {
"count": 2,
"dataAvailable": true,
"limit": 2,
"total": 2,
"page": 1,
"totalPages": 1,
"hasNext": false,
"hasPrev": false
}
}Player trends
A player's rating and form over time.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| playerIdOrSlug (path)* | string | Player id (cs2-player-11893) or slug (zywoo). |
| maps | string | Filter by maps. |
Example
curl "https://api.citoapi.com/api/v1/cs2/players/donk/trends" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": {
"entityType": "cs2_player_performance_trends",
"playerId": "cs2-player-11893",
"playerNickname": "ZywOo",
"dataAvailable": true,
"trends": [
{
"trendKey": "last_30_days:source-player-11893",
"playerId": "cs2-player-11893",
"playerName": "ZywOo",
"windowType": "last_30_days",
"periodStart": "2026-10-12T12:57:28.218Z",
"periodEnd": "2026-11-11T12:57:28.218Z",
"matches": 8,
"maps": 18,
"kills": 293,
"deaths": 236,
"assists": 108,
"kdRatio": 1.2415,
"adr": 85.02,
"kast": 0.7365,
"rating": 1.1567,
"consistencyScore": 0.7437,
"volatilityScore": 0.2563,
"computedAt": "2026-11-11T12:57:28.239Z"
},
{
"trendKey": "last_90_days:source-player-11893",
"playerId": "cs2-player-11893",
"playerName": "ZywOo",
"windowType": "last_90_days",
"periodStart": "2026-08-13T12:57:28.218Z",
"periodEnd": "2026-11-11T12:57:28.218Z",
"matches": 26,
"maps": 63,
"kills": 1067,
"deaths": 740,
"assists": 346,
"kdRatio": 1.4419,
"adr": 88.47,
"kast": 0.7713,
"rating": 1.2438,
"consistencyScore": 0.7197,
"volatilityScore": 0.2803,
"computedAt": "2026-11-11T12:57:28.239Z"
}
],
"recentMaps": [
{
"matchId": "cs2-match-2399852",
"mapId": "cs2-match-2399852-map-1",
"mapName": "Anubis",
"startsAt": "2026-11-11T04:15:00.000Z",
"eventName": "BLAST Rivals 2026 Season 2",
"teamId": "cs2-team-9565",
"teamName": "Vitality",
"opponentName": "Falcons",
"kills": 16,
"deaths": 17,
"assists": 2,
"adr": 61.7,
"kast": 0.739,
"rating": 0.9
},
{
"matchId": "cs2-match-2399852",
"mapId": "cs2-match-2399852-map-2",
"mapName": "Dust2",
"startsAt": "2026-11-11T04:15:00.000Z",
"eventName": "BLAST Rivals 2026 Season 2",
"teamId": "cs2-team-9565",
"teamName": "Vitality",
"opponentName": "Falcons",
"kills": 20,
"deaths": 10,
"assists": 6,
"adr": 89.7,
"kast": 0.783,
"rating": 1.37
}
]
},
"meta": {
"periods": 4,
"recentMaps": 20,
"dataAvailable": true
}
}Player transfers
A player's moves between teams. Player photos: `imageUrl` on a player (`playerImageUrl` on roster and transfer rows) is always an image URL. A player with no photo gets a neutral silhouette placeholder (400x417 transparent WebP, the same size as the photos) and `imageIsPlaceholder: true` (`playerImageIsPlaceholder` on roster and transfer rows); a real photo has `false`. Check the flag, not the URL.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| playerIdOrSlug (path)* | string | Player id (cs2-player-11893) or slug (zywoo). |
| limit | integer | Rows to return. Maximum 200; larger values are reduced to 200. |
Example
curl "https://api.citoapi.com/api/v1/cs2/players/donk/transfers" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": {
"entityType": "cs2_player_transfers",
"playerId": "cs2-player-11893",
"playerNickname": "ZywOo",
"dataAvailable": true,
"currentTeamId": "cs2-team-9565",
"currentTeamName": "Vitality",
"status": "active",
"transferHistory": [
{
"transferKey": "profile-history:2018-10-01:source-player-11893:source-team-5639:source-team-9565:joined",
"playerId": "cs2-player-11893",
"playerName": "ZywOo",
"playerImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/9a20575a48df13463513233c6314f72c.webp",
"fromTeamId": "cs2-team-5639",
"fromTeamName": "aAa",
"fromTeamLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/686cbe0c559e95cae6a091ffc4a7f524.svg",
"fromTeamAlternateLogoUrl": null,
"fromTeamDarkUiLogoUrl": null,
"fromTeamIsNoTeam": false,
"toTeamId": "cs2-team-9565",
"toTeamName": "Vitality",
"toTeamLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp",
"toTeamAlternateLogoUrl": null,
"toTeamDarkUiLogoUrl": null,
"toTeamIsNoTeam": false,
"status": "joined",
"role": null,
"transferDate": "2018-10-01T12:00:00.000Z",
"joinDate": "2018-10-01T12:00:00.000Z",
"leaveDate": null,
"detectedAt": "2026-07-10T00:53:55.880Z",
"playerImageIsPlaceholder": false,
"fromTeamLogoIsPlaceholder": false,
"…": "1 more fields"
},
{
"transferKey": "profile-history:2017-09-01:source-player-11893:source-team-7649:source-team-5639:joined",
"playerId": "cs2-player-11893",
"playerName": "ZywOo",
"playerImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/9a20575a48df13463513233c6314f72c.webp",
"fromTeamId": "cs2-team-7649",
"fromTeamName": "WySix",
"fromTeamLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/9a3798b5b0651fe2e6df965cb7b1279c.webp",
"fromTeamAlternateLogoUrl": null,
"fromTeamDarkUiLogoUrl": null,
"fromTeamIsNoTeam": false,
"toTeamId": "cs2-team-5639",
"toTeamName": "aAa",
"toTeamLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/686cbe0c559e95cae6a091ffc4a7f524.svg",
"toTeamAlternateLogoUrl": null,
"toTeamDarkUiLogoUrl": null,
"toTeamIsNoTeam": false,
"status": "joined",
"role": null,
"transferDate": "2017-09-01T12:00:00.000Z",
"joinDate": "2017-09-01T12:00:00.000Z",
"leaveDate": null,
"detectedAt": "2026-07-10T00:53:55.731Z",
"playerImageIsPlaceholder": false,
"fromTeamLogoIsPlaceholder": false,
"…": "1 more fields"
}
],
"rosterChanges": [
{
"changeId": "aa7153d5-3696-4ef8-b651-c72472888bd1",
"changeType": "join",
"teamId": "cs2-team-9565",
"fromTeamId": null,
"toTeamId": "cs2-team-9565",
"teamName": "Vitality",
"playerId": "cs2-player-11893",
"playerName": "ZywOo",
"roleBefore": null,
"roleAfter": null,
"effectiveAt": "2018-10-01T12:00:00.000Z",
"detectedAt": "2018-10-01T12:00:00.000Z",
"confidence": "medium"
},
{
"changeId": "62fcb4e5-94b9-4d76-8396-a11b804d88e6",
"changeType": "leave",
"teamId": "cs2-team-5639"
…Player stats
A player's aggregate stats (`totals`: rating, ADR, KAST, K/D and more, over the whole career, see `totalsScope`) plus one page of map lines (`rows`, newest first: `startsAt` desc, `mapNumber` desc). Page with `page` or `offset` + `limit` (default and max 100); `meta` has `total`, `totalPages`, `hasNext`, `hasPrev`, `rowsScope` describes the page and `pageTotals` sums its rows. `totals.headshotPercent` is total headshots / kills (the old mean of per-map shares is `headshotPercentMapAverage`); `totals.matches`, `openingKills` / `openingDeaths` (90% rule) and the `*Recorded` sums are included. 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 |
|---|---|---|
| playerIdOrSlug (path)* | string | Player id (cs2-player-11893) or slug (zywoo). |
| limit | integer | Map lines per page (default 100, max 100). Maximum 100; larger values are reduced to 100. |
| offset | integer | Map lines to skip. |
| page | integer | Page of map lines, starting at 1. |
Example
curl "https://api.citoapi.com/api/v1/cs2/players/donk/stats" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": {
"entityType": "cs2_player_stats",
"playerId": "cs2-player-11893",
"maps": 654,
"totals": {
"kills": 12331,
"deaths": 8477,
"assists": 3130,
"headshots": 5265,
"headshotsCoverage": 0.998,
"assistsCoverage": 0.939,
"headshotPercent": 0.4272,
"matches": 282,
"assistsRecorded": 3130,
"headshotsRecorded": 5265,
"headshotPercentMapAverage": 0.4317,
"openingKills": 2019,
"openingDeaths": 1172,
"openingKillsRecorded": 2019,
"openingDeathsRecorded": 1172,
"openingDuelCoverage": 0.998
},
"totalsScope": {
"window": "career",
"description": "Every canonical map line of this player: all teams, all time. The same totals as /career and /stats/players.",
"maps": 654,
"matches": 282,
"firstMapAt": "2018-11-18T23:10:00.000Z",
"lastMapAt": "2026-11-11T04:15:00.000Z",
"asOf": "2026-11-11T12:52:00.600Z"
},
"rowsScope": {
"window": "page",
"description": "One page of the lines the totals sum, newest first. Walk page=1..n (or offset) to reach every line; the pages add up …",
"order": "newest_first",
"sort": [
"starts_at desc",
"map_number desc"
],
"offset": 0,
"limit": 2,
"returned": 2,
"total": 654,
"hasMore": true
},
"pageTotals": {
"maps": 2,
"kills": 36,
"deaths": 27,
"assists": 8,
"headshots": 13
},
"clutches": {
"dataAvailable": true,
"attempts": 245,
"wins": 48,
"winPercent": 19.6,
"byType": {
"1v1": {
"attempts": 34,
"wins": 25,
"winPercent": 73.5
},
"1v2": {
"attempts": 48,
"wins": 14,
"winPercent": 29.2
},
"1v3": {
"attempts": 65,
"wins": 7,
"winPercent": 10.8
},
"1v4": {
"attempts": 57,
"wins": 2,
"winPercent": 3.5
},
"1v5": {
"attempts": 41,
"wins": 0,
"winPercent": 0
}
}
},
"flashAssists": {
"flashAssists": 110
},
"rows": [
{
"id": "cs2-match-2399852-map-2-cs2-player-11893",
"mapId": "cs2-match-2399852-map-2",
"matchId": "cs2-match-2399852",
"playerId": "cs2-player-11893",
"playerName": "ZywOo",
"teamId": "cs2-team-9565",
"teamName": "Vitality",
"kills": 20,
"deaths": 10,
"assists": 6,
"plusMinus": 10,
"adr": 89.7,
"kast": 0.783,
"rating": 1.37,
"ratingVersion": "cito_rating_1",
"headshots": 6,
"headshotPercent": 0.3,
"firstKills": 5,
"firstDeaths": 0,
"lastSyncedAt": "2026-11-11T12:00:26.616Z",
"startsAt": "2026-11-11T04:15:00.000Z",
"mapNumber": 2,
"mapName": "Dust2"
},
{
"id": "cs2-match-2399852-map-1-cs2-player-11893",
"mapId": "cs2-match-2399852-map-1",
"matchId": "cs2-match-2399852",
"playerId": "cs2-player-11893",
"playerName": "ZywOo",
"teamId": "cs2-team-9565",
"teamName": "Vitality",
"kills": 16,
"deaths": 17,
"assists": 2,
"plusMinus": -1,
"adr": 61.7,
"kast": 0.739,
"rating": 0.9,
"ratingVersion": "cito_rating_1",
…Player clutches
A player's clutch situations (1vX). Currently being recomputed: returns `data_available: false` with `unavailable_reason: being_recomputed`.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| playerIdOrSlug (path)* | string | Player id (cs2-player-11893) or slug (zywoo). |
| limit | integer | Rows to return. Maximum 200; larger values are reduced to 200. |
| player_id | string | Player id or slug. |
Example
curl "https://api.citoapi.com/api/v1/cs2/players/donk/clutches" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": {
"entityType": "cs2_player_clutches",
"playerId": "cs2-player-11893",
"playerNickname": "ZywOo",
"dataAvailable": true,
"attempts": 245,
"wins": 48,
"winPercent": 19.6,
"byType": {
"1v1": {
"attempts": 34,
"wins": 25,
"winPercent": 73.5
},
"1v2": {
"attempts": 48,
"wins": 14,
"winPercent": 29.2
},
"1v3": {
"attempts": 65,
"wins": 7,
"winPercent": 10.8
},
"1v4": {
"attempts": 57,
"wins": 2,
"winPercent": 3.5
},
"1v5": {
"attempts": 41,
"wins": 0,
"winPercent": 0
}
},
"recent": [
{
"matchId": "cs2-match-2399852",
"mapId": "cs2-match-2399852-map-1",
"mapName": "Anubis",
"eventName": "BLAST Rivals 2026 Season 2",
"date": "2026-11-11T04:15:00.000Z",
"round": 17,
"type": "1v4",
"side": "T",
"won": false
},
{
"matchId": "cs2-match-2399852",
"mapId": "cs2-match-2399852-map-2",
"mapName": "Dust2",
"eventName": "BLAST Rivals 2026 Season 2",
"date": "2026-11-11T04:15:00.000Z",
"round": 9,
"type": "1v3",
"side": "T",
"won": false
}
]
},
"meta": {
"count": 2,
"dataAvailable": true,
"limit": 2,
"total": 2,
"page": 1,
"totalPages": 1,
"hasNext": false,
"hasPrev": false
}
}Player flash assists
Kills a player set up with flashbangs.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| playerIdOrSlug (path)* | string | Player id (cs2-player-11893) or slug (zywoo). |
Example
curl "https://api.citoapi.com/api/v1/cs2/players/donk/flash-assists" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": {
"entityType": "cs2_player_flash_assists",
"playerId": "cs2-player-11893",
"playerNickname": "ZywOo",
"dataAvailable": true,
"flashAssists": [
{
"playerId": "cs2-player-11893",
"playerName": "ZywOo",
"teamId": "cs2-team-9565",
"teamName": "Vitality",
"flashAssists": 110,
"maps": 70,
"flashAssistsPerMap": 1.5714
}
]
},
"meta": {
"count": 1,
"dataAvailable": true,
"limit": 1,
"total": 1,
"page": 1,
"totalPages": 1,
"hasNext": false,
"hasPrev": false
}
}Player matches
A player's stat lines, one row per map played, newest first. A row's `id` is the stat-line id `<mapId>-<playerId>`; use `matchId` and `mapId` for the match and map.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| playerIdOrSlug (path)* | string | Player id (cs2-player-11893) or slug (zywoo). |
| bestOf | string | Only matches of this series length: 1, 3 or 5, or a comma list (3,5). bestOf=3 returns BO3 matches only; paging and totals count the filtered rows. Any other value is 400 INVALID_BEST_OF. |
| limit | integer | Rows to return. Maximum 100; larger values are reduced to 100. |
Example
curl "https://api.citoapi.com/api/v1/cs2/players/donk/matches" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": [
{
"entityType": "cs2_player_stat",
"id": "cs2-match-2399852-map-2-cs2-player-11893",
"mapId": "cs2-match-2399852-map-2",
"matchId": "cs2-match-2399852",
"playerId": "cs2-player-11893",
"playerName": "ZywOo",
"teamId": "cs2-team-9565",
"teamName": "Vitality",
"kills": 20,
"deaths": 10,
"assists": 6,
"plusMinus": 10,
"adr": 89.7,
"kast": 0.783,
"rating": 1.37,
"ratingVersion": "cito_rating_1",
"headshots": 6,
"headshotPercent": 0.3,
"firstKills": 5,
"firstDeaths": 0,
"lastSyncedAt": "2026-11-11T12:00:26.616Z",
"map": {
"id": "cs2-match-2399852-map-2",
"matchId": "cs2-match-2399852",
"mapNumber": 2,
"mapName": "Dust2",
"status": "completed",
"team1Score": 13,
"team2Score": 10,
"team1Halves": [
5,
8
],
"team2Halves": [
7,
3
],
"winnerTeamId": "cs2-team-9565",
"durationRounds": 23,
"lastSyncedAt": "2026-11-11T12:30:27.016Z",
"match": {
"id": "cs2-match-2399852",
"eventId": "cs2-event-8251",
"eventName": "BLAST Rivals 2026 Season 2",
"eventSlug": "blast-rivals-2026-season-2",
"stageName": null,
"startsAt": "2026-11-11T04:15:00.000Z",
"endsAt": "2026-11-11T06:18:51.447Z",
"bestOf": 3,
"status": "completed",
"team1Id": "cs2-team-9565",
"team2Id": "cs2-team-11283",
"team1Name": "Vitality",
"team2Name": "Falcons",
"team1Score": 2,
"team2Score": 0,
"winnerTeamId": "cs2-team-9565",
"vetoOrder": [
{
"…": "…"
},
{
"…": "…"
}
],
"streamLinks": [],
"vodLinks": [],
"lastSyncedAt": "2026-11-11T12:46:10.483Z",
"lastVerified": "2026-11-11T12:46:10.483Z",
"confidence": "high",
"resultType": "played",
"resultStatus": "completed",
"…": "6 more fields"
},
"mapNameCanonical": "Dust2",
"imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/dust2.png",
"mapImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/dust2.png",
"coverImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/dust2.png",
"resultType": "played",
"resultStatus": "completed",
"isForfeit": false,
"forfeitStage": null,
"roundsPlayed": null,
"statsEligible": true,
"unavailableReason": null,
"…": "1 more fields"
},
"availableSubresources": [],
"unavailableSubresources": [],
"…": "5 more fields"
},
{
"entityType": "cs2_player_stat",
"id": "cs2-match-2399852-map-1-cs2-player-11893",
"mapId": "cs2-match-2399852-map-1",
"matchId": "cs2-match-2399852",
"playerId": "cs2-player-11893",
"playerName": "ZywOo",
"teamId": "cs2-team-9565",
"teamName": "Vitality",
"kills": 16,
"deaths": 17,
"assists": 2,
"plusMinus": -1,
"adr": 61.7,
"kast": 0.739,
"rating": 0.9,
"ratingVersion": "cito_rating_1",
"headshots": 7,
"headshotPercent": 0.4375,
"firstKills": 3,
"firstDeaths": 3,
…Player maps
A player's stat lines per map, newest first (`startsAt` desc, `mapNumber` desc), his own lines only. Each row has `inPool` (in the current Active Duty pool), `poolStatus` (`in_pool`, `removed`, `never_in_pool`) and `inPoolWhenPlayed`; `aggregate=true` rows (one per map name) have `inPool`, `poolStatus` and `removedAt`.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| playerIdOrSlug (path)* | string | Player id (cs2-player-11893) or slug (zywoo). |
| aggregate | string | Filter by aggregate. |
| days | integer | Look-back window in days. |
| limit | integer | Rows to return. Maximum 100; larger values are reduced to 100. |
| summary | boolean | true returns a summary instead of full rows. |
| windowDays | integer | Look-back window in days. |
| window_days | integer | Look-back window in days. |
Example
curl "https://api.citoapi.com/api/v1/cs2/players/donk/maps" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": [
{
"entityType": "cs2_player_stat",
"id": "cs2-match-2399852-map-2-cs2-player-11893",
"mapId": "cs2-match-2399852-map-2",
"matchId": "cs2-match-2399852",
"playerId": "cs2-player-11893",
"playerName": "ZywOo",
"teamId": "cs2-team-9565",
"teamName": "Vitality",
"kills": 20,
"deaths": 10,
"assists": 6,
"plusMinus": 10,
"adr": 89.7,
"kast": 0.783,
"rating": 1.37,
"ratingVersion": "cito_rating_1",
"headshots": 6,
"headshotPercent": 0.3,
"firstKills": 5,
"firstDeaths": 0,
"lastSyncedAt": "2026-11-11T12:00:26.616Z",
"map": {
"id": "cs2-match-2399852-map-2",
"matchId": "cs2-match-2399852",
"mapNumber": 2,
"mapName": "Dust2",
"status": "completed",
"team1Score": 13,
"team2Score": 10,
"team1Halves": [
5,
8
],
"team2Halves": [
7,
3
],
"winnerTeamId": "cs2-team-9565",
"durationRounds": 23,
"lastSyncedAt": "2026-11-11T12:30:27.016Z",
"match": {
"id": "cs2-match-2399852",
"status": "completed",
"startsAt": "2026-11-11T04:15:00.000Z",
"team1Id": "cs2-team-9565",
"team2Id": "cs2-team-11283",
"team1Name": "Vitality",
"team2Name": "Falcons",
"team1Score": 2,
"team2Score": 0,
"winnerTeamId": "cs2-team-9565",
"resultType": "played",
"resultStatus": "completed",
"isForfeit": false,
"forfeitedMaps": 0,
"statsEligible": true,
"unavailableReason": null,
"dataAvailability": {
"playerStats": {
"…": "…"
}
}
},
"mapNameCanonical": "Dust2",
"imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/dust2.png",
"mapImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/dust2.png",
"coverImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/dust2.png",
"resultType": "played",
"resultStatus": "completed",
"isForfeit": false,
"forfeitStage": null,
"roundsPlayed": null,
"statsEligible": true,
"unavailableReason": null,
"…": "1 more fields"
},
"inPool": true,
"inPoolWhenPlayed": true,
"…": "8 more fields"
},
{
"entityType": "cs2_player_stat",
"id": "cs2-match-2399852-map-1-cs2-player-11893",
"mapId": "cs2-match-2399852-map-1",
"matchId": "cs2-match-2399852",
"playerId": "cs2-player-11893",
"playerName": "ZywOo",
"teamId": "cs2-team-9565",
"teamName": "Vitality",
"kills": 16,
"deaths": 17,
"assists": 2,
"plusMinus": -1,
"adr": 61.7,
"kast": 0.739,
"rating": 0.9,
"ratingVersion": "cito_rating_1",
"headshots": 7,
"headshotPercent": 0.4375,
"firstKills": 3,
"firstDeaths": 3,
"lastSyncedAt": "2026-11-11T12:00:25.790Z",
"map": {
"id": "cs2-match-2399852-map-1",
"matchId": "cs2-match-2399852",
"mapNumber": 1,
"mapName": "Anubis",
"status": "completed",
"team1Score": 13,
"team2Score": 10,
"team1Halves": [
7,
6
],
"team2Halves": [
5,
…Player teams
Teams a player has played for, with dates. Roster entries have `tenureType: "roster"`; runs of maps played for a team that no roster entry covers are added as `tenureType: "match_participation"` (id `match-participation:<teamId>:<n>`, `fromAt` / `toAt` = first / last map, `matchesPlayed`, `mapsPlayed`, `isActive: false`). These routes are equivalent; use whichever reads best.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| playerIdOrSlug (path)* | string | Player id (cs2-player-11893) or slug (zywoo). |
Example
curl "https://api.citoapi.com/api/v1/cs2/players/donk/teams" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": [
{
"id": "8f40140c-772e-4d4e-8510-1c8360c754ba",
"teamId": "cs2-team-9565",
"playerId": "cs2-player-11893",
"role": "AWPer",
"fromAt": "2018-10-01T12:00:00.000Z",
"toAt": null,
"isActive": true,
"lastSyncedAt": "2026-11-11T12:51:13.764Z",
"team": {
"id": "cs2-team-9565",
"name": "Vitality",
"slug": "vitality",
"teamTag": "VITALITY",
"logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp",
"countryName": "Europe",
"countryCode": null,
"region": "Europe",
"worldRanking": 3,
"lastSyncedAt": "2026-11-11T12:51:12.392Z",
"lastVerified": "2026-11-11T12:51:12.392Z",
"confidence": "high",
"worldRankingStatus": "ranked",
"vrsRanking": 2,
"vrsRankingStatus": "ranked",
"vrsRegion": "Europe",
"alternateLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp",
"darkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp",
"logoIsPlaceholder": false
},
"tenureType": "roster"
},
{
"id": "match-participation:cs2-team-4608:1",
"teamId": "cs2-team-4608",
"playerId": "cs2-player-11893",
"role": null,
"fromAt": "2023-07-08T17:20:00.000Z",
"toAt": "2023-07-08T17:20:00.000Z",
"isActive": false,
"lastSyncedAt": "2026-11-11T12:52:00.600Z",
"team": {
"id": "cs2-team-4608",
"name": "Natus Vincere",
"slug": "natus-vincere",
"teamTag": "NV",
"logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/33aea6490b84e8284318ac8d52d9b8f3.svg",
"countryName": "Europe",
"countryCode": null,
"region": "Europe",
"worldRanking": 8,
"lastSyncedAt": "2026-11-11T12:51:34.895Z",
"lastVerified": "2026-11-11T12:51:34.895Z",
"confidence": "high",
"worldRankingStatus": "ranked",
"vrsRanking": 7,
"vrsRankingStatus": "ranked",
"vrsRegion": "Europe",
"logoIsPlaceholder": false
},
"tenureType": "match_participation",
"matchesPlayed": 1,
"mapsPlayed": 1,
"firstMapAt": "2023-07-08T17:20:00.000Z",
"lastMapAt": "2023-07-08T17:20:00.000Z"
}
],
"meta": {
"count": 6,
"dataAvailable": true,
"unavailableReason": null,
"limit": 6,
"total": 6,
"page": 1,
"totalPages": 1,
"hasNext": false,
"hasPrev": false
}
}Player form
A player's most recent maps with kills, deaths, ADR, KAST and rating.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| playerIdOrSlug (path)* | string | Player id (cs2-player-11893) or slug (zywoo). |
Example
curl "https://api.citoapi.com/api/v1/cs2/players/donk/form" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": [
{
"entityType": "cs2_player_stat",
"id": "cs2-match-2399852-map-2-cs2-player-11893",
"mapId": "cs2-match-2399852-map-2",
"matchId": "cs2-match-2399852",
"playerId": "cs2-player-11893",
"playerName": "ZywOo",
"teamId": "cs2-team-9565",
"teamName": "Vitality",
"kills": 20,
"deaths": 10,
"assists": 6,
"plusMinus": 10,
"adr": 89.7,
"kast": 0.783,
"rating": 1.37,
"ratingVersion": "cito_rating_1",
"headshots": 6,
"headshotPercent": 0.3,
"firstKills": 5,
"firstDeaths": 0,
"lastSyncedAt": "2026-11-11T12:00:26.616Z",
"map": {
"id": "cs2-match-2399852-map-2",
"matchId": "cs2-match-2399852",
"mapNumber": 2,
"mapName": "Dust2",
"status": "completed",
"team1Score": 13,
"team2Score": 10,
"team1Halves": [
5,
8
],
"team2Halves": [
7,
3
],
"winnerTeamId": "cs2-team-9565",
"durationRounds": 23,
"lastSyncedAt": "2026-11-11T12:30:27.016Z",
"match": {
"id": "cs2-match-2399852",
"eventId": "cs2-event-8251",
"eventName": "BLAST Rivals 2026 Season 2",
"eventSlug": "blast-rivals-2026-season-2",
"stageName": null,
"startsAt": "2026-11-11T04:15:00.000Z",
"endsAt": "2026-11-11T06:18:51.447Z",
"bestOf": 3,
"status": "completed",
"team1Id": "cs2-team-9565",
"team2Id": "cs2-team-11283",
"team1Name": "Vitality",
"team2Name": "Falcons",
"team1Score": 2,
"team2Score": 0,
"winnerTeamId": "cs2-team-9565",
"vetoOrder": [
{
"…": "…"
},
{
"…": "…"
}
],
"streamLinks": [],
"vodLinks": [],
"lastSyncedAt": "2026-11-11T12:46:10.483Z",
"lastVerified": "2026-11-11T12:46:10.483Z",
"confidence": "high",
"resultType": "played",
"resultStatus": "completed",
"…": "6 more fields"
},
"mapNameCanonical": "Dust2",
"imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/dust2.png",
"mapImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/dust2.png",
"coverImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/dust2.png",
"resultType": "played",
"resultStatus": "completed",
"isForfeit": false,
"forfeitStage": null,
"roundsPlayed": null,
"statsEligible": true,
"unavailableReason": null,
"…": "1 more fields"
},
"availableSubresources": [],
"unavailableSubresources": [],
"…": "5 more fields"
},
{
"entityType": "cs2_player_stat",
"id": "cs2-match-2399852-map-1-cs2-player-11893",
"mapId": "cs2-match-2399852-map-1",
"matchId": "cs2-match-2399852",
"playerId": "cs2-player-11893",
"playerName": "ZywOo",
"teamId": "cs2-team-9565",
"teamName": "Vitality",
"kills": 16,
"deaths": 17,
"assists": 2,
"plusMinus": -1,
"adr": 61.7,
"kast": 0.739,
"rating": 0.9,
"ratingVersion": "cito_rating_1",
"headshots": 7,
"headshotPercent": 0.4375,
"firstKills": 3,
"firstDeaths": 3,
…Player weapons
A player's kills by weapon. `weapons[].headshotShare` is the headshot share on the 0-1 scale (4 decimals), the scale every other CS2 headshot field uses; use it in new code. `weapons[].headshotPercent` on this endpoint is the same share on a 0-100 scale (one decimal), kept for existing clients.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| playerIdOrSlug (path)* | string | Player id (cs2-player-11893) or slug (zywoo). |
| limit | integer | Rows to return. Maximum 200; larger values are reduced to 200. |
Example
curl "https://api.citoapi.com/api/v1/cs2/players/donk/weapons" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": {
"entityType": "cs2_player_weapon_stats",
"playerId": "cs2-player-11893",
"playerName": "ZywOo",
"dataAvailable": true,
"dataScope": "player_attributed_kill_events",
"weapons": [
{
"weapon": "AWP",
"kills": 693,
"headshots": 79,
"headshotPercent": 11.4,
"headshotShare": 0.114,
"maps": 106,
"matches": 48,
"lastSyncedAt": "2026-11-11T06:32:09.147Z"
},
{
"weapon": "AK-47",
"kills": 468,
"headshots": 296,
"headshotPercent": 63.2,
"headshotShare": 0.6325,
"maps": 95,
"matches": 48,
"lastSyncedAt": "2026-11-11T06:32:09.147Z"
}
]
},
"meta": {
"count": 2,
"dataAvailable": true,
"dataScope": "player_attributed_kill_events",
"limit": 2,
"total": 2,
"page": 1,
"totalPages": 1,
"hasNext": false,
"hasPrev": false
}
}Player details
One player: nickname, real name, photo, country, team, role and headline stats. Player photos: `imageUrl` on a player (`playerImageUrl` on roster and transfer rows) is always an image URL. A player with no photo gets a neutral silhouette placeholder (400x417 transparent WebP, the same size as the photos) and `imageIsPlaceholder: true` (`playerImageIsPlaceholder` on roster and transfer rows); a real photo has `false`. Check the flag, not the URL.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| playerIdOrSlug (path)* | string | Player id (cs2-player-11893) or slug (zywoo). |
Example
curl "https://api.citoapi.com/api/v1/cs2/players/donk" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": {
"entityType": "cs2_player",
"id": "cs2-player-11893",
"nickname": "ZywOo",
"slug": "zywoo",
"realName": "Mathieu Herbaut",
"imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/9a20575a48df13463513233c6314f72c.webp",
"countryName": "France",
"countryCode": "FR",
"age": 25,
"rating": 1.24,
"mapsPlayed": 654,
"careerStats": {
"rating": 1.24,
"lastKnownRating": 1.24
},
"currentTeamId": "cs2-team-9565",
"status": "active",
"primaryRole": "AWPer",
"roleConfidence": "high",
"statusUpdatedAt": "2026-11-11T12:51:13.764Z",
"lastSyncedAt": "2026-11-11T12:51:12.962Z",
"lastVerified": "2026-11-11T12:51:12.962Z",
"roster": [
{
"id": "cs2-player-8f40140c-772e-4d4e-8510-1c8360c754ba",
"teamId": "cs2-team-9565",
"playerId": "cs2-player-11893",
"role": "AWPer",
"fromAt": "2018-10-01T12:00:00.000Z",
"toAt": null,
"isActive": true,
"lastSyncedAt": "2026-11-11T12:51:13.764Z",
"team": {
"id": "cs2-team-9565",
"name": "Vitality",
"slug": "vitality",
"teamTag": "VITALITY",
"logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp",
"countryName": "Europe",
"countryCode": null,
"region": "Europe",
"worldRanking": 3,
"lastSyncedAt": "2026-11-11T12:51:12.392Z",
"lastVerified": "2026-11-11T12:51:12.392Z",
"confidence": "high",
"worldRankingStatus": "ranked",
"vrsRanking": 2,
"vrsRankingStatus": "ranked",
"vrsRegion": "Europe",
"alternateLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp",
"darkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp",
"logoIsPlaceholder": false
}
},
{
"id": "cs2-player-c89f70dc-3630-4fa3-8143-8967904b6b93",
"teamId": "cs2-team-5639",
"playerId": "cs2-player-11893",
"role": null,
"fromAt": "2017-09-01T12:00:00.000Z",
"toAt": "2018-09-30T12:00:00.000Z",
"isActive": false,
"lastSyncedAt": "2026-07-10T01:37:18.872Z",
"team": {
"id": "cs2-team-5639",
"name": "aAa",
"slug": "aaa",
"teamTag": "AAA",
"logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/686cbe0c559e95cae6a091ffc4a7f524.svg",
"countryName": "France",
"countryCode": "FR",
"region": "Europe",
"worldRanking": null,
"lastSyncedAt": "2026-11-11T12:55:50.381Z",
"lastVerified": "2026-11-11T12:55:50.381Z",
"confidence": "high",
"worldRankingStatus": "not_ranked",
"vrsRanking": 339,
"vrsRankingStatus": "ranked",
"vrsRegion": "Europe",
"logoIsPlaceholder": false
}
}
],
"currentTeam": {
"id": "cs2-team-9565",
"name": "Vitality",
"slug": "vitality",
"teamTag": "VITALITY",
"logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp",
"countryName": "Europe",
"countryCode": null,
"region": "Europe",
"worldRanking": 3,
"lastSyncedAt": "2026-11
…List players
Players with photo, country, team and rating. **Many players in one call:** `?ids=a,b,c` (comma-separated, or repeat `ids=`; up to 50 ids or slugs, anything the single-player endpoint accepts). Items have the list row shape, in request order; an entity named twice is returned once; inputs that name nothing are listed in `meta.notFound`. `meta.batch` = {requested, returned, notFound, billedRequests, idsPerBilledRequest: 10, maxIds: 50, itemShape, fullShape}. **Billing:** a batch costs one call per started block of 10 ids (1-10 ids = 1 call, 11-20 = 2, 50 = 5), on both the per-minute limit and the month; with fewer calls left this month than the batch needs, the first (calls left x 10) ids are served and the rest are listed in `meta.batch.notFetched` (`notFetchedReason: MONTHLY_LIMIT_REACHED`). More than 50 ids is a 400. `?expand=full` (or any `include=`) returns each item as the single-entity response (sections under `included`), the batch shape served before 2026-11-02; API keys that used batches before then keep that shape by default. Player photos: `imageUrl` on a player (`playerImageUrl` on roster and transfer rows) is always an image URL. A player with no photo gets a neutral silhouette placeholder (400x417 transparent WebP, the same size as the photos) and `imageIsPlaceholder: true` (`playerImageIsPlaceholder` on roster and transfer rows); a real photo has `false`. Check the flag, not the URL.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| active | boolean | Filter by active. |
| all | string | Filter by all. |
| archive | boolean | Filter by archive. |
| competitive | boolean | Filter by competitive. |
| expand | string | full with ids: each item is the full single-player response. |
| fields | string | Comma-separated list of fields to return. |
| filter | string | Filter by filter. |
| hasImage | string | Filter by hasImage. |
| has_image | string | Filter by has_image. |
| ids | string | Batch read: up to 50 comma-separated player ids or slugs. Billed one call per started 10 ids. |
| includeUnverified | string | Filter by includeUnverified. |
| include_unverified | string | Filter by include_unverified. |
| letter | string | Filter by letter. |
| limit | integer | Rows to return. Maximum 200; larger values are reduced to 200. |
| offset | integer | Rows to skip, for paging. |
| orderBy | string | Filter by orderBy. |
| page | integer | Page number, starting at 1. |
| q | string | Search text. |
| search | string | Search text. |
| sort | string | Sort order. |
| summary | boolean | true returns a summary instead of full rows. |
| teamId | string | Team id or slug. |
Example
curl "https://api.citoapi.com/api/v1/cs2/players" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": [
{
"entityType": "cs2_player",
"id": "cs2-player-25719",
"nickname": "-hubi-",
"slug": "hubi",
"realName": "Hubert Szumiński",
"imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/2080d701279e7a4489bf4c3b555ac1c6.webp",
"countryName": "Poland",
"countryCode": "PL",
"age": 28,
"rating": 0.81,
"mapsPlayed": null,
"careerStats": {
"rating": 0.81,
"window": "past_3_months",
"opening": null,
"sniping": null,
"trading": null,
"utility": null,
"entrying": null,
"clutching": null,
"firepower": null,
"mapsPlayed": null,
"prizeMoney": null,
"lastKnownRating": 0.81,
"lastActiveTournament": "Betclic Clash Mistrzostwa Polski 2025"
},
"currentTeamId": null,
"status": null,
"primaryRole": "rifler",
"roleConfidence": "low",
"statusUpdatedAt": "2026-10-16T05:02:27.350Z",
"lastSyncedAt": "2026-10-16T05:02:27.350Z",
"lastVerified": "2026-10-16T05:02:27.350Z",
"prizeMoney": null,
"availableSubresources": [
"stats",
"matches"
],
"unavailableSubresources": [
"weapons"
],
"unavailableFields": {
"mapsPlayed": {
"reason": "profile_field_unavailable"
},
"currentTeamId": {
"reason": "profile_field_unavailable"
}
},
"dataQuality": "complete",
"…": "3 more fields"
},
{
"entityType": "cs2_player",
"id": "cs2-player-21145",
"nickname": "0K1N",
"slug": null,
"realName": null,
"imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/15373dbc8529502106544c93d3139448.webp",
"countryName": "China",
"countryCode": null,
"age": 30,
"rating": 0.89,
"mapsPlayed": null,
"careerStats": {
"rating": 0.89,
"lastKnownRating": 0.89,
"lastActiveTournament": "CCT Season 2 North America Series 1"
},
"currentTeamId": null,
"status": null,
"primaryRole": null,
"roleConfidence": null,
"statusUpdatedAt": null,
"lastSyncedAt": "2026-10-31T09:01:52.144Z",
"lastVerified": "2026-10-31T09:01:52.144Z",
"prizeMoney": null,
"availableSubresources": [
"stats",
"matches"
],
"unavailableSubresources": [
"weapons"
],
"unavailableFields": {
"imageUrl": null,
"countryCode": {
"reason": "profile_field_unavailable"
},
"mapsPlayed": {
"reason": "profile_field_unavailable"
},
"currentTeamId": {
"reason": "profile_field_unavailable"
}
},
"dataQuality": "complete",
"…": "3 more fields"
}
],
"meta": {
"page": 1,
"limit": 2,
"total": 7699,
"count": 2,
"sort": "nickname",
"dataAvailable": true,
"unavailableReason": null,
"totalPages": 3850,
"hasNext": true,
"hasPrev": false
}
}Try the CS2 Player Stats 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/players/donk/stats" \
-H "x-api-key: YOUR_API_KEY"