How to Get Live CS2 Match Data (KDA & Events)

Published · by KashRock

Quick answer: KashRock returns live CS2 KDA and match events on REST, SDK, and MCP — under 2 seconds on Builder/Pro, 30-60s delayed on the free Sandbox key. 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 key — Open Pricing, start Sandbox, copy the key. Sandbox is $0: 500 requests every UTC day across every sport and 20 requests/minute. No card.
  2. Install the Python SDK — pip install kashrock installs PyPI 0.1.1. The live list method is live_games.
  3. List the live KDA board — kr = 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 boxscore — GET /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 id — GET /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 push — Builder 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 REST, every sport (500 req/UTC day, 20 req/min)Builder or Pro; Sandbox rejected at handshake
Latency30-60s on Sandbox REST; Builder/Pro REST is 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. Sandbox REST is 30-60s delayed; on Builder or Pro, live player kills, deaths, and assists updated in under 2 seconds.

Which sports have live in-game stats on KashRock?

Sandbox live REST works on every sport, delayed 30–60 seconds. Live odds and the WebSocket are Builder or Pro.

What is the live CS2 data latency?

GET /v6/esports/live/health returns the measured latency for every live game (p50 and p95, from the source's frame time to our WebSocket publish). Sandbox REST stays 30-60s delayed; live player kills, deaths, and assists updated in under 2 seconds on Builder/Pro.

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

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

Last updated: 17 September 2026. Measured latency from GET /v6/esports/live/health (p50 and p95 per live game); plan limits from the Sandbox plan (500 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.