Real-time esports data.
Live scores, rounds, and player boards.
Quick answer: Yes — KashRock streams real-time esports data: live match state, map scores, and per-player K/D/A over REST and WebSocket, no scraping required.
What the live feed carries
Real-time here means in-match: the round that is being played right now, not last night's result. The feed carries live game lists, per-map scores, the round clock, per-player K/D/A, and discrete events as they happen.
- —Live game list with league, teams, and start time
- —Map score, series score, round number, and round phase
- —Per-player kills, deaths, assists, headshots, ADR, alive
- —Discrete events — kills, round wins, bomb plants and defuses
Live endpoints
Poll REST while you build, then subscribe on WebSocket when you need the numbers the moment they write. Same ids, same payload shape, no re-mapping.
| Endpoint | What it returns | Key param |
|---|---|---|
| GET /v6/esports/{sport}/live/games | Every game currently on the live board | sport |
| GET /v6/esports/{sport}/live/{game_id}/boxscore | Per-player K/D/A plus map, round, and clock | game_id (kr_match_id) |
| GET /v6/esports/{sport}/live/{game_id}/frame | Round phase, economy, and board state | game_id |
| GET /v6/esports/{sport}/live/{game_id}/events | KILL, ROUND_WIN, BOMB_PLANT, BOMB_DEFUSE, ROUND_START | game_id |
| WS /v6/esports/live/ws | Push updates under 2 seconds after Redis write — Builder and Pro only | subscribe by sport or kr_match_id |
| GET /v6/esports/live/health | Measured p50/p95 latency per live game | none |
A real live boxscore
A live boxscore mid-map: Vitality vs magic on Mirage, round 19. The players array is the scoreboard — ten rows of K/D/A that update as rounds close.
{
"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
}
]
}
}Vitality vs magic, map 1 Mirage, 17 Sep 2026. Same KashRock ids and KDA fields as live REST.
Which sports publish live boards
Live K/D/A comes from in-game feeds on tournament matches. Where a title has no feed wired, the board stays empty — KashRock does not invent stats.
| Title | Live status | What the board carries |
|---|---|---|
| CS2 | Live | Kills, deaths, assists, headshots, ADR per map |
| Valorant | Live | K/D/A per map on tournament games |
| League of Legends | Live | K/D/A per map on tournament games |
| Dota 2 | Live | K/D/A per map on tournament games |
| Rainbow Six | Live | K/D/A per map on tournament games |
| Call of Duty | Live | K/D/A per map on tournament games |
| Deadlock | Live | K/D/A per map on tournament games |
| Mobile Legends | Waiting on feed | Live boards stay empty until a feed is wired |
How the latency SLA is enforced
Push updates under 2 seconds after Redis write. On REST, Builder and Pro read the same real-time board in under 2 seconds; Sandbox and Hobby are served delayed snapshots —live scores, 30-60 second delay and live scores, 5-second delay respectively. The health endpoint publishes the measured p50/p95 per game so you can watch the pipeline instead of trusting it.
Speed by plan
Live speed is a plan feature, not a different pipeline. Every tier reads the same Redis boards — cheaper plans are served a genuinely older snapshot instead of a relabeled real-time read.
| Plan | Price | Live speed | Monthly requests |
|---|---|---|---|
| Sandbox | $0 | Live scores, 30-60 second delay on REST | 500 requests / UTC day |
| Hobby | $29 | Live scores, 5-second delay on REST | 2,160,000 requests / month |
| Builder | $99 | Live player kills, deaths, and assists updated in under 2 seconds + WebSocket push | 4,320,000 requests / month |
| Pro | $199 | Live player kills, deaths, and assists updated in under 2 seconds + WebSocket push | 10,800,000 requests / month |
Start in minutes
- —Create a free Sandbox key on Pricing — $0, no card, 500 requests every UTC day
- —List what is live:
GET /v6/esports/{sport}/live/gamesand copy thekr_match_idoff a game - —Pull the board:
GET /v6/esports/{sport}/live/{game_id}/boxscore - —Upgrade to Builder when you need real-time (no delay) or WebSocket push — Sandbox and Hobby are rejected at the WS handshake
If you need a normalized feed instead of another UI wrapper, the Esports API exposes live boards, schedules, and history on one schema — with the IDs and outcome patterns that keep backtests and grading honest. Start free on Sandbox, or see published pricing.