LoL Esports API endpoint
Returns one match: league, tournament, teams with game wins, best-of strategy, each game's id, number, state (`unneeded`, `unstarted`, `inProgress`, `completed`), blue/red side assignment and VODs, plus broadcast streams. Use a game `id` with lolesports-game-window or lolesports-game-details. An unknown match id returns not found.
/lolesports/eventReturns one League of Legends match with its games, side assignment, VODs and broadcast streams.
Header: x-api-key required.
Parameters:
hl: optional language for names and labels; defaults to en-US. Allowed values: cs-CZ, de-DE, en-US, es-ES, es-MX, fr-FR, hu-HU, ja-JP, ko-KR, pl-PL, pt-BR, th-TH, tr-TR, vi-VN, zh-TW. Other values return 400.match_id: required numeric match id from lolesports-schedule, lolesports-live or lolesports-standings.Notable response behavior:
games[].state has these values: unneeded, unstarted, inProgress, completed. sides[].side is blue or red.games[].id with lolesports-game-window and lolesports-game-details.404. The response is cached for up to one minute.outcome (when present) has these values: win, loss.| Field | Filled in, of 3 checked | Values in the sample |
|---|---|---|
| number | 3 | 1 to 3, median 2 |
| id | 3 | |
| state | 3 | “completed” |
| sides | 3 | median 2 entries |
| vods | 3 | median 2 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required | ||
| hl | string | No | en-US | Language for names and labels; one of cs-CZ, de-DE, en-US, es-ES, es-MX, fr-FR, hu-HU, ja-JP, ko-KR, pl-PL, pt-BR, th-TH, tr-TR, vi-VN, zh-TW; defaults to en-US Allowed values: cs-CZ, de-DE, en-US, es-ES, es-MX, fr-FR, hu-HU, ja-JP, ko-KR, pl-PL, pt-BR, th-TH, tr-TR, vi-VN, zh-TW. | |
| match_id | string | Yes | Numeric match id from lolesports-schedule, lolesports-live or lolesports-standings | 117133816701918802 |
curl -X GET "https://api.crawlora.net/api/v1/lolesports/event?hl=cs-CZ&match_id=117133816701918802" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"source_url": "https://esports-api.lolesports.com/persisted/gw/getEventDetails?hl=en-US&id=117133816701918802",
"fetched_at": "2026-10-27T10:00:00Z",
"id": "117133816701918802",
"type": "match",
"tournament_id": "117133773242499009",
"league": {
"id": "117126995932274206",
"slug": "demacia_cup",
"name": "DCGI"
},
"strategy": {
"type": "bestOf",
"count": 3
},
"teams": [
{
"name": "Team Heretics",
"code": "TH",
"slug": "team-heretics-lec",
"id": "109637393694097670",
"game_wins": 2
}
],
"games": [
{
"number": 1,
"id": "117133816701918803",
"state": "completed",
"sides": [
{
"team_id": "111504538396430510",
"side": "blue"
},
{
"team_id": "98926509892121852",
"side": "red"
}
],
"vods": [
{
"provider": "youtube",
"parameter": "xtq9wDAT3zg",
"locale": "fr-FR",
"locale_name": "French (France)",
"start_millis": 121000,
"end_millis": 2525000,
"offset": 0,
"first_frame_time": "2026-10-15T18:00:26.487Z"
}
]
}
]
}
}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 | lolesports.EventDetailResponse | No | ||||
| data.fetched_at | string | No | 2026-10-27T10:00:00Z | |||
| data.games | array | No | ||||
| data.games[].id | string | No | 117133816701918803 | |||
| data.games[].number | integer | No | 1 | |||
| data.games[].sides | array | No | ||||
| data.games[].sides[].side | string | No | blue, red | blue | ||
| data.games[].sides[].team_id | string | No | 111504538396430510 | |||
| data.games[].state | string | No | unneeded, unstarted, inProgress, completed | completed | ||
| data.games[].vods | array | No | ||||
| data.games[].vods[].end_millis | integer | No | 2525000 | |||
| data.games[].vods[].first_frame_time | string | No | 2026-10-15T18:00:26.487Z | FirstFrameTime is the UTC time of the recording's first frame, when the upstream knows it. | ||
| data.games[].vods[].id | string | No | 117401850612643795 | |||
| data.games[].vods[].locale | string | No | fr-FR | |||
| data.games[].vods[].locale_name | string | No | French (France) | |||
| data.games[].vods[].offset | integer | No | 0 | Offset is the upstream's alignment offset for the recording in milliseconds. | ||
| data.games[].vods[].parameter | string | No | xtq9wDAT3zg | |||
| data.games[].vods[].provider | string | No | youtube | |||
| data.games[].vods[].start_millis | integer | No | 121000 | |||
| data.id | string | No | 117133816701918802 | |||
| data.league | lolesports.EventLeague | No | ||||
| data.league.id | string | No | 98767991302996019 | |||
| data.league.name | string | No | LEC | |||
| data.league.slug | string | No | lec | |||
| data.source_url | string | No | https://esports-api.lolesports.com/persisted/gw/getSchedule?hl=en-US | |||
| data.strategy | lolesports.Strategy | No | ||||
| data.strategy.count | integer | No | 3 | |||
| data.strategy.type | string | No | bestOf | |||
| data.streams | array | No | ||||
| data.streams[].locale | string | No | en-GB | |||
| data.streams[].parameter | string | No | lec | |||
| data.streams[].provider | string | No | twitch | |||
| data.teams | array | No | ||||
| data.teams[].code | string | No | T1 | |||
| data.teams[].game_wins | integer | No | 2 | |||
| data.teams[].id | string | No | 98767991853197861 | |||
| data.teams[].image_url | string | No | https://static.lolesports.com/teams/t1.png | |||
| data.teams[].name | string | No | T1 | |||
| data.teams[].outcome | string | No | win, loss | win | ||
| data.teams[].record | lolesports.Record | No | ||||
| data.teams[].record.losses | integer | No | 0 | |||
| data.teams[].record.wins | integer | No | 9 | |||
| data.teams[].slug | string | No | t1 | |||
| data.tournament_id | string | No | 117133773242499009 | |||
| data.type | string | No | match | |||
| 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/lolesports/event?hl=cs-CZ&match_id=117133816701918802" \
-H "x-api-key: $CRAWLORA_API_KEY"