How to Get Live CS2 Match Data (KDA, Events, Stats) in Real Time

Quick answer: KashRock returns live CS2 KDA and match events on REST, SDK, and MCP in under 2 seconds. Here is how to pull your first live event.

What is live CS2 match data?

Live CS2 match data is per-player kills, deaths, and assists plus round and bomb state while the map is still being played. It is not the schedule of series marked current, and it is not a finished-map boxscore. We searched for one API that shipped that board with KashRock IDs and a 2-second SLA, did not find it, and built GET /v6/esports/cs2/live/games, /boxscore, and /events. Sandbox keys call those CS2 REST paths today.

Live CS2 data points

Data pointWhat it measuresWho it's forWhere it lives
Live KDA boardCS2 maps with an in-game KDA feedScoreboard appsGET /v6/esports/cs2/live/games
Player KDAkills, deaths, assists, alive, player_idOverlays and live modelsGET /v6/esports/cs2/live/{kr_match_id}/boxscore → players[]
Round + bombmap, round, clock, bomb_planted, money, armor, weaponHUD and economy trackersboxscore.map_name, board.bomb_planted, player.money
Live eventsKILL, ROUND_WIN, BOMB_PLANT, BOMB_DEFUSE, ROUND_STARTPlay-by-play feedsGET /v6/esports/cs2/live/{kr_match_id}/events

How to pull your first live CS2 event — step by step

  1. Create a Sandbox keyOpen /pricing, start Sandbox, copy the key. Sandbox is $0: 500 CS2 requests every UTC day and 20 requests/minute. No card.
  2. Install the Python SDKpip install kashrock installs PyPI 0.1.1. The live list method is live_games.
  3. List the live KDA boardkr = KashRock("YOUR_API_KEY"); games = kr.live_games("cs2"). That is GET /v6/esports/cs2/live/games. Copy kr_match_id from games[].
  4. Pull the live boxscoreGET /v6/esports/cs2/live/{kr_match_id}/boxscore. Read players[].kills, deaths, assists, alive, and the round clock.
  5. Pull live events on the same idGET /v6/esports/cs2/live/{kr_match_id}/events. Event types are KILL, ROUND_WIN, BOMB_PLANT, BOMB_DEFUSE, and ROUND_START.
  6. Upgrade only if you need pushBuilder or Pro: wss://kashrock.up.railway.app/v6/esports/live/ws then subscribe. Sandbox and Hobby are rejected at the WebSocket handshake.
from kashrock import KashRock

kr = KashRock("YOUR_API_KEY")
print(kr.live_games("cs2"))

Vitality vs magic, map 1 Mirage, 17 Sep 2026. Same KashRock ids and KDA fields as live REST.

