Docs/CS2 API/CS2 Live Scores API

CS2 Live Scores API

Everything about matches in progress: the live list, per-match state and scoreboard, rounds, kill events, live player stats, and the push stream so you do not have to poll.

11 endpoints in this section. Authenticate with the x-api-key header; every response is { success, data, meta }. Other sections: Matches, Maps & rounds, Rankings, Teams, Players, Events, Stats & leaderboards, Skins, Transfers, Search & reference.

Live update stream (SSE)

GET/api/v1/cs2/live/stream

Server-Sent Events stream of live match updates, on every plan. Keep the connection open; each `cs2.live.update` event carries the changed match. Pass `matchId` to follow one match. Events: `ready` (sent first; carries `delay_seconds` and `billing`), `cs2.live.update`, `ping` every 15 seconds, and `error` just before the server closes the stream. **Billing.** An open stream counts toward your monthly quota like polling: one request when it connects, then one request for every 15 seconds it stays open (the same as polling `/cs2/live` every 15 seconds; 5,760 requests a day if held open around the clock). When the quota runs out the stream sends an `error` event with code `RATE_LIMIT_EXCEEDED` and closes; connecting with no quota left returns 429. **Delay.** Free and Starter plans receive every update 60 seconds late, the same delay as the polled live endpoints. Other plans are real-time. Room-based WebSockets (Scale and Enterprise, or the Live WebSockets add-on): `wss://api.citoapi.com/api/v1/cs2/live/ws`.

Query parameters

ParameterTypeDescription
matchIdstringMatch id.

Example

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

Live socket details

GET/api/v1/cs2/live/{matchId}/socket

Connection details for subscribing to one live match over the live stream.

Query parameters

ParameterTypeDescription
matchId (path)*stringMatch id, e.g. cs2-match-2398421.

Example

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

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_live_transport",
    "matchId": "cs2-match-2398068",
    "transports": {
      "websocket": {
        "url": "wss://api.citoapi.com/api/v1/cs2/live/ws?matchId=cs2-match-2398068",
        "auth": "x-api-key header, Authorization: Bearer, or ?apiKey=",
        "subscribe": {
          "action": "subscribe",
          "rooms": [
            "match:cs2-match-2398068"
          ]
        },
        "allLiveMatches": {
          "action": "subscribe",
          "rooms": [
            "all"
          ]
        },
        "messages": [
          "ready",
          "cs2.live.snapshot (on subscribe)"
        ],
        "plans": "Scale / Enterprise, or the Live WebSockets add-on"
      },
      "sse": {
        "url": "/api/v1/cs2/live/stream?matchId=cs2-match-2398068",
        "note": "Same events as the WebSocket. Connect with Accept: text/event-stream. Available on every plan.",
        "billing": "Counts like polling: one request at connect, then one for every 15 seconds the stream stays open. When the monthly qu…",
        "delay": "Free and Starter plans receive every update 60 seconds late, like the polled live endpoints. Other plans are real-time."
      }
    },
    "v2Shape": "Append ?shape=v2 on REST live endpoints or send Accept: application/vnd.cito.cs2.v2+json"
  },
  "meta": {}
}

Live scoreboard

GET/api/v1/cs2/live/{matchId}/scoreboard

Series score, current map and round, the round score (`game.score`, per team `mapScore`), and per-player kills, deaths, money and equipment for a live match.

Query parameters

ParameterTypeDescription
matchId (path)*stringMatch id, e.g. cs2-match-2398421.
shapestringFilter by shape.

Example

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

Response

