GosuGamers API endpoint
Returns one game of a GosuGamers match: the map, each team's score, side and first-pick flag, the picks or bans with the player (agents, heroes or champions where the title publishes them), the lineups, round or half scores (Counter-Strike and Valorant), every team's placement, kills and points for battle-royale games (PUBG Mobile) and VODs. Take `game_id` from the `games` list of gosugamers-match. Fields a title does not publish are empty. An unknown game id returns not found.
/gosugamers/match-gameHeader: x-api-key required.
Parameters:
game_id: required numeric game id, from the games list (games[].id) of gosugamers-match. An unknown id returns not found.Notable response behavior:
map is the map or arena (Summit, Ancient, Summoner's Rift, Tournament Version seen). Each team has score (kills, rounds or points depending on the title), placement, side, first_pick, winner, picks and lineup.picks list agents, heroes or champions with a slot, a type code and the player who played it where the title publishes that (Valorant did; League of Legends and Dota 2 games sampled had none). side is empty when the title has no sides data.rounds are the period scores for round-based titles (period 0 and 1 are the halves, overtime marks extra periods; team1_score and team2_score follow the order of teams). It is empty for titles without rounds.teams is empty and battle_royale_teams lists every team with placement, kills, placement_points, kill_points, points_addition, points_deduction, total_points, country_code and its players.vods list the recordings with a video id and host code; a game without VODs has an empty list.| Field | Filled in, of 3 checked | Values in the sample |
|---|---|---|
| period | 3 | 0 to 2, median 1 |
| overtime | 3 | true in 1 of 3 |
| team1_score | 3 | 5 to 6, median 6 |
| team2_score | 3 | 6 to 7, median 6 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required | ||
| game_id | string | Yes | Numeric game id from the games list of gosugamers-match | 1361936 |
curl -X GET "https://api.crawlora.net/api/v1/gosugamers/match-game?game_id=1361936" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"source_url": "https://www.gosugamers.net/api/v6/matches/match-game?gameId=1361936",
"fetched_at": "2026-10-28T10:00:00Z",
"id": "1361936",
"number": 1,
"game": "valorant",
"start_time": "2026-10-28T01:00:00Z",
"round": "Round 1",
"match_number": 1,
"best_of": 3,
"player_based": false,
"map": {
"id": "453",
"name": "Summit",
"image_url": "https://static.gosugamers.net/d2/7f/97/6568e564e15ba5929e80ba0773943298984c4ff873a1a22d4af27d4b6e.webp"
},
"battle_royale_teams": [],
"teams": [
{
"id": "58674",
"name": "Unsettled Resentment",
"slug": "unsettled-resentment",
"score": 17,
"placement": 1,
"first_pick": false,
"winner": false,
"picks": [
{
"slot": 6,
"type": 1,
"pick": "Neon",
"player": {
"id": "373491",
"name": "Ninebody",
"slug": "ninebody"
}
}
],
"lineup": [
{
"id": "373491",
"name": "Ninebody",
"slug": "ninebody"
}
]
}
],
"rounds": [
{
"period": 0,
"overtime": false,
"team1_score": 6,
"team2_score": 6
},
{
"period": 2,
"overtime": true,
"team1_score": 5,
"team2_score": 7
}
],
"vods": [
{
"title": "UR vs VNLG - VCT Threshold China 2026 - Map 1",
"host": 0,
"video_id": "qqauxAJWoFw"
}
]
}
}Request schema
No body schema
Response schema
Inline response schema
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | Code is the HTTP status code or a custom code used to indicate the result of the request @example 200 | |||
| data | gosugamers.MatchGameResponse | No | ||||
| data.battle_royale_teams | array | No | BattleRoyaleTeams is filled for battle-royale titles (PUBG Mobile), which list every team's placement and points instead of two sides. | |||
| data.battle_royale_teams[].country_code | string | No | IQ | |||
| data.battle_royale_teams[].id | string | No | 52872 | |||
| data.battle_royale_teams[].kill_points | integer | No | 11 | |||
| data.battle_royale_teams[].kills | integer | No | 11 | |||
| data.battle_royale_teams[].name | string | No | 4K Esports | |||
| data.battle_royale_teams[].placement | integer | No | 1 | |||
| data.battle_royale_teams[].placement_points | integer | No | 0 | |||
| data.battle_royale_teams[].players | array | No | ||||
| data.battle_royale_teams[].players[].country_code | string | No | IQ | |||
| data.battle_royale_teams[].players[].id | string | No | 505275 | |||
| data.battle_royale_teams[].players[].name | string | No | AZHY | |||
| data.battle_royale_teams[].players[].slug | string | No | azhy | |||
| data.battle_royale_teams[].points_addition | integer | No | ||||
| data.battle_royale_teams[].points_deduction | integer | No | ||||
| data.battle_royale_teams[].slug | string | No | 4k-esports | |||
| data.battle_royale_teams[].total_points | integer | No | 11 | |||
| data.best_of | integer | No | 3 | |||
| data.fetched_at | string | No | 2026-10-27T10:00:00Z | |||
| data.game | string | No | valorant | |||
| data.id | string | No | 1361936 | |||
| data.map | gosugamers.GameMap | No | ||||
| data.map.id | string | No | 453 | |||
| data.map.image_url | string | No | ||||
| data.map.name | string | No | Summit | |||
| data.match_number | integer | No | 1 | |||
| data.number | integer | No | 1 | |||
| data.player_based | boolean | No | false | |||
| data.round | string | No | Round 1 | |||
| data.rounds | array | No | ||||
| data.rounds[].overtime | boolean | No | false | |||
| data.rounds[].period | integer | No | 0 | |||
| data.rounds[].team1_score | integer | No | 6 | |||
| data.rounds[].team2_score | integer | No | 6 | |||
| data.source_url | string | No | https://www.gosugamers.net/valorant/matches | |||
| data.start_time | string | No | 2026-10-27T01:00:00Z | |||
| data.teams | array | No | ||||
| data.teams[].first_pick | boolean | No | false | |||
| data.teams[].id | string | No | 58674 | |||
| data.teams[].lineup | array | No | ||||
| data.teams[].lineup[].id | string | No | 373491 | |||
| data.teams[].lineup[].name | string | No | Ninebody | |||
| data.teams[].lineup[].slug | string | No | ninebody | |||
| data.teams[].logo_url | string | No | ||||
| data.teams[].name | string | No | Unsettled Resentment | |||
| data.teams[].picks | array | No | ||||
| data.teams[].picks[].image_url | string | No | ||||
| data.teams[].picks[].pick | string | No | Neon | |||
| data.teams[].picks[].player | gosugamers.GamePlayer | No | ||||
| data.teams[].picks[].player.id | string | No | 373491 | |||
| data.teams[].picks[].player.name | string | No | Ninebody | |||
| data.teams[].picks[].player.slug | string | No | ninebody | |||
| data.teams[].picks[].slot | integer | No | 6 | |||
| data.teams[].picks[].type | integer | No | 1 | |||
| data.teams[].placement | integer | No | 1 | |||
| data.teams[].score | integer | No | 17 | |||
| data.teams[].side | string | No | Radiant | |||
| data.teams[].slug | string | No | unsettled-resentment | |||
| data.teams[].winner | boolean | No | true | |||
| data.vods | array | No | ||||
| data.vods[].channel | string | No | ||||
| data.vods[].host | integer | No | 0 | |||
| data.vods[].thumb_url | string | No | ||||
| data.vods[].title | string | No | ||||
| data.vods[].video_id | string | No | qqauxAJWoFw | |||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/gosugamers/match-game?game_id=1361936" \
-H "x-api-key: $CRAWLORA_API_KEY"