Docs/CS2 API/CS2 Maps and Rounds API

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, Player props, Odds, Matches, Rankings, Teams, Players, Events, Stats & leaderboards, Skins, Transfers, Search & reference.

Map player stats

GET/api/v1/cs2/games/{gameId}/stats
GET/api/v1/cs2/games/{gameId}/player-stats
GET/api/v1/cs2/maps/{mapId}/stats
GET/api/v1/cs2/maps/{mapId}/player-stats

Per-player stats for one map (game). These routes are equivalent; use whichever reads best.

Query parameters

ParameterTypeDescription
gameId (path)*stringGame (map) id from /cs2/matches/{matchId}/games.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/games/GAME_ID/stats" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_player_stat",
      "id": "live-source-match-2399511-map-1-ICY",
      "mapId": "cs2-match-2399511-map-1",
      "matchId": "cs2-match-2399511",
      "playerId": "cs2-player-21439",
      "playerName": "ICY",
      "teamId": "cs2-team-14079",
      "teamName": "6yuBoJlbl",
      "kills": 19,
      "deaths": 8,
      "assists": 4,
      "plusMinus": 11,
      "adr": 93.3,
      "kast": 1,
      "rating": 1.48,
      "ratingVersion": "cito_rating_1",
      "headshots": 9,
      "headshotPercent": 0.474,
      "firstKills": 3,
      "firstDeaths": 0,
      "lastSyncedAt": "2026-10-26T23:00:08.365Z",
      "player": {
        "id": "cs2-player-21439",
        "nickname": "ICY",
        "slug": "icy",
        "realName": "Kaisar Faiznurov",
        "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/fc696bbd45c54583432f75464b364bb1.webp",
        "countryName": "Kazakhstan",
        "countryCode": "KZ",
        "age": 21,
        "rating": 1.08,
        "mapsPlayed": 72,
        "careerStats": {
          "rating": 1.08,
          "lastKnownRating": 1.08
        },
        "currentTeamId": "cs2-team-14079",
        "status": "active",
        "primaryRole": "rifler",
        "roleConfidence": "low",
        "statusUpdatedAt": "2026-10-26T18:51:24.964Z",
        "lastSyncedAt": "2026-10-26T21:03:24.662Z",
        "lastVerified": "2026-10-26T21:03:24.662Z"
      },
      "team": {
        "id": "cs2-team-14079",
        "name": "6yuBoJlbl",
        "slug": "6yubojlbl",
        "teamTag": "6YUBOJLB",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/2bd9b801afba9b3dc5c28afd15014756.webp",
        "countryName": "Kazakhstan",
        "countryCode": "KZ",
        "region": "Europe",
        "worldRanking": 168,
        "lastSyncedAt": "2026-10-26T23:00:07.690Z",
        "lastVerified": "2026-10-26T23:00:07.690Z",
        "confidence": "high",
        "vrsRanking": 127
      },
      "availableSubresources": [],
      "…": "6 more fields"
    },
    {
      "entityType": "cs2_player_stat",
      "id": "live-source-match-2399511-map-1-Pump",
      "mapId": "cs2-match-2399511-map-1",
      "matchId": "cs2-match-2399511",
      "playerId": "cs2-player-23292",
      "playerName": "Pump",
      "teamId": "cs2-team-14079",
      "teamName": "6yuBoJlbl",
      "kills": 20,
      "deaths": 10,
      "assists": 2,
      "plusMinus": 10,
      "adr": 83,
      "kast": 0.8,
      "rating": 1.32,
      "ratingVersion": "cito_rating_1",
      "headshots": 11,
      "headshotPercent": 0.55,
      "firstKills": 3,
      "firstDeaths": 1,
      "lastSyncedAt": "2026-10-26T23:00:08.550Z",
      "player": {
        "id": "cs2-player-23292",
        "nickname": "Pump",
        "slug": "pump",
        "realName": "Daniyar Buldybayev",
        "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/fca11a766c59fe8c40d3eef11dce528e.webp",
        "countryName": "Kazakhstan",
        "countryCode": "KZ",
        "age": 19,
        "rating": 1,
        "mapsPlayed": 33,
        "careerStats": {
          "rating": 1,
          "lastKnownRating": 1
        },
        "currentTeamId": "cs2-team-14079",
        "status": "active",
        "primaryRole": "AWPer",
        "roleConfidence": "high",
        "statusUpdatedAt": "2026-10-26T18:51:25.865Z",
        "lastSyncedAt": "2026-10-26T21:03:24.662Z",
        "lastVerified": "2026-10-26T21:03:24.662Z"
      }
…

Map rounds

GET/api/v1/cs2/games/{gameId}/rounds
GET/api/v1/cs2/maps/{mapId}/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

ParameterTypeDescription
gameId (path)*stringGame (map) id from /cs2/matches/{matchId}/games.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/games/GAME_ID/rounds" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_map_round_timeline",
    "mapId": "cs2-match-2399511-map-1",
    "dataScope": "round_summaries_kill_damage_utility_purchase_equipment_events",
    "unavailableEventTypes": [],
    "rounds": [
      {
        "id": "7d78bad5-321b-4407-a009-c1293fb1a955",
        "matchId": "cs2-match-2399511",
        "mapId": "cs2-match-2399511-map-1",
        "round": 1,
        "startTick": 1817,
        "endTick": 7136,
        "durationTicks": 5319,
        "winnerSide": "T",
        "winnerTeamId": "cs2-team-13759",
        "winnerTeamName": "mellren",
        "winReason": "bomb_exploded",
        "firstKillPlayerId": "cs2-player-26060",
        "firstKillPlayerName": "Maksilvl",
        "firstKillTeamId": "cs2-team-13759",
        "firstDeathPlayerId": "cs2-player-11940",
        "firstDeathPlayerName": "krao",
        "firstDeathTeamId": "cs2-team-14079",
        "tKills": 4,
        "ctKills": 2,
        "killCount": 6,
        "events": [
          {
            "id": "270957a5-0d96-456b-a7ba-9d7cecad014f",
            "matchId": "cs2-match-2399511",
            "mapId": "cs2-match-2399511-map-1",
            "round": 1,
            "type": "purchase",
            "tick": 600,
            "seconds": 9.375,
            "actor": {
              "…": "…"
            },
            "target": {
              "…": "…"
            },
            "assister": {
              "…": "…"
            },
            "weapon": "Kevlar Vest",
            "headshot": false,
            "tradeKill": false,
            "damage": null,
            "confidence": "high",
            "lastSyncedAt": "2026-10-26T21:03:39.836Z",
            "details": {
              "…": "…"
            }
          },
          {
            "id": "549807d0-8f33-4dcc-a10a-b7afad6d7db1",
            "matchId": "cs2-match-2399511",
            "mapId": "cs2-match-2399511-map-1",
            "round": 1,
            "type": "purchase",
            "tick": 632,
            "seconds": 9.875,
            "actor": {
              "…": "…"
            },
            "target": {
              "…": "…"
            },
            "assister": {
              "…": "…"
            },
            "weapon": "Smoke Grenade",
            "headshot": false,
            "tradeKill": false,
            "damage": null,
            "confidence": "high",
            "lastSyncedAt": "2026-10-26T21:03:39.836Z",
            "details": {
              "…": "…"
            }
          }
        ],
        "confidence": "high",
        "lastSyncedAt": "2026-10-26T21:03:49.370Z"
      },
      {
        "id": "aa909fd9-68dd-4bcb-b8c6-9e8413bff6e9",
        "matchId": "cs2-match-2399511",
        "mapId": "cs2-match-2399511-map-1",
        "round": 2,
        "startTick": 8736,
        "endTick": 17228,
        "durationTicks": 8492,
        "winnerSide": "T",
        "winnerTeamId": "cs2-team-13759",
        "winnerTeamName": "mellren",
        "winReason": "bomb_exploded",
        "firstKillPlayerId": "cs2-player-25735",
        "firstKillPlayerName": "mdl",
        "firstKillTeamId": "cs2-team-13759",
        "firstDeathPlayerId": "cs2-player-26683",
        "firstDeathPlayerName": "stratefly",
        "firstDeathTeamId": "cs2-team-14079",
        "tKills": 4,
        "ctKills": 2,
        "killCount": 6,
        "events": [
          {
            "id": "7e230903-a9d3-4e9b-bf39-e000f927e4fd",
            "matchId": "cs2-match-2399511",
            "mapId": "c
…

Map events

GET/api/v1/cs2/games/{gameId}/events

Kills, utility, bomb and round events for one map, where demo data exists.

Query parameters

ParameterTypeDescription
gameId (path)*stringGame (map) id from /cs2/matches/{matchId}/games.
limitintegerRows to return. Maximum 5000; larger values are reduced to 5000.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/games/GAME_ID/events" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "id": "270957a5-0d96-456b-a7ba-9d7cecad014f",
      "matchId": "cs2-match-2399511",
      "mapId": "cs2-match-2399511-map-1",
      "round": 1,
      "type": "purchase",
      "tick": 600,
      "seconds": 9.375,
      "actor": {
        "playerId": "cs2-player-13980",
        "playerName": "lollipop21k",
        "teamId": "cs2-team-13759",
        "teamName": "mellren",
        "side": "T"
      },
      "target": {
        "playerId": null,
        "playerName": null,
        "teamId": null,
        "teamName": null,
        "side": null
      },
      "assister": {
        "playerId": null,
        "playerName": null,
        "teamId": null,
        "teamName": null
      },
      "weapon": "Kevlar Vest",
      "headshot": false,
      "tradeKill": false,
      "damage": null,
      "confidence": "high",
      "lastSyncedAt": "2026-10-26T21:03:39.836Z",
      "details": {
        "itemName": "Kevlar Vest",
        "cost": 650,
        "wasSold": false,
        "inventory": [
          "Butterfly Knife",
          "Glock-18"
        ],
        "equipmentValue": 850,
        "cashSpentThisRound": 650,
        "buyType": "eco_or_pistol",
        "hasHelmet": false,
        "hasDefuser": false
      }
    },
    {
      "id": "549807d0-8f33-4dcc-a10a-b7afad6d7db1",
      "matchId": "cs2-match-2399511",
      "mapId": "cs2-match-2399511-map-1",
      "round": 1,
      "type": "purchase",
      "tick": 632,
      "seconds": 9.875,
      "actor": {
        "playerId": "cs2-player-25735",
        "playerName": "mdl",
        "teamId": "cs2-team-13759",
        "teamName": "mellren",
        "side": "T"
      },
      "target": {
        "playerId": null,
        "playerName": null,
        "teamId": null,
        "teamName": null,
        "side": null
      },
      "assister": {
        "playerId": null,
        "playerName": null,
        "teamId": null,
        "teamName": null
      },
      "weapon": "Smoke Grenade",
      "headshot": false,
      "tradeKill": false,
      "damage": null,
      "confidence": "high",
      "lastSyncedAt": "2026-10-26T21:03:39.836Z",
      "details": {
        "itemName": "Smoke Grenade",
        "cost": 300,
        "wasSold": false,
        "inventory": [
          "Karambit",
          "Glock-18"
        ],
        "equipmentValue": 500,
        "cashSpentThisRound": 300,
        "buyType": "eco_or_pistol",
        "hasHelmet": false,
        "hasDefuser": false
      }
    }
  ],
  "meta": {
    "count": 2,
    "dataAvailable": true,
    "dataScope": "kill_damage_utility_purchase_equipment_events",
    "eventTypesAvailable": [
      "kill",
      "damage"
    ],
    "unavailableEventTypes": [],
    "limit": 2,
    "total": 2,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Game details

GET/api/v1/cs2/games/{gameId}

One map (game) of a match with score, halves and winner.

Query parameters

ParameterTypeDescription
gameId (path)*stringGame (map) id from /cs2/matches/{matchId}/games.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/games/GAME_ID" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": {
    "id": "cs2-match-2399511-map-1",
    "entityType": "cs2_game",
    "matchId": "cs2-match-2399511",
    "mapNumber": 1,
    "map": "Ancient",
    "pickTeamId": null,
    "winnerTeamId": "cs2-team-14079",
    "score": {
      "team1": 13,
      "team2": 7
    },
    "halfScores": null,
    "team1Halves": null,
    "team2Halves": null,
    "overtime": null,
    "durationRounds": 20,
    "duration": {
      "rounds": 20,
      "source": "stored"
    },
    "status": "completed",
    "resultType": "played",
    "resultStatus": "completed",
    "isForfeit": false,
    "statsEligible": true,
    "unavailableReason": null,
    "playerStatsAvailable": true,
    "playerStats": [
      {
        "playerId": "cs2-player-21439",
        "playerName": "ICY",
        "teamId": "cs2-team-14079",
        "teamName": "6yuBoJlbl",
        "kills": 19,
        "deaths": 8,
        "assists": 4,
        "plusMinus": 11,
        "adr": 93.3,
        "kast": 1,
        "rating": 1.48,
        "ratingVersion": "cito_rating_1",
        "headshots": 9,
        "headshotPercent": 0.474,
        "openingKills": 3,
        "openingDeaths": 0,
        "ratingProfile": {
          "rating": 1.48,
          "ratingVersion": "cito_rating_1",
          "components": {
            "killsPerMap": 19,
            "adr": 93.3,
            "kast": 1,
            "killsPlusAssistsPerDeath": 2.875
          },
          "openingDuels": {
            "openingKills": 3,
            "openingDeaths": 0,
            "successRate": 1
          },
          "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-26T23:00:08.365Z"
      },
      {
        "playerId": "cs2-player-26060",
        "playerName": "Maksilvl",
        "teamId": "cs2-team-13759",
        "teamName": "mellren",
        "kills": 13,
        "deaths": 17,
        "assists": 4,
        "plusMinus": -4,
        "adr": 64.4,
        "kast": 0.7,
        "rating": 0.82,
        "ratingVersion": "cito_rating_1",
        "headshots": 7,
        "headshotPercent": 0.538,
        "openingKills": 2,
        "openingDeaths": 0,
        "ratingProfile": {
          "rating": 0.82,
          "ratingVersion": "cito_rating_1",
          "components": {
            "killsPerMap": 13,
            "adr": 64.4,
            "kast": 0.7,
            "killsPlusAssistsPerDeath": 1
          },
          "openingDuels": {
            "openingKills": 2,
            "openingDeaths": 0,
            "successRate": 1
          },
          "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-26T23:00:09.044Z"
      }
    ],
    "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

GET/api/v1/cs2/maps

Every competitive map with its name and image.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/maps" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "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

GET/api/v1/cs2/map-pool
GET/api/v1/cs2/maps/pool

The maps in the current competitive pool. These routes are equivalent; use whichever reads best.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/map-pool" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_active_duty_map_pool",
    "asOf": "2026-10-26",
    "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.

bash
curl "https://api.citoapi.com/api/v1/cs2/map-pool" \
  -H "x-api-key: YOUR_API_KEY"