PandaScore REST API for League of Legends (2.15.8)

Download OpenAPI specification:Download

Introduction

Whether you're looking to build an official Pandascore integration for your service, or you just want to build something awesome, we can help you get started.

The API works over the HTTPS protocol, and is accessed from the api.pandascore.co domain.

  • The current endpoint is https://api.pandascore.co.
  • All data is sent and received as JSON by default.
  • Blank fields are included with null values instead of being omitted.
  • All timestamps are returned in ISO-8601 format

Events hierarchy

The PandaScore API allows you to access data about eSports events by using a certain structure detailed below.

Leagues

Leagues are the top level events. They don't have a date and represent a regular competition. A League is composed of one or several series.
Some League of Legends leagues are: EU LCS, NA LCS, LCK, etc.
Some Dota 2 leagues are: ESL One, GESC, The International, PGL, etc.

Series

A Serie represents an occurrence of a league event.
The EU LCS league has two series per year: spring 2017, summer 2017, spring 2016, summer 2016 etc.
Some Dota2 Series examples would be: Changsha Major, Open Bucharest, Frankfurt, i-League Invitational etc.

Tournaments

Tournaments groups all the matches of a serie under "stages" and "groups".
The tournaments of the EU LCS of summer 2017 are: Group A, Group B, Playoffs, etc.
Some Dota 2 tournaments are: Group A, Group B, Playoffs, etc.

Matches

Finally we have matches which have two players or teams (depending on the played videogame) and several games (the rounds of the match).
Matches of the group A in the EU LCS of summer 2017 are: G2 vs FNC, MSF vs NIP, etc.
Matches of the group A in the ESL One, Genting tournamnet are: Lower Round 1, Quarterfinal, Upper Final, etc.

Please note that some matches may be listed as "TBD vs TBD" if the matchup is not announced yet, for example the date of the Final match is known but the quarterfinal is still being played.
Structure

Access tokens

The authentication on the Pandascore API works with access tokens.

All developers need to create an account before getting started, in order to get an access token. The access token should not be shared.

Your token can be found and regenerated from your dashboard.

The access token can be passed in the URL with the token query string parameter, or in the Authorization: Bearer header field.

Formats

The API currently supports the JSON format by default.

Other formats may be added depending on user needs.

Pagination

The Pandascore API paginates all resources on the index method.

Requests that return multiple items will be paginated to 50 items by default. You can specify further pages with the page[number] parameter. You can also set a custom page size (up to 100) with the page[size] parameter.

The Link HTTP response header contains pagination data with first, previous, next and last raw page links when available, under the format

Link: <https://api.pandascore.co/{Resource}?page=X+1>; rel="next", <https://api.pandascore.co/{Resource}?page=X-1>; rel="prev", <https://api.pandascore.co/{Resource}?page=1>; rel="first", <https://api.pandascore.co/{Resource}?page=X+n>; rel="last"

There is also:

  • A X-Page header field, which contains the current page.
  • A X-Per-Page header field, which contains the current pagination length.
  • A X-Total header field, which contains the total count of items across all pages.

Filtering

The filter query parameter can be used to filter a collection by one or several fields for one or several values. The filter parameter takes the field to filter as a key, and the values to filter as the value. Multiples values must be comma-separated (,).

For example, the following is a request for all the champions with a name matching Twitch or Brand exactly, but only with 21 armor:

GET /lol/champions?filter[name]=Brand,Twitch&filter[armor]=21&token=YOUR_ACCESS_TOKEN

Range

The range parameter is a hash that allows filtering fields by an interval. Only values between the given two comma-separated bounds will be returned. The bounds are inclusive.

For example, the following is a request for all the champions with hp within 500 and 1000:

GET /lol/champions?range[hp]=500,1000&token=YOUR_ACCESS_TOKEN

Search

The search parameter is a bit like the filter parameter, but it will return all results where the values contain the given parameter.

Note: this only works on strings. Searching with integer values is not supported and filter or range parameters may be better suited for your needs here.

For example, to get all the champions with a name containing "twi":

$ curl -sg -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' 'https://api.pandascore.co/lol/champions?search[name]=twi' | jq -S '.[].name'
"Twitch"
"Twisted Fate"

Sorting

All index endpoints support multiple sort fields with comma-separation (,); the fields are applied in the order specified.

The sort order for each field is ascending unless it is prefixed with a minus (U+002D HYPHEN-MINUS, “-“), in which case it is descending.

