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, 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-2398526-map-1-H0NeST",
"mapId": "cs2-match-2398526-map-1",
"matchId": "cs2-match-2398526",
"playerId": "cs2-player-24045",
"playerName": "H0NeST",
"teamId": "cs2-team-13857",
"teamName": "Iowa Stormboar",
"kills": 16,
"deaths": 9,
"assists": 3,
"plusMinus": 7,
"adr": null,
"kast": null,
"rating": 1.41,
"ratingVersion": "source_rating_3_0",
"headshots": 11,
"headshotPercent": null,
"firstKills": 1,
"firstDeaths": 1,
"source": "live",
"lastSyncedAt": "2026-09-23T02:57:57.779Z",
"player": {
"id": "cs2-player-24045",
"nickname": "H0NeST",
"slug": "h0nest",
"realName": "Nazar Stefinko",
"imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/f2972c1aaaea60879f3c33ed6058b227.webp",
"countryName": "Ukraine",
"countryCode": "UA",
"age": 18,
"rating": 1.26,
"mapsPlayed": 44,
"careerStats": {
"rating": 1.31,
"window": "past_3_months",
"opening": null,
"sniping": null,
"trading": null,
"utility": null,
"entrying": null,
"clutching": null,
"firepower": null,
"mapsPlayed": 50,
"prizeMoney": 3100,
"careerRating": 1.31,
"windowRating": null,
"missingFields": [
"age"
],
"profileStatus": "partial",
"lastKnownRating": 1.31,
"lastActiveTournament": "LiveFISSURE Playground 3",
"profileImageStatus": "success",
"profileImageClaimedAt": "2026-06-26T02:34:40.140807+02:00"
},
"currentTeamId": "cs2-team-13857",
"status": "inactive",
"primaryRole": "entry",
"roleConfidence": "medium",
"statusUpdatedAt": "2026-07-05T00:40:56.174Z",
"lastSyncedAt": "2026-09-23T03:04:06.671Z",
"lastVerified": "2026-09-23T03:04:06.671Z"
},
"team": {
"id": "cs2-team-13857",
"name": "Iowa Stormboar",
"slug": "iowa-stormboar",
"teamTag": "IS",
"logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/c875a66adefc7e50e0b34ba4b97bed5c.webp",
"countryName": "United States",
"countryCode": "US",
"region": "Americas",
"worldRanking": 177,
"lastSyncedAt": "2026-09-23T03:09:17.179Z",
"lastVerified": "2026-09-23T03:09:17.179Z",
"confidence": "high"
},
"…": "7 more fields"
},
{
"entityType": "cs2_player_stat",
"id": "live-source-match-2398526-map-1-Scorchyy",
"mapId": "cs2-match-2398526-map-1",
"matchId": "cs2-match-2398526",
"playerId": "cs2-player-24528",
"playerName": "Scorchyy",
"teamId": "cs2-team-13857",
"teamName": "Iowa Stormboar",
"kills": 12,
"deaths": 6,
"assists": 1,
"plusMinus": 6,
"adr": null,
"kast": null,
"rating": 1.46,
"ratingVersion": "source_rating_3_0",
"headshots": 4,
"headshotPercent": null,
"firstKills": 3,
"firstDeaths": 1,
"source": "live",
"lastSyncedAt": "2026-09-23T02:57:57.477Z",
"player": {
"id": "cs2-player-24528",
"nickname": "Scorchyy",
"slug": "scorchyy",
"real
…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": "3d6e19c0feb325ab753bc9cefe47430a",
"payload": {
"bombSite": "A",
"tPlayers": 2,
"ctPlayers": 1,
"playerName": "TyRa",
"playerNick": "TyRa"
},
"bombSite": "A",
"tPlayers": 2,
"ctPlayers": 1,
"eventType": "BombPlanted",
"observedAt": "2026-09-23T02:59:52.534Z",
"playerName": "TyRa",
"playerNick": "TyRa",
"webhookEligible": true
},
{
"id": "live_evt_1",
"type": "BombPlanted",
"round": null,
"source": "live",
"eventId": "d5e85dd74809ea07557b244c6ab64254",
"payload": {
"bombSite": "B",
"tPlayers": 4,
"ctPlayers": 3,
"playerName": "Valter0k",
"playerNick": "Valter0k"
},
"bombSite": "B",
"tPlayers": 4,
"ctPlayers": 3,
"eventType": "BombPlanted",
"observedAt": "2026-09-23T02:59:52.535Z",
"playerName": "Valter0k",
"playerNick": "Valter0k",
"webhookEligible": true
}
],
"meta": {
"count": 64,
"dataAvailable": true,
"source": "live_state",
"dataScope": "live_live feed_events",
"unavailableEventTypes": [],
"limit": 64,
"total": 64,
"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-2398526-map-1",
"entityType": "cs2_game",
"matchId": "cs2-match-2398526",
"mapNumber": 1,
"map": "Dust2",
"pickTeamId": null,
"winnerTeamId": "cs2-team-13857",
"score": {
"team1": 13,
"team2": 2
},
"halfScores": {
"team1": [
10,
3
],
"team2": [
2,
0
]
},
"team1Halves": [
10,
3
],
"team2Halves": [
2,
0
],
"overtime": null,
"durationRounds": 15,
"duration": {
"rounds": 15,
"source": "stored"
},
"status": "completed",
"resultType": "played",
"resultStatus": "completed",
"isForfeit": false,
"statsEligible": true,
"unavailableReason": null,
"playerStatsAvailable": true,
"playerStats": [
{
"playerId": "cs2-player-24045",
"playerName": "H0NeST",
"teamId": "cs2-team-13857",
"teamName": "Iowa Stormboar",
"kills": 16,
"deaths": 9,
"assists": 3,
"plusMinus": 7,
"adr": null,
"kast": null,
"rating": 1.41,
"ratingVersion": "source_rating_3_0",
"headshots": 11,
"headshotPercent": null,
"openingKills": 1,
"openingDeaths": 1,
"rating3Profile": {
"rating3": null,
"rating3Available": false,
"subratings": {
"kills": 16,
"damage": null,
"survival": 2.1111,
"kast": null,
"multiKills": null,
"roundSwing": null
},
"openingDuels": {
"openingKills": 1,
"openingDeaths": 1,
"successRate": 0.5
},
"unavailableSubratings": [
"multi_kills",
"round_swing"
],
"rating2": 1.41
},
"source": "live",
"lastSyncedAt": "2026-09-23T02:57:57.779Z"
},
{
"playerId": "cs2-player-24467",
"playerName": "Johan",
"teamId": "cs2-team-12971",
"teamName": "Wanted Goons",
"kills": 3,
"deaths": 14,
"assists": 2,
"plusMinus": -11,
"adr": null,
"kast": null,
"rating": 0.41,
"ratingVersion": "source_rating_3_0",
"headshots": 2,
"headshotPercent": null,
"openingKills": 1,
"openingDeaths": 2,
"rating3Profile": {
"rating3": null,
"rating3Available": false,
"subratings": {
"kills": 3,
"damage": null,
"survival": 0.3571,
"kast": null,
"multiKills": null,
"roundSwing": null
},
"openingDuels": {
"openingKills": 1,
"openingDeaths": 2,
"successRate": 0.3333
},
"unavailableSubratings": [
"multi_kills",
"round_swing"
],
"rating2": 0.41
},
"source": "live",
"lastSyncedAt": "2026-09-23T02:57:58.661Z"
}
],
"roundsAvailable": false,
"objectiveStats": {
"dataAvailable": false,
"unavailableReason": "not_yet_indexed",
"confidence": {
"plants": "high",
"defuses": "high",
"explosions": "high",
"clutchDefuse": "medium"
},
"teamStats": [],
"roundEvents": []
},
"…": "4 more fields"
},
"meta": {
…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-09-23",
"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"