GET /v6/esports/cs2/live/games
{
  "sport": "cs2",
  "total": 1,
  "games": [
    {
      "game_id": "kr_cs2_vitality-vs-magic-ru-17-09-2026",
      "match_id": "kr_cs2_vitality-vs-magic-ru-17-09-2026",
      "number": 1,
      "league": "StarLadder StarSeries Fall 2026",
      "blue_code": "Vitality",
      "red_code": "magic",
      "start_time": "2026-09-17T13:10:00.000+00:00",
      "blue_team_id": "kr_tm_e9ac39acbe73",
      "red_team_id": "kr_tm_f1dece8bbb85"
    }
  ]
}
GET /v6/esports/cs2/live/kr_cs2_vitality-vs-magic-ru-17-09-2026/boxscore
{
  "sport": "cs2",
  "game_id": "kr_cs2_vitality-vs-magic-ru-17-09-2026",
  "boxscore": {
    "map_name": "Mirage",
    "map_number": 1,
    "round": 19,
    "blue": {
      "kills": 82,
      "map_score": 13,
      "series_score": 1
    },
    "red": {
      "kills": 52,
      "map_score": 6,
      "series_score": 0
    },
    "players": [
      {
        "player_id": "kr_pl_5ea13ced730e",
        "nickname": "ropz",
        "side": "blue",
        "kills": 23,
        "deaths": 10,
        "assists": 3,
        "headshots": 12,
        "adr": 114.19999694824219
      },
      {
        "player_id": "kr_pl_a9020751a3a8",
        "nickname": "apEX",
        "side": "blue",
        "kills": 22,
        "deaths": 11,
        "assists": 7,
        "headshots": 10,
        "adr": 133.1999969482422
      },
      {
        "player_id": "kr_pl_fd87dbd9d1c1",
        "nickname": "flameZ",
        "side": "blue",
        "kills": 16,
        "deaths": 13,
        "assists": 8,
        "headshots": 7,
        "adr": 89.5
      },
      {
        "player_id": "kr_pl_4764e4b8d73a",
        "nickname": "ZywOo",
        "side": "blue",
        "kills": 11,
        "deaths": 9,
        "assists": 7,
        "headshots": 3,
        "adr": 57.400001525878906
      },
      {
        "player_id": "kr_pl_36c966f11204",
        "nickname": "mezii",
        "side": "blue",
        "kills": 10,
        "deaths": 9,
        "assists": 5,
        "headshots": 8,
        "adr": 54.5
      },
      {
        "player_id": "kr_pl_2cc82eb14944",
        "nickname": "MaSvAl",
        "side": "red",
        "kills": 17,
        "deaths": 15,
        "assists": 1,
        "headshots": 13,
        "adr": 87.9000015258789
      },
      {
        "player_id": "kr_pl_5e5e69089419",
        "nickname": "sFade8",
        "side": "red",
        "kills": 11,
        "deaths": 17,
        "assists": 4,
        "headshots": 6,
        "adr": 67.0999984741211
      },
      {
        "player_id": "kr_pl_64ea67e35230",
        "nickname": "eksiver",
        "side": "red",
        "kills": 10,
        "deaths": 16,
        "assists": 0,
        "headshots": 2,
        "adr": 45.20000076293945
      },
      {
        "player_id": "kr_pl_218807e67435",
        "nickname": "mo0n",
        "side": "red",
        "kills": 9,
        "deaths": 15,
        "assists": 6,
        "headshots": 4,
        "adr": 51.099998474121094
      },
      {
        "player_id": "kr_pl_630e7229e428",
        "nickname": "tENZY",
        "side": "red",
        "kills": 5,
        "deaths": 19,
        "assists": 7,
        "headshots": 5,
        "adr": 48.900001525878906
      }
    ]
  }
}

Live CS2 REST vs live CS2 WebSocket

 REST live CS2WebSocket live CS2
First callkr.live_games("cs2") or GET /live/gamesConnect, then {"op":"subscribe","sport":"cs2"}
PlanSandbox CS2 REST (500 req/UTC day, 20 req/min)Builder or Pro; Sandbox rejected at handshake
LatencyLive player kills, deaths, and assists updated in under 2 secondsPush 2s after Redis write
Idkr_match_id from live/gamesSame kr_match_id, or * for the sport

FAQ

How do I get live CS2 KDA in real time?

Call GET /v6/esports/cs2/live/games (SDK: live_games("cs2")), then /live/{kr_match_id}/boxscore and /events. Live player kills, deaths, and assists updated in under 2 seconds.

Which sports have live in-game stats on KashRock?

Sandbox live REST is CS2 only. Other sport paths on a Sandbox key return 403. Live WebSocket is Builder or Pro.

What is the live CS2 data latency?

GET /v6/esports/live/health returns scoreboard_sla_seconds: 2. Live player kills, deaths, and assists updated in under 2 seconds.

What are the KashRock free tier limits for live CS2 data?

Sandbox: 500 CS2 requests per UTC day, 20 requests/minute, live REST games/boxscore/events. Live odds and the WebSocket stay on Builder or Pro.

Last updated: 17 September 2026. Latency and plan limits from GET /v6/esports/live/health (scoreboard_sla_seconds 2) and the Sandbox plan (500 CS2 requests/UTC day, 20 req/min). JSON below is map 1 Mirage from kr_cs2_vitality-vs-magic-ru-17-09-2026.

SDK: SDK Docs. HTTP: Live Endpoint. Limits: Free Tier. Key: Pricing.