CS2 Maps and Rounds API
Map-level data: the active duty pool, the map catalog, and for each map played in a series its player stats, round history and events.
6 endpoints in this section. Authenticate with the x-api-key header; every response is { success, data, meta }. Other sections: Live, Odds, Matches, Rankings, Teams, Players, Events, Stats & leaderboards, Skins, Transfers, Search & reference.
Map player stats
Per-player stats for one map (game). These routes are equivalent; use whichever reads best.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| gameId (path)* | string | Game (map) id from /cs2/matches/{matchId}/games. |
Example
curl "https://api.citoapi.com/api/v1/cs2/games/GAME_ID/stats" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": [
{
"entityType": "cs2_player_stat",
"id": "live-source-match-2399265-map-1-Gizmy",
"mapId": "cs2-match-2399265-map-1",
"matchId": "cs2-match-2399265",
"playerId": "cs2-player-21816",
"playerName": "Gizmy",
"teamId": "cs2-team-8474",
"teamName": "100 Thieves",
"kills": 11,
"deaths": 12,
"assists": 4,
"plusMinus": -1,
"adr": 61.5,
"kast": 0.762,
"rating": 0.99,
"ratingVersion": "cito_rating_1",
"headshots": 6,
"headshotPercent": 0.545,
"firstKills": 2,
"firstDeaths": 1,
"lastSyncedAt": "2026-10-16T19:14:48.147Z",
"player": {
"id": "cs2-player-21816",
"nickname": "Gizmy",
"slug": "gizmy",
"realName": "Jack von Spreckelsen",
"imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/eba9e8db28a85e230e1f1f2e529829f5.webp",
"countryName": "United Kingdom",
"countryCode": "GB",
"age": 22,
"rating": 0.94,
"mapsPlayed": 72,
"careerStats": {
"rating": 0.94,
"lastKnownRating": 0.94
},
"currentTeamId": "cs2-team-11811",
"status": "active",
"primaryRole": "support",
"roleConfidence": "medium",
"statusUpdatedAt": "2026-10-16T18:56:27.673Z",
"lastSyncedAt": "2026-10-16T19:18:23.962Z",
"lastVerified": "2026-10-16T19:18:23.962Z"
},
"team": {
"id": "cs2-team-8474",
"name": "100 Thieves",
"slug": "100-thieves",
"teamTag": "1T",
"logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/ac59058bd7afa346763eda6e57e98413.webp",
"countryName": "Europe",
"countryCode": null,
"region": "Europe",
"worldRanking": 37,
"lastSyncedAt": "2026-10-16T19:39:29.017Z",
"lastVerified": "2026-10-16T19:39:29.017Z",
"confidence": "high",
"alternateLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/46d3bfa423b2598593ea7ce36ad3149e.webp",
"darkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/46d3bfa423b2598593ea7ce36ad3149e.webp"
},
"availableSubresources": [],
"…": "6 more fields"
},
{
"entityType": "cs2_player_stat",
"id": "live-source-match-2399265-map-1-device",
"mapId": "cs2-match-2399265-map-1",
"matchId": "cs2-match-2399265",
"playerId": "cs2-player-7592",
"playerName": "device",
"teamId": "cs2-team-8474",
"teamName": "100 Thieves",
"kills": 24,
"deaths": 10,
"assists": 3,
"plusMinus": 14,
"adr": 104.1,
"kast": 0.857,
"rating": 1.49,
"ratingVersion": "cito_rating_1",
"headshots": 8,
"headshotPercent": 0.333,
"firstKills": 4,
"firstDeaths": 1,
"lastSyncedAt": "2026-10-16T19:14:47.722Z",
"player": {
"id": "cs2-player-7592",
"nickname": "device",
"slug": "device",
"realName": "Nicolai Reedtz",
"imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/d3752c9aea619eb2a9eeb8b9f37d5960.webp",
"countryName": "Denmark",
"countryCode": "DK",
"age": 30,
"rating": 1.12,
"mapsPlayed": 185,
"careerStats": {
"rating": 1.12,
"lastKnownRating": 1.12
},
"currentTeamId": "cs2-team-8474",
"
…Map rounds
Round-by-round results for one map: winner, side and how each round ended. These routes are equivalent; use whichever reads best.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| gameId (path)* | string | Game (map) id from /cs2/matches/{matchId}/games. |
Example
curl "https://api.citoapi.com/api/v1/cs2/games/GAME_ID/rounds" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": {
"dataAvailable": false,
"unavailableReason": "not_yet_indexed",
"dataQuality": "unavailable",
"message": "Round-level bomb event data is not available for this map yet."
},
"meta": {
"count": 0,
"dataAvailable": false,
"limit": 0,
"total": 0,
"page": 1,
"totalPages": 1,
"hasNext": false,
"hasPrev": false
}
}Map events
Kills, utility, bomb and round events for one map, where demo data exists.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| gameId (path)* | string | Game (map) id from /cs2/matches/{matchId}/games. |
| limit | integer | Rows to return. Maximum 5000; larger values are reduced to 5000. |
Example
curl "https://api.citoapi.com/api/v1/cs2/games/GAME_ID/events" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": [
{
"id": "live_evt_0",
"type": "BombPlanted",
"round": null,
"source": "live",
"eventId": "6559b44b62397d1904e02a0c2bf258e4",
"payload": {
"bombSite": "B",
"tPlayers": 4,
"ctPlayers": 2,
"playerName": "puuha",
"playerNick": "puuha"
},
"bombSite": "B",
"tPlayers": 4,
"ctPlayers": 2,
"eventType": "BombPlanted",
"observedAt": "2026-10-16T17:36:46.192Z",
"playerName": "puuha",
"playerNick": "puuha"
},
{
"id": "live_evt_1",
"type": "BombPlanted",
"round": null,
"source": "live",
"eventId": "9a54a19324c6568c21b77a1865ecda31",
"payload": {
"bombSite": "B",
"tPlayers": 3,
"ctPlayers": 2,
"playerName": "R4DYX",
"playerNick": "R4DYX"
},
"bombSite": "B",
"tPlayers": 3,
"ctPlayers": 2,
"eventType": "BombPlanted",
"observedAt": "2026-10-16T17:41:29.137Z",
"playerName": "R4DYX",
"playerNick": "R4DYX"
}
],
"meta": {
"count": 63,
"dataAvailable": true,
"source": "live_state",
"dataScope": "live_live feed_events",
"unavailableEventTypes": [],
"limit": 63,
"total": 63,
"page": 1,
"totalPages": 1,
"hasNext": false,
"hasPrev": false
}
}Game details
One map (game) of a match with score, halves and winner.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| gameId (path)* | string | Game (map) id from /cs2/matches/{matchId}/games. |
Example
curl "https://api.citoapi.com/api/v1/cs2/games/GAME_ID" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": {
"id": "cs2-match-2399265-map-1",
"entityType": "cs2_game",
"matchId": "cs2-match-2399265",
"mapNumber": 1,
"map": "Nuke",
"pickTeamId": null,
"winnerTeamId": "cs2-team-8474",
"score": {
"team1": 13,
"team2": 8
},
"halfScores": null,
"team1Halves": null,
"team2Halves": null,
"overtime": null,
"durationRounds": 21,
"duration": {
"rounds": 21,
"source": "stored"
},
"status": "completed",
"resultType": "played",
"resultStatus": "completed",
"isForfeit": false,
"statsEligible": true,
"unavailableReason": null,
"playerStatsAvailable": true,
"playerStats": [
{
"playerId": "cs2-player-21816",
"playerName": "Gizmy",
"teamId": "cs2-team-8474",
"teamName": "100 Thieves",
"kills": 11,
"deaths": 12,
"assists": 4,
"plusMinus": -1,
"adr": 61.5,
"kast": 0.762,
"rating": 0.99,
"ratingVersion": "cito_rating_1",
"headshots": 6,
"headshotPercent": 0.545,
"openingKills": 2,
"openingDeaths": 1,
"ratingProfile": {
"rating": 0.99,
"ratingVersion": "cito_rating_1",
"components": {
"killsPerMap": 11,
"adr": 61.5,
"kast": 0.762,
"killsPlusAssistsPerDeath": 1.25
},
"openingDuels": {
"openingKills": 2,
"openingDeaths": 1,
"successRate": 0.6667
},
"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-…"
},
"lastSyncedAt": "2026-10-16T19:14:48.147Z"
},
{
"playerId": "cs2-player-25253",
"playerName": "Joey",
"teamId": "cs2-team-10333",
"teamName": "Sangal",
"kills": 13,
"deaths": 15,
"assists": 0,
"plusMinus": -2,
"adr": 67.5,
"kast": 0.524,
"rating": 0.84,
"ratingVersion": "cito_rating_1",
"headshots": 8,
"headshotPercent": 0.615,
"openingKills": 1,
"openingDeaths": 4,
"ratingProfile": {
"rating": 0.84,
"ratingVersion": "cito_rating_1",
"components": {
"killsPerMap": 13,
"adr": 67.5,
"kast": 0.524,
"killsPlusAssistsPerDeath": 0.8667
},
"openingDuels": {
"openingKills": 1,
"openingDeaths": 4,
"successRate": 0.2
},
"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-…"
},
"lastSyncedAt": "2026-10-16T19:14:48.329Z"
}
],
"roundsAvailable": false,
"objectiveStats": {
"dataAvailable": false,
"unavailableReason": "not_yet_indexed",
"confidence": {
"plants": "high",
"defuses": "high",
"explosions": "high",
"clutchDefuse": "medium"
},
"teamStats": [],
"roundEvents": []
},
"…": "4 more fields"
},
"meta": {
"dataAvailable": true,
"source": "match_maps"
}
}Map catalog
Every competitive map with its name and image.
Example
curl "https://api.citoapi.com/api/v1/cs2/maps" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": [
{
"id": "de_ancient",
"slug": "ancient",
"name": "Ancient",
"mapNameCanonical": "Ancient",
"imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/ancient.png",
"mapImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/ancient.png",
"coverImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/ancient.png"
},
{
"id": "de_anubis",
"slug": "anubis",
"name": "Anubis",
"mapNameCanonical": "Anubis",
"imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png",
"mapImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png",
"coverImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png"
}
],
"meta": {
"count": 10,
"source": "static_catalog",
"limit": 10,
"total": 10,
"page": 1,
"totalPages": 1,
"hasNext": false,
"hasPrev": false
}
}Active map pool
The maps in the current competitive pool. These routes are equivalent; use whichever reads best.
Example
curl "https://api.citoapi.com/api/v1/cs2/map-pool" \
-H "x-api-key: YOUR_API_KEY"Response
{
"success": true,
"data": {
"entityType": "cs2_active_duty_map_pool",
"asOf": "2026-10-16",
"poolName": "Active Duty",
"inPoolCount": 7,
"maps": [
{
"id": "de_ancient",
"slug": "ancient",
"name": "Ancient",
"status": "in_pool",
"inPoolSince": "2023-09-27",
"removedAt": null,
"mapNameCanonical": "Ancient",
"imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/ancient.png",
"mapImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/ancient.png",
"coverImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/ancient.png",
"inPool": true,
"pickTeamId": null,
"objectiveStats": {
"dataAvailable": false,
"unavailableReason": "not_yet_indexed",
"confidence": {
"plants": "high",
"defuses": "high",
"explosions": "high",
"clutchDefuse": "medium"
},
"teamStats": [],
"roundEvents": []
}
},
{
"id": "de_anubis",
"slug": "anubis",
"name": "Anubis",
"status": "in_pool",
"inPoolSince": "2023-09-27",
"removedAt": null,
"mapNameCanonical": "Anubis",
"imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png",
"mapImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png",
"coverImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png",
"inPool": true,
"pickTeamId": null,
"objectiveStats": {
"dataAvailable": false,
"unavailableReason": "not_yet_indexed",
"confidence": {
"plants": "high",
"defuses": "high",
"explosions": "high",
"clutchDefuse": "medium"
},
"teamStats": [],
"roundEvents": []
}
}
],
"inPool": [
{
"id": "de_ancient",
"slug": "ancient",
"name": "Ancient",
"status": "in_pool",
"inPoolSince": "2023-09-27",
"removedAt": null,
"mapNameCanonical": "Ancient",
"imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/ancient.png",
"mapImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/ancient.png",
"coverImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/ancient.png",
"inPool": true
},
{
"id": "de_anubis",
"slug": "anubis",
"name": "Anubis",
"status": "in_pool",
"inPoolSince": "2023-09-27",
"removedAt": null,
"mapNameCanonical": "Anubis",
"imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png",
"mapImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png",
"coverImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png",
"inPool": true
}
],
"removed": [
{
"id": "de_overpass",
"slug": "overpass",
"name": "Overpass",
"status": "removed",
"inPoolSince": "2025-07-01",
"removedAt": "2026-07-06",
"mapNameCanonical": "Overpass",
"imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/overpass.png",
"mapImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/overpass.png",
"c
…Try the CS2 Maps and Rounds 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/map-pool" \
-H "x-api-key: YOUR_API_KEY"