Returns one resource of one esports game from SofaScore, chosen with `part`: `statistics` (team totals such as kills, towers and barracks for Dota 2, gold and drakes for League of Legends), `lineups` (every player with hero or champion and per-player statistics such as net worth, gold or ADR), `bans` (banned heroes or champions per side) and `rounds` (Counter-Strike round history with outcome, winner and side per round, including overtime). Only the requested block is returned. Get the game id from sofascore-event-esports-games. Statistics and bans exist for Dota 2 and League of Legends only (404 for Counter-Strike), rounds fill for Counter-Strike only (an empty list otherwise) and lineups work for all three. Returns 404 when SofaScore has no such data for the game.
Response behavior
- Only the block named by `part` is returned (`statistics`, `lineups`, `bans` or `rounds`).
- `statistics` holds `home` and `away` team totals as snake_case maps: numbers in `statistics` and true/false markers in `flags`. The keys depend on the title: Dota 2 has `kills`, `towers_destroyed`, `towers_remaining`, `barracks_destroyed`, `barracks_remaining` and `faction` with the `first_blood` flag; League of Legends has `kills`, `gold_earned`, `tower_kills`, `inhibitor_kills`, `nashor_kills`, `dragon_kills`, the drake kills per type and `color`.
- `lineups` holds `home_players` and `away_players`. Each line has the `player`, the hero or champion as `character` (Dota 2 and League of Legends), a `role` where SofaScore gives one, and a `statistics` map whose keys depend on the title (Dota 2: `kills`, `deaths`, `assists`, `last_hits`, `denies`, `gold_per_min`, `xp_per_min`, `net_worth`, `hero_level`; League of Legends: `kills`, `deaths`, `assists`, `gold_earned`, `minions_killed`, `level`; Counter-Strike: `kills`, `deaths`, `assists`, `adr`, `kast`, `headshots`, `flash_assists`, `kd_diff`, `first_kills_diff`, and the `alive` flag in `flags`).
- `bans` holds the banned heroes or champions per side (`home`, `away`); empty lists are valid for a game still in the draft.
- `rounds` holds the Counter-Strike round history: `normaltime` and `overtime` lists with, per round, `outcome_code`/`outcome` (`elimination` 0, `bomb_defused` 1, `bomb_exploded` 2, `time_expired` 3), `winner_code` (`1` home, `2` away) and `home_team_side_code`/`home_team_side` (`4` `terrorist`, `5` `counter_terrorist`). The decoding comes from the data itself: across 54 rounds a defuse and a timeout were always won by the counter-terrorist side and an exploded bomb by the terrorist side. `rounds_in_a_half` and `overtime_chunk_size` describe the format. Dota 2 and League of Legends games return empty lists.
- Availability by title (checked 2026-10-07): `statistics` and `bans` answer for Dota 2 and League of Legends and return `404` for Counter-Strike; `rounds` fill for Counter-Strike only; `lineups` answer for all three. A game that has just started can return `404` for `statistics` and `lineups`.
- Returns `404` when SofaScore has no such data for the game and `400` for an unknown `part`.
Example response for `part=lineups` (Dota 2, shortened):
```json
{
"code": 200,
"msg": "OK",
"data": {
"game_id": 588883,
"part": "lineups",
"source_url": "https://api.sofascore.com/api/v1/esports-game/588883/lineups",
"fetched_at": "2026-10-07T17:00:00Z",
"lineups": {
"home_players": [
{
"player": {
"id": 1078099,
"name": "Oli",
"short_name": "Oli",
"slug": "oli",
"position": "hs"
},
"character": {
"id": 1638,
"name": "Witch Doctor",
"slug": "witch-doctor"
},
"statistics": {
"assists": 17,
"deaths": 6,
"denies": 3,
"gold_per_min": 340,
"hero_level": 20,
"kills": 2,
"last_hits": 37,
"net_worth": 15120,
"xp_per_min": 505
}
}
],
"away_players": [
{
"player": {
"id": 1078066,
"name": "Dreamocel",
"short_name": "Dreamocel",
"slug": "dreamocel",
"position": "hc"
},
"character": {
"id": 1726,
"name": "Io",
"slug": "io"
},
"statistics": {
"assists": 6,
"deaths": 3,
"denies": 3,
"gold_per_min": 678,
"hero_level": 26,
"kills": 4,
"last_hits": 605,
"net_worth": 29055,
"xp_per_min": 936
}
}
]
}
}
}
```
Example response for `part=rounds` (Counter-Strike, shortened):
```json
{
"code": 200,
"msg": "OK",
"data": {
"game_id": 588953,
"part": "rounds",
"source_url": "https://api.sofascore.com/api/v1/esports-game/588953/rounds",
"fetched_at": "2026-10-07T17:00:00Z",
"rounds": {
"rounds_in_a_half": 12,
"overtime_chunk_size": 3,
"normaltime": [
{
"outcome_code": 0,
"outcome": "elimination",
"winner_code": 1,
"home_team_side_code": 5,
"home_team_side": "counter_terrorist"
},
{
"outcome_code": 0,
"outcome": "elimination",
"winner_code": 1,
"home_team_side_code": 5,
"home_team_side": "counter_terrorist"
},
{
"outcome_code": 1,
"outcome": "bomb_defused",
"winner_code": 1,
"home_team_side_code": 5,
"home_team_side": "counter_terrorist"
},
"..."
],
"overtime": [
{
"outcome_code": 0,
"outcome": "elimination",
"winner_code": 1,
"home_team_side_code": 4,
"home_team_side": "terrorist"
},
{
"outcome_code": 2,
"outcome": "bomb_exploded",
"winner_code": 1,
"home_team_side_code": 4,
"home_team_side": "terrorist"
},
"..."
]
}
}
}
```
Example response for `part=statistics` (Dota 2, shortened):
```json
{
"code": 200,
"msg": "OK",
"data": {
"game_id": 588883,
"part": "statistics",
"source_url": "https://api.sofascore.com/api/v1/esports-game/588883/statistics",
"fetched_at": "2026-10-07T17:00:00Z",
"statistics": {
"home": {
"statistics": {
"barracks_destroyed": 0,
"barracks_remaining": 6,
"faction": 2,
"kills": 31,
"towers_destroyed": 2,
"towers_remaining": 9
},
"flags": {
"first_blood": true
}
},
"away": {
"statistics": {
"barracks_destroyed": 4,
"barracks_remaining": 2,
"faction": 3,
"kills": 14,
"towers_destroyed": 8,
"towers_remaining": 3
},
"flags": {
"first_blood": false
}
}
}
}
}
```
Example response for `part=bans` (Dota 2, shortened):
```json
{
"code": 200,
"msg": "OK",
"data": {
"game_id": 588883,
"part": "bans",
"source_url": "https://api.sofascore.com/api/v1/esports-game/588883/bans",
"fetched_at": "2026-10-07T17:00:00Z",
"bans": {
"home": [
{
"id": 1737,
"name": "Lone Druid",
"slug": "lone-druid"
},
{
"id": 1577,
"name": "Bounty Hunter",
"slug": "bounty-hunter"
}
],
"away": [
{
"id": 1563,
"name": "Doom",
"slug": "doom"
},
{
"id": 1544,
"name": "Bane",
"slug": "bane"
}
]
}
}
}
```