For example, GET /lol/champions?sort=attackdamage,-name&token=YOUR_ACCESS_TOKEN will return all the champions sorted by attack damage. Any champions with the same attack damage will then be sorted by their names in descending alphabetical order.

Rate limiting

Depending on your current plan, you will have a different rate limit. Your plan and your current request count are available on your dashboard.

With the free plan, you have a limit of 1000 requests per hour, others plans have a limit of 4000 requests per hour. The number of remaining requests is available in the X-Rate-Limit-Remaining response header.

Your API key is included in all the examples on this page, so you can test any example right away. Only you can see this value.

Authentication

BearerToken

Security Scheme Type HTTP
HTTP Authorization Scheme bearer

QueryToken

Security Scheme Type API Key
Query parameter name: token

LoL champions

List champions

List champions for the latest version

Authorizations:
query Parameters
object (filter_over_LoLChampions)
Example: filter[armor]=33

Options to filter results. String fields are case sensitive

integer or object

Pagination in the form of page=2 or page[size]=30&page[number]=2

per_page
integer [ 1 .. 100 ]
Default: 50
Example: per_page=5

Equivalent to page[size]

object (range_over_LoLChampions)
Example: range[hpperlevel]=50,100

Options to select results within ranges

object (search_over_LoLChampions)
Example: search[name]=xayah

Options to search results

sort
Array of any (sort_over_LoLChampions) non-empty
Items Enum: "armor" "-armor" "armorperlevel" "-armorperlevel" "attackdamage" "-attackdamage" "attackdamageperlevel" "-attackdamageperlevel" "attackrange" "-attackrange" "attackspeedoffset" "-attackspeedoffset" "attackspeedperlevel" "-attackspeedperlevel" "crit" "-crit" "critperlevel" "-critperlevel" "hp" "-hp" "hpperlevel" "-hpperlevel" "hpregen" "-hpregen" "hpregenperlevel" "-hpregenperlevel" "id" "-id" "movespeed" "-movespeed" "mp" "-mp" "mpperlevel" "-mpperlevel" "mpregen" "-mpregen" "mpregenperlevel" "-mpregenperlevel" "name" "-name" "spellblock" "-spellblock" "spellblockperlevel" "-spellblockperlevel"
Example: sort=-attackrange&sort=name

Options to sort results

Responses

Response samples

Content type
application/json
[]

Get a champion

Get a single champion by ID or by slug

Authorizations:
path Parameters
lol_champion_id
required
integer (LoLChampionID) >= 1

A champion ID

Responses

Response samples

Content type
application/json
{}

List champions for all version

List champions for all versions

Authorizations:
query Parameters
object (filter_over_LoLChampions)
Example: filter[armor]=33

Options to filter results. String fields are case sensitive

integer or object

Pagination in the form of page=2 or page[size]=30&page[number]=2

per_page
integer [ 1 .. 100 ]
Default: 50
Example: per_page=5

Equivalent to page[size]

object (range_over_LoLChampions)
Example: range[hpperlevel]=50,100

Options to select results within ranges

object (search_over_LoLChampions)
Example: search[name]=xayah

Options to search results

sort
Array of any (sort_over_LoLChampions) non-empty
Items Enum: "armor" "-armor" "armorperlevel" "-armorperlevel" "attackdamage" "-attackdamage" "attackdamageperlevel" "-attackdamageperlevel" "attackrange" "-attackrange" "attackspeedoffset" "-attackspeedoffset" "attackspeedperlevel" "-attackspeedperlevel" "crit" "-crit" "critperlevel" "-critperlevel" "hp" "-hp" "hpperlevel" "-hpperlevel" "hpregen" "-hpregen" "hpregenperlevel" "-hpregenperlevel" "id" "-id" "movespeed" "-movespeed" "mp" "-mp" "mpperlevel" "-mpperlevel" "mpregen" "-mpregen" "mpregenperlevel" "-mpregenperlevel" "name" "-name" "spellblock" "-spellblock" "spellblockperlevel" "-spellblockperlevel"
Example: sort=-attackrange&sort=name

Options to sort results

Responses

Response samples

Content type
application/json
[]

List champions for version

List champions for the given version

Authorizations:
path Parameters
lol_version_name
required
integer (LoLVersionName) >= 1

A version to select champions on. Can be all if you want to query all the champions over all the versions of league of legends.

query Parameters
object (filter_over_LoLChampions)
Example: filter[armor]=33

Options to filter results. String fields are case sensitive

integer or object

Pagination in the form of page=2 or page[size]=30&page[number]=2

