Matches & fixtures
Upcoming, live, and finished games. Fixtures is the full schedule board. Matches is the filtered list for one status.
Matches
| Param | Type | Required | Description |
|---|---|---|---|
| sport | path | Yes | cs2, valorant, lol, dota2, cod, r6, mlbb, deadlock |
| status | string | — | upcoming (default), live, finished |
| start_date | date | — | YYYY-MM-DD |
| end_date | date | — | YYYY-MM-DD |
| limit | int | — | Page size. Default 50. |
| offset | int | — | Skip N rows. |
curl -H "X-API-Key: YOUR_API_KEY" \ "https://kashrock.up.railway.app/v6/esports/cs2/matches?status=upcoming&limit=1"
{
"source": "kashrock",
"kr_match_id": "kr_cs2_imperial-vs-bestia-2026-08-15",
"slug": "imperial-vs-bestia-2026-08-15",
"sport": "esports_cs2",
"status": "not_started",
"event_time": "2026-08-15T20:00:00Z"
}Team names
Every team name on matches, finished boxscores, player rows, live games, props, lines and gaps is the KashRock display name, so one team reads the same on every endpoint. When a source spells the team differently, that spelling is in team1_alias and team2_alias. Player rows use team_alias, and a team object carries alias. The alias is only present when it differs. Ids never depend on the spelling: a kr_tm_* id stays the same.
{
"kr_match_id": "kr_cs2_banda-chuya-vs-morrow-esports-30-09-2026",
"team1": "Morrow Esports",
"team1_alias": "benched gods",
"team1_id": "kr_tm_d6894574e666",
"team2": "Banda Chuya",
"team2_id": "kr_tm_8622b1bf77f8"
}Fixtures
| Param | Type | Required | Description |
|---|---|---|---|
| sport | path | Yes | Same sport slugs as matches. |
| status | string | — | upcoming, live, ended (also accepts not_started / running / finished) |
| start_date | date | — | YYYY-MM-DD |
| end_date | date | — | YYYY-MM-DD |
curl -H "X-API-Key: YOUR_API_KEY" \ "https://kashrock.up.railway.app/v6/esports/cs2/fixtures"
{
"fixture_id": "fix_1634179",
"kr_match_id": "kr_cs2_wave-esports-vs-drama-esports-2026-08-14",
"sport": "esports_cs2",
"discipline": "cs2",
"status": "finished",
"slug": "wave-esports-vs-drama-esports-2026-08-14"
}Match prep (CS2, R6, COD, Valorant & Apex)
Team stats, mode winrates, map pool/biases, form, key player matchups, and betting insights for CS2, R6, COD, Valorant, and Apex. Pass a KashRock -vs- slug or kr_match_id from match lists — never a provider numeric id.
| Param | Type | Required | Description |
|---|---|---|---|
| match_slug | path | Yes | KR slug or kr_match_id (not provider ids) |
| team1 | string | — | Optional resolve override |
| team2 | string | — | Optional resolve override |
| date | date | — | Optional YYYY-MM-DD resolve override |
curl -H "X-API-Key: YOUR_API_KEY" \ "https://kashrock.up.railway.app/v6/esports/cs2/matches/ence-vs-falcons-force-14-09-2026/prep"
{
"source": "kashrock",
"sport": "esports_cs2",
"kr_match_id": "kr_cs2_ence-vs-falcons-force-14-09-2026",
"match_slug": "ence-vs-falcons-force-14-09-2026",
"team_stats": [
{
"team": "ENCE",
"sample_size": 92,
"map_winrate": 46.74
}
],
"map_pools": [
{
"team": "ENCE",
"maps": [
{
"map": "Dust2",
"pick_rate": 48.6,
"ban_rate": 4,
"win_rate": 49.8
}
]
}
],
"form": [
{
"team": "ENCE",
"results": [
"WIN",
"WIN",
"WIN",
"WIN",
"WIN"
]
}
]
}CS2 player board + favourite weapons
curl -H "X-API-Key: YOUR_API_KEY" \ "https://kashrock.up.railway.app/v6/esports/cs2/matches/ence-vs-falcons-force-14-09-2026/player-board"
{
"source": "kashrock",
"sport": "esports_cs2",
"teams": [
{
"team": "Misa Esports",
"players": [
{
"nickname": "EMSTAR",
"kd": 0.9241,
"adr": 83.7777,
"favourite_weapons": [
{
"name": "M4A4",
"kills": 0.4955
},
{
"name": "AK-47",
"kills": 0.4289
},
{
"name": "Glock-18",
"kills": 0.3333
}
]
}
]
}
]
}CS2 tournament maps
Map picks/bans and side winrates for the match's tournament. Same KashRock match ref as prep.
curl -H "X-API-Key: YOUR_API_KEY" \ "https://kashrock.up.railway.app/v6/esports/cs2/matches/ence-vs-falcons-force-14-09-2026/tournament-maps"
Finished boxscore
Vault per-map combat for a finished series. Pass a KashRock slug or kr_match_id. Lineup includes STARTER and SUB. Sport-native model fields (gold, GPM, DPM, hero, items) appear when the vault has them. Not live KDA — that is Live in-game. MCP: get_boxscore.
curl -H "X-API-Key: YOUR_API_KEY" \ "https://kashrock.up.railway.app/v6/esports/mlbb/matches/kr_mlbb_team-falcons-vs-aurora-gaming-13-09-2026/boxscore"
begin_atis the game's own start, never the match start or a midnight date. When the source has no game clock it is null, withbegin_at_reasonset tosource_has_no_game_clockorunverified.durationis in seconds, andend_atisbegin_atplusduration. Either is null with a reason when the source lacks it.- Each map's
winnercarriesresult_source:source, orderived_from_serieswhen a sweep (2-0 or 3-0) decides every game. Otherwise the winner is null withresult.available: falseand a reason, and each player'smap_wonis null. winner_score,loser_scoreandrounds_playedare rounds, so they appear for CS2, Valorant and R6 only.- Every player's
team_idequals the lineup's team id, and the series score matches the match list and the match by id. - A finished map never leaves the boxscore. During a series, and before the match history has a map, the map carries its final live player stats with
provisional: true; the history's own rows replace them when they arrive. - Player rows carry only their own title's stats: no ADR or headshots on Dota 2, no rounds on LoL. A stat nobody measured is left out, never 0 or null.
columnslists the title's stat columns in display order askey,labelandformat; build your table from it. - On the boxscore (
get_boxscoreand/v7include=boxscore), the match and each map carrystats_coverage:full(every stat field populated),basic(player rows with the core scoreboard line only) ornone(no player stats stored). It is derived from the stored rows, so it reflects exactly what the response contains. streamslists the match's watch links:platform(twitch, kick or youtube),channel,urlandembed_url, pluslanguage,official,nameandviewerswhen known. The match by id and the live games list carry the same streams.
GET /v6/esports/{sport}/boxscores lists recent finished series for every title, newest first, each with its per-map player stats. A series still being played is not listed as finished: a best of 3 at 1-1 stays current until a side wins.
Stats status on finished matches
Every finished match that comes from the vault carries stats_status, so you know whether player stats exist for every map. It is on matches lists, the match by id, completed lists and team schedules.
complete: every map has player stats.partial: some maps have player stats and the rest are still being filled.unavailable: no source publishes player stats for the remaining maps, so none will arrive.null: no map has player stats yet, or the match has not been checked yet.
Treat unavailable as final: the match and its maps are listed with scores, but no data source publishes player stats for the missing maps.
Also: /{sport}/matches/live, /{sport}/upcoming/matches, /{sport}/completed/matches, /{sport}/schedule, /{sport}/streams, /{sport}/teams/h2h. Live in-game KDA: /docs/endpoints/live.