json
{
  "success": true,
  "data": {
    "matchId": "cs2-match-2398520",
    "status": "live",
    "bestOf": null,
    "currentGame": 3,
    "seriesScore": {
      "teamA": 1,
      "teamB": 1
    },
    "game": {
      "id": "cs2-match-2398520_de_dust2",
      "map": "de_dust2",
      "round": 1,
      "phase": "live",
      "clockSeconds": null,
      "bomb": null,
      "score": {
        "ct": 0,
        "t": 0
      },
      "sides": {
        "ctTeamId": "cs2-team-11955",
        "tTeamId": "cs2-team-12164"
      }
    },
    "teams": [
      {
        "id": "cs2-team-11955",
        "name": "LAG",
        "side": "CT",
        "score": 1,
        "mapScore": 0,
        "playersAlive": 4,
        "equipmentValue": null,
        "money": 13100,
        "timeoutsRemaining": null
      },
      {
        "id": "cs2-team-12164",
        "name": "Zomblers",
        "side": "T",
        "score": 1,
        "mapScore": 0,
        "playersAlive": 1,
        "equipmentValue": null,
        "money": 14350,
        "timeoutsRemaining": null
      }
    ],
    "players": [
      {
        "id": "cs2-player-20273",
        "nickname": "CAJUN",
        "teamId": "cs2-team-12164",
        "side": "T",
        "alive": false,
        "hp": 0,
        "armor": null,
        "helmet": false,
        "money": 3250,
        "weapon": null,
        "kills": 1,
        "assists": 0,
        "deaths": 4,
        "adr": 100,
        "kast": null,
        "rating": null
      },
      {
        "id": "cs2-player-23410",
        "nickname": "CoolComs",
        "teamId": "cs2-team-12164",
        "side": "T",
        "alive": true,
        "hp": 100,
        "armor": null,
        "helmet": false,
        "money": 3550,
        "weapon": null,
        "kills": 0,
        "assists": 0,
        "deaths": 0,
        "adr": 0,
        "kast": null,
        "rating": null
      }
    ],
    "lastEvent": {
      "id": null,
      "type": "BombPlanted",
      "round": 1,
      "clockSeconds": null,
      "killerPlayerId": null,
      "victimPlayerId": null,
      "weapon": null,
      "headshot": null,
      "throughSmoke": null
    },
    "meta": {
      "updatedAt": "2026-09-23T03:14:58.810Z",
      "latencyMs": null,
      "coverage": "realtime",
      "source": "live",
      "unavailableFields": [
        "game.clockSeconds"
      ]
    }
  },
  "meta": {}
}

Live rounds

GET/api/v1/cs2/live/{matchId}/rounds

Round-by-round results so far in a live match: winner, side and how the round ended.

Query parameters

ParameterTypeDescription
matchId (path)*stringMatch id, e.g. cs2-match-2398421.

