LoL Esports API endpoint
Returns the match schedule around today: start time, state (`unstarted`, `inProgress`, `completed`), block name, league, teams, outcome and game wins, and best-of strategy. Optionally filter with `league_id`. Follow `older_page_token` for past results and `newer_page_token` for later fixtures; a missing token means that direction is exhausted.
/lolesports/scheduleReturns League of Legends matches around the current date, newest page first, optionally for one league.
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.league_id: optional numeric league id from lolesports-leagues, or up to 10 comma-separated ids to combine leagues in one schedule (for example LEC and LCK, which returned both in a single 80-event page, and the paging cursors keep working); omit for every league. Every id is validated before the request.page_token: optional cursor copied from older_page_token or newer_page_token of a previous response.Notable response behavior:
state has these values: unstarted, inProgress, completed. outcome on a team is win or loss once decided; game_wins is the series score.older_page_token for earlier results and newer_page_token for later fixtures. A missing token means that direction has no more data.league_id is valid for an inactive league; an empty unfiltered schedule is treated as an upstream error.| Field | Filled in, of 80 checked | Values in the sample |
|---|---|---|
| start_time | 80 | 2026-10-07 to 2026-11-14 |
| state | 80 | completed (61), unstarted (19) |
| type | 80 | match in all 80 |
| block_name | 80 | Swiss (36), Playoffs (10), Regional Qualifier (9) and 4 more |
| league | 80 | |
| match | 80 |
| 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. | |
| league_id | string | No | Numeric league id from lolesports-leagues, or up to 10 comma-separated ids to combine leagues; omit for all leagues | 98767991302996019 | |
| page_token | string | No | older_page_token or newer_page_token copied from a previous response |
curl -X GET "https://api.crawlora.net/api/v1/lolesports/schedule?hl=cs-CZ" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"source_url": "https://esports-api.lolesports.com/persisted/gw/getSchedule?hl=en-US",
"fetched_at": "2026-10-27T10:00:00Z",
"count": 1,
"older_page_token": "b2xkZXI6OjExNzEzMzgxNjcwMTkxODgwMg==",
"events": [
{
"start_time": "2026-10-07T11:00:00Z",
"state": "completed",
"type": "match",
"block_name": "Swiss",
"league": {
"name": "DCGI",
"slug": "demacia_cup"
},
"match": {
"id": "117133816701918802",
"flags": [
"hasVod"
],
"teams": [
{
"name": "Shopify Rebellion",
"code": "SR",
"outcome": "loss",
"game_wins": 1,
"record": {
"wins": 1,
"losses": 1
}
},
{
"name": "FlyQuest",
"code": "FLY",
"outcome": "win",
"game_wins": 2,
"record": {
"wins": 2,
"losses": 0
}
}
],
"strategy": {
"type": "bestOf",
"count": 3
}
}
}
]
}
}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.ScheduleResponse | No | ||||
| data.count | integer | No | 80 | |||
| data.events | array | No | Event record, 37 fields: block_name, games, league, match, start_time, state, type. Described under LoL Esports live matches API. | |||
| data.fetched_at | string | No | 2026-10-27T10:00:00Z | |||
| data.newer_page_token | string | No | ||||
| data.older_page_token | string | No | ||||
| data.source_url | string | No | https://esports-api.lolesports.com/persisted/gw/getSchedule?hl=en-US | |||
| 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 |
| 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/schedule?hl=cs-CZ" \
-H "x-api-key: $CRAWLORA_API_KEY"