Live player stats API.
Kills, deaths, assists — mid-map.
Quick answer: Yes — KashRock's live player stats API returns nickname, side, kills, deaths, assists, and an alive flag for every player on the map, updated in under 2 seconds on Builder+.
What the live feed carries
One boxscore call returns the full player board for a map — both teams, ten rows, with the stats a scoreboard actually renders. Player rows are keyed by canonical kr_pl_* ids, so a live row joins straight onto player profiles, gamelogs, and props.
Live endpoints
The boxscore is the scoreboard: one call per game, everything on it. Events and frame endpoints sit beside it when you need play-by-play or economy detail.
| 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
Every field on the player row, on a real capture — Vitality vs magic, map 1 Mirage:
| Field | What it is |
|---|---|
| nickname | The player's in-game name for that match |
| side | blue or red (CS2), or the sport-native team side |
| kills | Kills so far on the current map |
| deaths | Deaths so far on the current map |
| assists | Assists so far on the current map |
| headshots | Headshot kills so far on the current map |
| adr | Average damage per round on the current map |
| alive | Whether the player is alive right now, this round |
{
"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
Player stats move at the same SLA as the rest of the live board: live player kills, deaths, and assists updated in under 2 seconds on Builder and Pro. GET /v6/esports/live/health shows the measured p50 and p95 for every live game.
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.