Example

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

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_live_rounds",
    "matchId": "cs2-match-2398520",
    "rounds": [
      {
        "eventId": "b9b7ddfa1ac438bc372af0aecee74d9e",
        "eventType": "RoundEnd",
        "winner": "CT",
        "winType": "CTs_Win",
        "terroristScore": 9,
        "counterTerroristScore": 9,
        "payload": {
          "counterTerroristScore": 9,
          "terroristScore": 9,
          "winner": "CT",
          "winType": "CTs_Win"
        },
        "webhookEligible": true,
        "observedAt": "2026-09-23T02:49:58.502Z"
      },
      {
        "eventId": "402ca7aa8bca01623a10d2377fa2748d",
        "eventType": "RoundEnd",
        "winner": "CT",
        "winType": "CTs_Win",
        "terroristScore": 9,
        "counterTerroristScore": 8,
        "payload": {
          "counterTerroristScore": 8,
          "terroristScore": 9,
          "winner": "CT",
          "winType": "CTs_Win"
        },
        "webhookEligible": true,
        "observedAt": "2026-09-23T02:49:58.502Z"
      }
    ],
    "currentRound": 1
  },
  "meta": {
    "count": 44,
    "limit": 44,
    "total": 44,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Live events

GET/api/v1/cs2/live/{matchId}/events

Kills, bomb plants and defuses, and round ends recorded during a live match.

Query parameters

ParameterTypeDescription
matchId (path)*stringMatch id, e.g. cs2-match-2398421.

Example

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

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_live_events",
    "matchId": "cs2-match-2398520",
    "events": [
      {
        "eventId": "8aedca15ed03f6cbf683ce5d92ae430e",
        "eventType": "BombPlanted",
        "playerName": "Zoker",
        "playerNick": "Zoker",
        "ctPlayers": 4,
        "tPlayers": 4,
        "bombSite": "A",
        "payload": {
          "playerName": "Zoker",
          "playerNick": "Zoker",
          "ctPlayers": 4,
          "tPlayers": 4,
          "bombSite": "A"
        },
        "source": "live",
        "webhookEligible": true,
        "observedAt": "2026-09-23T02:49:58.502Z"
      },
      {
        "eventId": "ed4ddb86ad56fd364e84cd32ab4c0cbf",
        "eventType": "BombPlanted",
        "playerName": "CoolComs",
        "playerNick": "CoolComs",
        "ctPlayers": 4,
        "tPlayers": 5,
        "bombSite": "B",
        "payload": {
          "playerName": "CoolComs",
          "playerNick": "CoolComs",
          "ctPlayers": 4,
          "tPlayers": 5,
          "bombSite": "B"
        },
        "source": "live",
        "webhookEligible": true,
        "observedAt": "2026-09-23T02:49:58.502Z"
      }
    ]
  },
  "meta": {
    "count": 70,
    "limit": 70,
    "total": 70,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Live player stats

GET/api/v1/cs2/live/{matchId}/player-stats

Running per-player stats for a live match.

Query parameters

ParameterTypeDescription
matchId (path)*stringMatch id, e.g. cs2-match-2398421.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/live/MATCH_ID/player-stats" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_live_player_stats",
    "matchId": "cs2-match-2398520",
    "status": "live",
    "isCurrent": true,
    "dataAvailable": true,
    "unavailableReason": null,
    "source": "live",
    "capturedAt": "2026-09-23T03:15:13.832Z",
    "players": [
      {
        "playerId": "cs2-player-20273",
        "name": "CAJUN",
        "nick": "CAJUN",
        "side": "T",
        "steamId": "1:1:40089995",
        "alive": false,
        "hp": 57,
        "money": 3250,
        "kills": 1,
        "assists": 0,
        "deaths": 4,
        "adr": 100,
        "weapon": null,
        "weaponIconUrl": null,
        "hasDefuseKit": false,
        "kevlar": false,
        "helmet": false
      },
      {
        "playerId": "cs2-player-23410",
        "name": "CoolComs",
        "nick": "CoolComs",
        "side": "T",
        "steamId": "1:1:188019378",
        "alive": true,
        "hp": 100,
        "money": 3550,
        "kills": 0,
        "assists": 0,
        "deaths": 0,
        "adr": 0,
        "weapon": null,
        "weaponIconUrl": null,
        "hasDefuseKit": false,
        "kevlar": false,
        "helmet": false
      }
    ],
    "lastVerified": "2026-09-23T03:15:14.115Z"
  },
  "meta": {
    "count": 9,
    "dataAvailable": true,
    "confirmationMaxAgeMs": 45000,
    "limit": 9,
    "total": 9,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Live maps

GET/api/v1/cs2/live/{matchId}/maps

Map list for a live match with per-map score and status.

Query parameters

ParameterTypeDescription
matchId (path)*stringMatch id, e.g. cs2-match-2398421.

Example

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

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_map",
      "id": "cs2-match-2398520-map-1",
      "matchId": "cs2-match-2398520",
      "mapNumber": 1,
      "mapName": "Mirage",
      "status": "completed",
      "team1Score": 13,
      "team2Score": 8,
      "team1Halves": [
        7,
        6
      ],
      "team2Halves": [
        5,
        3
      ],
      "winnerTeamId": "cs2-team-11955",
      "durationRounds": 21,
      "lastSyncedAt": "2026-09-23T03:14:03.598Z",
      "playerStats": [
        {
          "id": "live-source-match-2398520-map-1-Bwills",
          "mapId": "cs2-match-2398520-map-1",
          "matchId": "cs2-match-2398520",
          "playerId": "cs2-player-16647",
          "playerName": "Bwills",
          "teamId": "cs2-team-11955",
          "teamName": "LAG",
          "kills": 9,
          "deaths": 17,
          "assists": 3,
          "plusMinus": -8,
          "adr": null,
          "kast": null,
          "rating": 0.5,
          "ratingVersion": "source_rating_3_0",
          "headshots": 4,
          "headshotPercent": null,
          "firstKills": 0,
          "firstDeaths": 3,
          "source": "live",
          "lastSyncedAt": "2026-09-23T03:04:10.092Z",
          "mapNameCanonical": null,
          "imageUrl": null,
          "mapImageUrl": null,
          "…": "7 more fields"
        },
        {
          "id": "live-source-match-2398520-map-1-CAJUN",
          "mapId": "cs2-match-2398520-map-1",
          "matchId": "cs2-match-2398520",
          "playerId": "cs2-player-20273",
          "playerName": "CAJUN",
          "teamId": "cs2-team-12164",
          "teamName": "Zomblers",
          "kills": 11,
          "deaths": 19,
          "assists": 8,
          "plusMinus": -8,
          "adr": null,
          "kast": null,
          "rating": 0.73,
          "ratingVersion": "source_rating_3_0",
          "headshots": 7,
          "headshotPercent": null,
          "firstKills": 2,
          "firstDeaths": 2,
          "source": "live",
          "lastSyncedAt": "2026-09-23T03:04:10.832Z",
          "mapNameCanonical": null,
          "imageUrl": null,
          "mapImageUrl": null,
          "…": "7 more fields"
        }
      ],
      "bombEvents": [],
      "bombStats": [],
      "weaponAggregates": [],
      "mapImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/mirage.png",
      "pickTeamId": "cs2-team-12164",
      "objectiveStats": {
        "dataAvailable": false,
        "unavailableReason": "not_yet_indexed",
        "confidence": {
          "plants": "high",
          "defuses": "high",
          "explosions": "high",
          "clutchDefuse": "medium"
        },
        "teamStats": [],
        "roundEvents": []
      },
      "availableSubresources": [
        "player_stats"
      ],
      "unavailableSubresources": [
        "objective_stats"
      ],
      "unavailableFields": {},
      "dataQuality": "partial",
      "…": "12 more fields"
    },
    {
      "entityType": "cs2_map",
      "id": "cs2-match-2398520-map-2",
      "matchId": "cs2-match-2398520",
      "mapNumber": 2,
      "mapName": "Inferno",
      "status": "completed",
      "team1Score": 11,
      "team2Score": 13,
      "team1Halves": [
        6
      ],
      "team2Halves": [
        6
      ],
      "winnerTeamId": "cs2-team-12164",
      "durationRounds": 24,
      "lastSyncedAt": "2026-09-23T03:14:03.631Z",
      "playerStats": [
        {
          "id": "live-source
…

Live snapshots

GET/api/v1/cs2/live/{matchId}/snapshots

Timestamped snapshots of a live match (score, round, players) so the match can be replayed over time. Filter with `from` / `to`.

Query parameters

ParameterTypeDescription
matchId (path)*stringMatch id, e.g. cs2-match-2398421.
fromstringStart of the date range (ISO 8601, UTC).
limitintegerRows to return. Maximum 100; larger values are reduced to 100.
sourcestringRanking to use: omit for Valve Regional Standings, or world for the world ranking filtered to this region.
tostringEnd of the date range (ISO 8601, UTC).

Example

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

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_live_snapshot",
      "snapshotId": "56a8f338-abb9-41ff-b77f-5479dec17966",
      "matchId": "cs2-match-2398520",
      "status": "live",
      "source": "live",
      "capturedAt": "2026-09-23T03:15:13.928Z",
      "teams": {
        "team1Name": "LAG",
        "team2Name": "Zomblers",
        "terroristTeamName": "Zomblers",
        "counterTerroristTeamName": "LAG"
      },
      "score": {
        "team1": 0,
        "team2": 0
      },
      "currentMap": "de_dust2",
      "currentRound": 1,
      "roundTimeSeconds": null,
      "currentScoreCt": 11,
      "currentScoreT": 13,
      "roundTimeLeft": null,
      "bombPlanted": false,
      "players": [
        {
          "playerId": "cs2-player-20273",
          "name": "CAJUN",
          "nick": "CAJUN",
          "side": "T",
          "steamId": "1:1:40089995",
          "alive": false,
          "hp": 57,
          "money": 3250,
          "kills": 1,
          "assists": 0,
          "deaths": 4,
          "adr": 100,
          "weapon": null,
          "weaponIconUrl": null,
          "hasDefuseKit": false,
          "kevlar": false,
          "helmet": false
        },
        {
          "playerId": "cs2-player-23410",
          "name": "CoolComs",
          "nick": "CoolComs",
          "side": "T",
          "steamId": "1:1:188019378",
          "alive": true,
          "hp": 100,
          "money": 3550,
          "kills": 0,
          "assists": 0,
          "deaths": 0,
          "adr": 0,
          "weapon": null,
          "weaponIconUrl": null,
          "hasDefuseKit": false,
          "kevlar": false,
          "helmet": false
        }
      ],
      "liveBombEvents": [
        {
          "eventId": "8aedca15ed03f6cbf683ce5d92ae430e",
          "eventType": "BombPlanted",
          "playerName": "Zoker",
          "playerNick": "Zoker",
          "ctPlayers": 4,
          "tPlayers": 4,
          "bombSite": "A",
          "observedAt": "2026-09-23T02:49:58.502Z"
        },
        {
          "eventId": "ed4ddb86ad56fd364e84cd32ab4c0cbf",
          "eventType": "BombPlanted",
          "playerName": "CoolComs",
          "playerNick": "CoolComs",
          "ctPlayers": 4,
          "tPlayers": 5,
          "bombSite": "B",
          "observedAt": "2026-09-23T02:49:58.502Z"
        }
      ],
      "roundEndEvents": [
        {
          "eventId": "b9b7ddfa1ac438bc372af0aecee74d9e",
          "winnerSide": "CT",
          "winnerSideIcon": "ct",
          "winnerSideIconUrl": "/icons/cs2/ct_win.svg",
          "winType": "CTs_Win",
          "winKind": "elim",
          "winKindIconUrl": "/icons/cs2/ct_win.svg",
          "terroristScore": 9,
          "counterTerroristScore": 9,
          "observedAt": "2026-09-23T02:49:58.502Z"
        },
        {
          "eventId": "402ca7aa8bca01623a10d2377fa2748d",
          "winnerSide": "CT",
          "winnerSideIcon": "ct",
          "winnerSideIconUrl": "/icons/cs2/ct_win.svg",
          "winType": "CTs_Win",
          "winKind": "elim",
          "winKindIconUrl": "/icons/cs2/ct_win.svg",
          "terroristScore": 9,
          "counterTerroristScore": 8,
          "observedAt": "2026-09-23T02:49:58.502Z"
        }
      ]
    },
    {
      "entityType": "cs2_live_snapshot",
      "snapshotId": "4ff63372-5eff-40e2-97ad-eb8ab913adbc",
      "matchId": "cs2-match-2398520",
      "status": "live",
      "source": "live",
      "capturedAt": "2026-09-23
…

Live state

GET/api/v1/cs2/live/{matchId}/state

The latest state of one live match: score, round, round timer, bomb status and players.

Query parameters

ParameterTypeDescription
matchId (path)*stringMatch id, e.g. cs2-match-2398421.

Example

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

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_live_state",
    "matchId": "cs2-match-2398520",
    "status": "live",
    "source": "live",
    "teams": {
      "team1Id": "cs2-team-11955",
      "team1Name": "LAG",
      "team1LogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/297f07ea26dbfe4dc4342ad164a661e2.webp",
      "team1AlternateLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/8bb92ff4ccd53fb7cc88c565b3ddbd92.webp",
      "team1DarkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/8bb92ff4ccd53fb7cc88c565b3ddbd92.webp",
      "team2Id": "cs2-team-12164",
      "team2Name": "Zomblers",
      "team2LogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/f04294231ef12b6d1f708e5ec505209e.webp",
      "team2AlternateLogoUrl": null,
      "team2DarkUiLogoUrl": null
    },
    "score": {
      "team1": 0,
      "team2": 0
    },
    "currentMap": "de_dust2",
    "currentRound": 1,
    "roundTimeSeconds": null,
    "roundTimeLeft": null,
    "currentScoreCt": 11,
    "currentScoreT": 13,
    "bombPlanted": false,
    "players": [
      {
        "playerId": "cs2-player-20273",
        "name": "CAJUN",
        "nick": "CAJUN",
        "side": "T",
        "steamId": "1:1:40089995",
        "alive": false,
        "hp": 57,
        "money": 3250,
        "kills": 1,
        "assists": 0,
        "deaths": 4,
        "adr": 100,
        "weapon": null,
        "weaponIconUrl": null,
        "hasDefuseKit": false,
        "kevlar": false,
        "helmet": false
      },
      {
        "playerId": "cs2-player-23410",
        "name": "CoolComs",
        "nick": "CoolComs",
        "side": "T",
        "steamId": "1:1:188019378",
        "alive": true,
        "hp": 100,
        "money": 3550,
        "kills": 0,
        "assists": 0,
        "deaths": 0,
        "adr": 0,
        "weapon": null,
        "weaponIconUrl": null,
        "hasDefuseKit": false,
        "kevlar": false,
        "helmet": false
      }
    ],
    "liveBombEvents": [
      {
        "eventId": "8aedca15ed03f6cbf683ce5d92ae430e",
        "eventType": "BombPlanted",
        "playerName": "Zoker",
        "playerNick": "Zoker",
        "ctPlayers": 4,
        "tPlayers": 4,
        "bombSite": "A",
        "observedAt": "2026-09-23T02:49:58.502Z"
      },
      {
        "eventId": "ed4ddb86ad56fd364e84cd32ab4c0cbf",
        "eventType": "BombPlanted",
        "playerName": "CoolComs",
        "playerNick": "CoolComs",
        "ctPlayers": 4,
        "tPlayers": 5,
        "bombSite": "B",
        "observedAt": "2026-09-23T02:49:58.502Z"
      }
    ],
    "roundEndEvents": [
      {
        "eventId": "b9b7ddfa1ac438bc372af0aecee74d9e",
        "winnerSide": "CT",
        "winnerSideIcon": "ct",
        "winnerSideIconUrl": "/icons/cs2/ct_win.svg",
        "winType": "CTs_Win",
        "winKind": "elim",
        "winKindIconUrl": "/icons/cs2/ct_win.svg",
        "terroristScore": 9,
        "counterTerroristScore": 9,
        "observedAt": "2026-09-23T02:49:58.502Z"
      },
      {
        "eventId": "402ca7aa8bca01623a10d2377fa2748d",
        "winnerSide": "CT",
        "winnerSideIcon": "ct",
        "winnerSideIconUrl": "/icons/cs2/ct_win.svg",
        "winType": "CTs_Win",
        "winKind": "elim",
        "winKindIconUrl": "/icons/cs2/ct_win.svg",
        "terroristScore": 9,
        "counterTerroristScore": 8,
        "observedAt": "2026-09-23T02:49:58.502Z"
      }
    ],
    "latestSnapsh
…

Live match

GET/api/v1/cs2/live/{matchId}

One live match with teams, series score and live-coverage details.

Query parameters

ParameterTypeDescription
matchId (path)*stringMatch id, e.g. cs2-match-2398421.

Example

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

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_live_match",
    "id": "cs2-match-2398520",
    "matchId": "cs2-match-2398520",
    "status": "live",
    "eventId": "cs2-event-9356",
    "eventName": "ESL Challenger League Season 52 North America Cup 2",
    "eventSlug": "esl-challenger-league-season-52-north-america-cup-2",
    "eventLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/cd79123cf4afe29db63f20edda3125dc.webp",
    "eventImageUrl": null,
    "eventBannerImageUrl": null,
    "event": {
      "eventId": "cs2-event-9356",
      "name": "ESL Challenger League Season 52 North America Cup 2",
      "slug": "esl-challenger-league-season-52-north-america-cup-2",
      "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/cd79123cf4afe29db63f20edda3125dc.webp",
      "imageUrl": null,
      "bannerImageUrl": null
    },
    "bestOf": null,
    "teams": {
      "team1Id": "cs2-team-11955",
      "team1Name": "LAG",
      "team1LogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/297f07ea26dbfe4dc4342ad164a661e2.webp",
      "team1AlternateLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/8bb92ff4ccd53fb7cc88c565b3ddbd92.webp",
      "team1DarkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/8bb92ff4ccd53fb7cc88c565b3ddbd92.webp",
      "team2Id": "cs2-team-12164",
      "team2Name": "Zomblers",
      "team2LogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/f04294231ef12b6d1f708e5ec505209e.webp",
      "team2AlternateLogoUrl": null,
      "team2DarkUiLogoUrl": null
    },
    "score": {
      "team1": 1,
      "team2": 1
    },
    "currentMapScore": {
      "team1": 0,
      "team2": 0
    },
    "team1Id": "cs2-team-11955",
    "team2Id": "cs2-team-12164",
    "team1Name": "LAG",
    "team2Name": "Zomblers",
    "team1Score": 1,
    "team2Score": 1,
    "currentMap": "de_dust2",
    "currentRound": 1,
    "roundTimeSeconds": null,
    "…": "10 more fields"
  },
  "meta": {
    "source": "live",
    "dataAvailable": true
  }
}

Live matches

GET/api/v1/cs2/live
GET/api/v1/cs2/matches/live

Matches in progress now. `score` / `team1Score` / `team2Score` are the series (maps won); the map being played is `currentMapScore`. Use a `matchId` with the `/cs2/live/{matchId}/…` endpoints for round-level detail. These routes are equivalent; use whichever reads best.

Example

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

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_live_match",
      "id": "cs2-match-2398520",
      "matchId": "cs2-match-2398520",
      "status": "live",
      "eventId": "cs2-event-9356",
      "eventName": "ESL Challenger League Season 52 North America Cup 2",
      "eventSlug": "esl-challenger-league-season-52-north-america-cup-2",
      "eventLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/738f1b6567ed5bf2813a2ef99b09ecfd.webp",
      "eventImageUrl": null,
      "eventBannerImageUrl": null,
      "event": {
        "eventId": "cs2-event-9356",
        "name": "ESL Challenger League Season 52 North America Cup 2",
        "slug": "esl-challenger-league-season-52-north-america-cup-2",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/738f1b6567ed5bf2813a2ef99b09ecfd.webp",
        "imageUrl": null,
        "bannerImageUrl": null
      },
      "bestOf": null,
      "teams": {
        "team1Id": "cs2-team-11955",
        "team1Name": "LAG",
        "team1LogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/297f07ea26dbfe4dc4342ad164a661e2.webp",
        "team1AlternateLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/8bb92ff4ccd53fb7cc88c565b3ddbd92.webp",
        "team1DarkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/8bb92ff4ccd53fb7cc88c565b3ddbd92.webp",
        "team2Id": "cs2-team-12164",
        "team2Name": "Zomblers",
        "team2LogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/f04294231ef12b6d1f708e5ec505209e.webp",
        "team2AlternateLogoUrl": null,
        "team2DarkUiLogoUrl": null
      },
      "score": {
        "team1": 1,
        "team2": 1
      },
      "currentMapScore": {
        "team1": 0,
        "team2": 0
      },
      "team1Id": "cs2-team-11955",
      "team2Id": "cs2-team-12164",
      "team1Name": "LAG",
      "team2Name": "Zomblers",
      "team1Score": 1,
      "team2Score": 1,
      "currentMap": "de_dust2",
      "currentRound": 1,
      "roundTimeSeconds": null,
      "…": "10 more fields"
    }
  ],
  "meta": {
    "count": 1,
    "source": "live",
    "filteredUnconfirmedLive": 0,
    "confirmationMaxAgeMs": 45000,
    "limit": 1,
    "total": 1,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Try the CS2 Live Scores 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/live" \
  -H "x-api-key: YOUR_API_KEY"