per_page
integer [ 1 .. 100 ]
Default: 50
Example: per_page=5

Equivalent to page[size]

object (range_over_LoLChampions)
Example: range[hpperlevel]=50,100

Options to select results within ranges

object (search_over_LoLChampions)
Example: search[name]=xayah

Options to search results

sort
Array of any (sort_over_LoLChampions) non-empty
Items Enum: "armor" "-armor" "armorperlevel" "-armorperlevel" "attackdamage" "-attackdamage" "attackdamageperlevel" "-attackdamageperlevel" "attackrange" "-attackrange" "attackspeedoffset" "-attackspeedoffset" "attackspeedperlevel" "-attackspeedperlevel" "crit" "-crit" "critperlevel" "-critperlevel" "hp" "-hp" "hpperlevel" "-hpperlevel" "hpregen" "-hpregen" "hpregenperlevel" "-hpregenperlevel" "id" "-id" "movespeed" "-movespeed" "mp" "-mp" "mpperlevel" "-mpperlevel" "mpregen" "-mpregen" "mpregenperlevel" "-mpregenperlevel" "name" "-name" "spellblock" "-spellblock" "spellblockperlevel" "-spellblockperlevel"
Example: sort=-attackrange&sort=name

Options to sort results

Responses

Response samples

Content type
application/json
[]

LoL games

Get a game

Get a single League of Legends game by ID

Authorizations:
path Parameters
lol_game_id
required
integer (LoLGameID) >= 1

A LoL game ID

Responses

Response samples

Content type
application/json
{}

List Play-by-Play events for a given game

List events for a given League of Legends game

Authorizations:
path Parameters
lol_game_id
required
integer (LoLGameID) >= 1

A LoL game ID

query Parameters
integer or object

Pagination in the form of page=2 or page[size]=30&page[number]=2

per_page
integer [ 1 .. 100 ]
Default: 50
Example: per_page=5

Equivalent to page[size]

Responses

Response samples

Content type
application/json
[
  • {
    }
]

List Play-by-Play frames for a given game

List frames for a given League of Legends game

Authorizations:
path Parameters
lol_game_id
required
integer (LoLGameID) >= 1

A LoL game ID

query Parameters
integer or object

Pagination in the form of page=2 or page[size]=30&page[number]=2

per_page
integer [ 1 .. 100 ]
Default: 50
Example: per_page=5

Equivalent to page[size]

Responses

Response samples

Content type
application/json
[]

List games for a given match

List games for a given League of Legends match

Authorizations:
path Parameters
required
MatchID (integer) or MatchSlug (string) (MatchIDOrSlug)

A match ID or slug

query Parameters
object (filter_over_LoLGames)
Example: filter[forfeit]=false

Options to filter results. String fields are case sensitive

integer or object

Pagination in the form of page=2 or page[size]=30&page[number]=2

per_page
integer [ 1 .. 100 ]
Default: 50
Example: per_page=5

Equivalent to page[size]

object (range_over_LoLGames)
Example: range[position]=2,4

Options to select results within ranges

object (search_over_LoLGames)
Example: search[status]=finished

Options to search results

sort
Array of any (sort_over_LoLGames) non-empty
Items Enum: "begin_at" "-begin_at" "complete" "-complete" "end_at" "-end_at" "finished" "-finished" "forfeit" "-forfeit" "id" "-id" "length" "-length" "match_id" "-match_id" "position" "-position" "status" "-status" "video_url" "-video_url" "winner_type" "-winner_type"
Example: sort=-length

Options to sort results

Responses

Response samples

Content type
application/json
Example
[]

LoL items

List items

List items for the latest version

Authorizations:
query Parameters
object (filter_over_LoLItems)
Example: filter[gold_base]=675,250&filter[is_trinket]=true

Options to filter results. String fields are case sensitive

integer or object

Pagination in the form of page=2 or page[size]=30&page[number]=2

per_page
integer [ 1 .. 100 ]
Default: 50
Example: per_page=5

Equivalent to page[size]

object (range_over_LoLItems)
Example: range[flat_magic_damage_mod]=50,100

Options to select results within ranges

object (search_over_LoLItems)
Example: search[name]=Sabre

Options to search results

