LoL Esports API endpoint
Returns the League of Legends Esports Global Power Rankings (GPR): every ranked team with rank, GPR score, Elo, previous rank and rank change, home league, match and game records, average opponent GPR and the tournaments counted with each result and placement. `season` selects `current` (the running year, default) or the Worlds snapshot of a four-digit year (`2025`, `2024`; every season listed in the response's `seasons` is accepted, and a year without a snapshot returns 404); `league` keeps one home league's teams and `history` adds the daily GPR history points. The response lists the seasons and home leagues available.
/lolesports/gprHeader: x-api-key required.
Parameters:
season: optional ranking snapshot; current (default) or a four-digit year (2025, 2024 and any later year the site publishes). current is the running year; a year is that year's Worlds snapshot. Every season listed in the response's seasons is accepted. A year without a snapshot returns 404; a value that is neither current nor a four-digit year returns 400.league: optional home league slug from the leagues list of the response, for example lck, lpl, lec, lcs. A slug with no teams in the snapshot returns 400 and names the available ones.limit: optional number of teams, 1 to 200, best rank first; defaults to all.history: optional boolean; true adds each team's daily history points (rank, score and Elo).Notable response behavior:
rank. rank_change is the previous rank minus the current rank (positive means the team moved up). match_record and game_record count the window start_date to end_date.tournaments lists the events counted for the team with the team's record and placement; seasons lists the GPR pages the site links (each has a kind of current or worlds) and leagues the home leagues present, with team counts.503; a missing one 404.| Field | Filled in, of 40 checked | Values in the sample |
|---|---|---|
| rank | 40 | 1 to 40, median 20 |
| score | 40 | 1,180 to 1,556, median 1,305 |
| elo | 40 | 1,152 to 1,585, median 1,309 |
| date_calculated | 40 | 2026-10-29 |
| previous_rank | 40 | 1 to 40, median 20 |
| previous_score | 40 | 1,180 to 1,552, median 1,304 |
| rank_change | 40 | -3 to 4, median 0 |
| average_opponent_gpr | 40 | 1,123 to 1,387, median 1,281 |
| match_record | 40 | |
| game_record | 40 | |
| team | 40 | |
| tournaments | 40 | median 4 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required | ||
| season | string | No | current | Ranking snapshot; current, or a four-digit Worlds snapshot year such as 2025 or 2024 (any season listed in the response is accepted); defaults to current | |
| league | string | No | Home league slug from the leagues list of the response, for example lck | ||
| limit | integer | No | all | Number of teams to return, 1 to 200, best rank first; defaults to all Minimum: 1. Maximum: 200. | |
| history | boolean | No | Add each team's GPR history points |
curl -X GET "https://api.crawlora.net/api/v1/lolesports/gpr?limit=10&history=true" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"source_url": "https://lolesports.com/en-US/gpr",
"fetched_at": "2026-10-28T10:00:00Z",
"season": "current",
"start_date": "2026-01-01",
"end_date": "2026-10-28",
"seasons": [
{
"season": "current",
"year": "2026",
"kind": "current",
"url": "https://lolesports.com/en-US/gpr/2026/current"
}
],
"leagues": [
{
"name": "LCK",
"slug": "lck",
"teams": 10
}
],
"total": 58,
"count": 1,
"teams": [
{
"rank": 1,
"score": 1650,
"elo": 1700,
"date_calculated": "2026-10-27T05:00:00Z",
"previous_rank": 1,
"previous_score": 1648,
"rank_change": 0,
"average_opponent_gpr": 1400,
"match_record": {
"wins": 40,
"losses": 10
},
"game_record": {
"wins": 90,
"losses": 30
},
"team": {
"id": "100",
"code": "GEN",
"name": "Gen.G",
"slug": "geng",
"league": "LCK",
"league_slug": "lck"
},
"tournaments": [
{
"id": "1",
"name": "lck_2026_split_1",
"league": "LCK",
"region_slug": "korea",
"wins": 12,
"losses": 2,
"placement": 1
}
]
}
]
}
}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.GPRResponse | No | ||||
| data.count | integer | No | 58 | |||
| data.end_date | string | No | 2026-10-28 | |||
| data.fetched_at | string | No | 2026-10-27T10:00:00Z | |||
| data.leagues | array | No | ||||
| data.leagues[].id | string | No | ||||
| data.leagues[].name | string | No | CBLOL | |||
| data.leagues[].slug | string | No | cblol-brazil | |||
| data.leagues[].teams | integer | No | 4 | |||
| data.season | string | No | current, 2025, 2024 | current | ||
| data.seasons | array | No | ||||
| data.seasons[].kind | string | No | current, worlds | worlds | ||
| data.seasons[].season | string | No | 2025 | |||
| data.seasons[].url | string | No | ||||
| data.seasons[].year | string | No | 2025 | |||
| data.source_url | string | No | https://esports-api.lolesports.com/persisted/gw/getSchedule?hl=en-US | |||
| data.start_date | string | No | 2026-01-01 | |||
| data.teams | array | No | ||||
| data.teams[].average_opponent_gpr | integer | No | 1132 | |||
| data.teams[].date_calculated | string | No | 2026-10-27T05:00:00Z | |||
| data.teams[].elo | integer | No | 1247 | |||
| data.teams[].game_record | lolesports.GPRRecord | No | ||||
| data.teams[].game_record.losses | integer | No | 37 | |||
| data.teams[].game_record.wins | integer | No | 46 | |||
| data.teams[].history | array | No | ||||
| data.teams[].history[].date | string | No | 2026-10-27T05:00:00Z | |||
| data.teams[].history[].elo | integer | No | 1247 | |||
| data.teams[].history[].rank | integer | No | 41 | |||
| data.teams[].history[].score | integer | No | 1177 | |||
| data.teams[].match_record | lolesports.GPRRecord | No | ||||
| data.teams[].match_record.losses | integer | No | 37 | |||
| data.teams[].match_record.wins | integer | No | 46 | |||
| data.teams[].previous_rank | integer | No | 42 | |||
| data.teams[].previous_score | integer | No | 1170 | |||
| data.teams[].rank | integer | No | 41 | |||
| data.teams[].rank_change | integer | No | 1 | |||
| data.teams[].score | integer | No | 1177 | |||
| data.teams[].team | lolesports.GPRTeamRef | No | ||||
| data.teams[].team.code | string | No | LOUD | |||
| data.teams[].team.id | string | No | 105397404796640412 | |||
| data.teams[].team.image_url | string | No | ||||
| data.teams[].team.league | string | No | CBLOL | |||
| data.teams[].team.league_id | string | No | ||||
| data.teams[].team.league_slug | string | No | cblol-brazil | |||
| data.teams[].team.name | string | No | LOUD | |||
| data.teams[].team.slug | string | No | loud | |||
| data.teams[].tournaments | array | No | ||||
| data.teams[].tournaments[].end_time | string | No | ||||
| data.teams[].tournaments[].id | string | No | 115548668059523728 | |||
| data.teams[].tournaments[].league | string | No | LEC | |||
| data.teams[].tournaments[].losses | integer | No | 6 | |||
| data.teams[].tournaments[].name | string | No | lec_2026_season | |||
| data.teams[].tournaments[].placement | integer | No | 2 | |||
| data.teams[].tournaments[].region_slug | string | No | europe | |||
| data.teams[].tournaments[].slug | string | No | ||||
| data.teams[].tournaments[].start_time | string | No | ||||
| data.teams[].tournaments[].state | string | No | completed | |||
| data.teams[].tournaments[].wins | integer | No | 12 | |||
| data.total | integer | No | 58 | |||
| 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/gpr?limit=10&history=true" \
-H "x-api-key: $CRAWLORA_API_KEY"