sort
Array of any (sort_over_LoLItems) non-empty
Items Enum: "flat_armor_mod" "-flat_armor_mod" "flat_crit_chance_mod" "-flat_crit_chance_mod" "flat_hp_pool_mod" "-flat_hp_pool_mod" "flat_hp_regen_mod" "-flat_hp_regen_mod" "flat_magic_damage_mod" "-flat_magic_damage_mod" "flat_movement_speed_mod" "-flat_movement_speed_mod" "flat_mp_pool_mod" "-flat_mp_pool_mod" "flat_mp_regen_mod" "-flat_mp_regen_mod" "flat_physical_damage_mod" "-flat_physical_damage_mod" "flat_spell_block_mod" "-flat_spell_block_mod" "gold_base" "-gold_base" "gold_purchasable" "-gold_purchasable" "gold_sell" "-gold_sell" "gold_total" "-gold_total" "id" "-id" "name" "-name" "percent_attack_speed_mod" "-percent_attack_speed_mod" "percent_life_steal_mod" "-percent_life_steal_mod" "percent_movement_speed_mod" "-percent_movement_speed_mod"
Example: sort=-gold_sell&sort=name

Options to sort results

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get an item

Get a single item by ID or by slug

Authorizations:
path Parameters
lol_item_id
required
integer (LoLItemID) >= 1

An item ID

Responses

Response samples

Content type
application/json
{
  • "flat_armor_mod": 0,
  • "flat_crit_chance_mod": 0,
  • "flat_hp_pool_mod": 300,
  • "flat_hp_regen_mod": 0,
  • "flat_magic_damage_mod": 75,
  • "flat_movement_speed_mod": 0,
  • "flat_mp_pool_mod": 0,
  • "flat_mp_regen_mod": 0,
  • "flat_physical_damage_mod": 0,
  • "flat_spell_block_mod": null,
  • "gold_base": 750,
  • "gold_purchasable": true,
  • "gold_sell": 2170,
  • "gold_total": 3100,
  • "id": 2297,
  • "is_trinket": false,
  • "name": "Liandry's Torment",
  • "percent_attack_speed_mod": 0,
  • "percent_life_steal_mod": 0,
  • "percent_movement_speed_mod": 0,
  • "videogame_versions":
    [
    ]
}

List items for all version

List items for all versions

Authorizations:
query Parameters
object (filter_over_LoLItems)
Example: filter[gold_base]=675,250&filter[is_trinket]=true

Options to filter results. String fields are case sensitive

integer or object

Pagination in the form of page=2 or page[size]=30&page[number]=2

per_page
integer [ 1 .. 100 ]
Default: 50
Example: per_page=5

Equivalent to page[size]

object (range_over_LoLItems)
Example: range[flat_magic_damage_mod]=50,100

Options to select results within ranges

object (search_over_LoLItems)
Example: search[name]=Sabre

Options to search results

sort
Array of any (sort_over_LoLItems) non-empty
Items Enum: "flat_armor_mod" "-flat_armor_mod" "flat_crit_chance_mod" "-flat_crit_chance_mod" "flat_hp_pool_mod" "-flat_hp_pool_mod" "flat_hp_regen_mod" "-flat_hp_regen_mod" "flat_magic_damage_mod" "-flat_magic_damage_mod" "flat_movement_speed_mod" "-flat_movement_speed_mod" "flat_mp_pool_mod" "-flat_mp_pool_mod" "flat_mp_regen_mod" "-flat_mp_regen_mod" "flat_physical_damage_mod" "-flat_physical_damage_mod" "flat_spell_block_mod" "-flat_spell_block_mod" "gold_base" "-gold_base" "gold_purchasable" "-gold_purchasable" "gold_sell" "-gold_sell" "gold_total" "-gold_total" "id" "-id" "name" "-name" "percent_attack_speed_mod" "-percent_attack_speed_mod" "percent_life_steal_mod" "-percent_life_steal_mod" "percent_movement_speed_mod" "-percent_movement_speed_mod"
Example: sort=-gold_sell&sort=name

Options to sort results

Responses

Response samples

Content type
application/json
[
  • {
    }
]

List items for version

List items for the given version

Authorizations:
path Parameters
lol_version_name
required
integer (LoLVersionName) >= 1

A version to select champions on. Can be all if you want to query all the champions over all the versions of league of legends.

query Parameters
object (filter_over_LoLItems)
Example: filter[gold_base]=675,250&filter[is_trinket]=true

Options to filter results. String fields are case sensitive

integer or object

Pagination in the form of page=2 or page[size]=30&page[number]=2

per_page
integer [ 1 .. 100 ]
Default: 50
Example: per_page=5

Equivalent to page[size]

object (range_over_LoLItems)
Example: range[flat_magic_damage_mod]=50,100

Options to select results within ranges

object (search_over_LoLItems)
Example: search[name]=Sabre

Options to search results

sort
Array of any (sort_over_LoLItems) non-empty
Items Enum: "flat_armor_mod" "-flat_armor_mod" "flat_crit_chance_mod" "-flat_crit_chance_mod" "flat_hp_pool_mod" "-flat_hp_pool_mod" "flat_hp_regen_mod" "-flat_hp_regen_mod" "flat_magic_damage_mod" "-flat_magic_damage_mod" "flat_movement_speed_mod" "-flat_movement_speed_mod" "flat_mp_pool_mod" "-flat_mp_pool_mod" "flat_mp_regen_mod" "-flat_mp_regen_mod" "flat_physical_damage_mod" "-flat_physical_damage_mod" "flat_spell_block_mod" "-flat_spell_block_mod" "gold_base" "-gold_base" "gold_purchasable" "-gold_purchasable" "gold_sell" "-gold_sell" "gold_total" "-gold_total" "id" "-id" "name" "-name" "percent_attack_speed_mod" "-percent_attack_speed_mod" "percent_life_steal_mod" "-percent_life_steal_mod" "percent_movement_speed_mod" "-percent_movement_speed_mod"
Example: sort=-gold_sell&sort=name

Options to sort results

Responses

Response samples

Content type
application/json
[
  • {
    }
]

LoL leagues

Get LoL leagues

List League of Legends leagues

Authorizations:
query Parameters
object (filter_over_LoLLeagues)

Options to filter results. String fields are case sensitive

integer or object

Pagination in the form of page=2 or page[size]=30&page[number]=2

per_page
integer [ 1 .. 100 ]
Default: 50
Example: per_page=5

Equivalent to page[size]

object (range_over_LoLLeagues)
Example: range[modified_at]=2019-04-08T17:00:00Z,2019-10-08T22:00:00Z

Options to select results within ranges

object (search_over_LoLLeagues)
Example: search[name]=Contenders

Options to search results

sort
Array of any (sort_over_LoLLeagues) non-empty
Items Enum: "id" "-id" "modified_at" "-modified_at" "name" "-name" "slug" "-slug" "url" "-url"
Example: sort=name&sort=-modified_at

Options to sort results

Responses

Response samples

Content type
application/json
[
  • {
    }
]

LoL masteries

List masteries

List masteries

Authorizations:
query Parameters
object (filter_over_LoLMasteries)
Example: filter[id]=12,34,56,29

Options to filter results. String fields are case sensitive

integer or object

Pagination in the form of page=2 or page[size]=30&page[number]=2

per_page
integer [ 1 .. 100 ]
Default: 50
Example: per_page=5

Equivalent to page[size]

object (range_over_LoLMasteries)
Example: range[name]=ab,mu

Options to select results within ranges

object (search_over_LoLMasteries)
Example: search[name]=blabla

Options to search results

sort
Array of any (sort_over_LoLMasteries) non-empty
Items Enum: "id" "-id" "name" "-name"
Example: sort=name

Options to sort results

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get a mastery

Get a single mastery by ID

Authorizations:
path Parameters
lol_mastery_id
required
integer (LoLMasteryID) >= 1

A mastery ID

Responses

Response samples

Content type
application/json
{
  • "id": 689,
  • "name": "Stoneborn Pact"
}

LoL matches

List LoL matches

List matches for the League of Legends videogame

Authorizations:
query Parameters
object (filter_over_LoLMatches)
Example: filter[detailed_stats]=true

Options to filter results. String fields are case sensitive

integer or object

Pagination in the form of page=2 or page[size]=30&page[number]=2

per_page
integer [ 1 .. 100 ]
Default: 50
Example: per_page=5

Equivalent to page[size]

object (range_over_LoLMatches)
Example: range[begin_at]=2019-04-08T17:00:00Z,2019-10-08T22:00:00Z

Options to select results within ranges

object (search_over_LoLMatches)
Example: search[name]=Finals

Options to search results

sort
Array of any (sort_over_LoLMatches) non-empty
Items Enum: "begin_at" "-begin_at" "detailed_stats" "-detailed_stats" "draw" "-draw" "end_at" "-end_at" "forfeit" "-forfeit" "id" "-id" "match_type" "-match_type" "modified_at" "-modified_at" "name" "-name" "number_of_games" "-number_of_games" "scheduled_at" "-scheduled_at" "slug" "-slug" "status" "-status" "tournament_id" "-tournament_id" "winner_id" "-winner_id"
Example: sort=tournament_id&sort=scheduled_at

Options to sort results

Responses

Response samples