└── README.md
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
League of Legends Analytics
4 |
5 | A space for League of Legends analytics projects by Arailla, including a curated list of publicly available resources published by the League of Legends community.
6 |
7 |
8 | :wave: About This Repository
9 |
10 | The README of this repository is an attempt to gather all LoL data-related guides, libraries, tutorials, or any other resources that may be of use to a League of Legends Data Analyst.
11 | If you feel like there's any resource that I've missed, please feel free to create a pull request or contact me on Twitter/X!
12 |
13 | :information_source: This repository has been _heavily inspired_ by the work of Edd Wester on his Football Analytics Github, which I highly recommend.
14 |
15 | 
16 |
17 |
18 | :book: Table of Contents
19 |
20 |
21 | Table of Contents
22 |
23 | - About This Repository
24 | - Table of Contents
25 | -
26 | LoL Data Sources
27 |
33 |
34 | -
35 | Resources
36 |
44 |
45 |
46 |
47 |
48 | 
49 |
50 |
51 | :seedling: LoL Data Sources
52 |
53 | While all data come from the League of Legends servers, you'll need to know how to query different APIs depending on which kind of data you're interested in.
54 | Solo Queue data is available through the Riot official API, while games played on the tournament realms can be accessed in different ways.
55 |
56 | :ladder: Solo Queue Data
57 |
58 | Documentation: https://developer.riotgames.com/
59 |
60 | - See all related libraries
61 | - See all related tutorials
62 | - See all related open-source projects
63 |
64 | Back to Contents
65 |
66 | Collecting Data
67 |
68 | > The following links are coming straight from https://riot-api-libraries.readthedocs.io/en/latest/collectingdata.html
69 |
70 | Collecting large amounts of match IDs is far from straightforward and requires quite a few requests. If you want to spare yourself a couple of steps, Canisback on the Riot Games Third-Party Developer Community Discord currently hosts a list of match IDs that you can use to pull matches from the `matches/{matchId}` endpoints. These lists are provided for free to the community for use and may go down or stop being updated at any time.
71 |
72 | You can also use the League endpoints to get lists of ranked summoners. The positional league endpoints provide a paginated list of all summoners in a Tier + Division + Position (e.g., all ranked Diamond II Top laners). Alternatively, Canisback on the Discord currently hosts a list of league IDs that you can use to pull summoners from the `leagues/{leagueId}` endpoints. These lists are provided for free to the community for use and may go down or stop being updated at any time.
73 |
74 | 
75 |
76 | :art: Static Data
77 |
78 | Static data comes in extremely handy when you want to
79 | - get a champion name from their ID
80 | - display any game asset
81 | - get champions and item stats
82 |
83 | Since the data only changes when a new patch comes out, it's highly recommended for you to implement caching.
84 |
85 | `ddragon` is the official CDN where you can retrieve all of this information. However, you might find it quite underwhelming if you're interested in champion and item stats as it only gives you the minimal stats.
86 |
87 | DDragon data only changes when a new LoL patch is released, which you can see the availability of in: https://ddragon.leagueoflegends.com/api/versions.json
88 |
89 | Documentation: https://developer.riotgames.com/docs/lol
90 |
91 | `cdragon` is a massive collection of community-generated files to augment the data in DDragon. You'll find that items and spell descriptions match the ones you'll see when looking at their in-game description.
92 |
93 | Documentation: https://riot-api-libraries.readthedocs.io/en/latest/ddragon.html
94 |
95 | You can also clone this repository which contains and archives all of the official DDragon content: https://github.com/InFinity54/LoL_DDragon
96 |
97 | - See all related tutorials
98 |
99 | Back to Contents
100 |
101 | 
102 |
103 | :tv: Esports Data
104 |
105 | Esports Data is about all of the matches played on tournament servers, thus not accessible by the Riot official API.
106 |
107 | Riot mentioned that this data would be accessible to the community _at some point in the future_, but for now:
108 |
109 | Leaguepedia API
110 |
111 | Leaguepedia is one of the few community projects that have been given access to the LoL Data Portal and thus act as a proxy for the public to have access to these matches, as well as aggregated data coming from their own pages.
112 |
113 | Documentation: https://lol.fandom.com/wiki/Help:Leaguepedia_API
114 |
115 | - See all related libraries
116 | - See all related open-source projects
117 |
118 | Oracle's Elixir Dataset
119 |
120 | If you'd rather work with a prebuilt dataset, Oracle's Elixir is the perfect place for you to start as you can download `.csv` files with the biggest leagues' data: https://oracleselixir.com/tools/downloads
121 |
122 | Chinese Matches
123 |
124 | Chinese Matches (mainly LPL and LDL) are quite specific as these competitions are not hosted by Riot themselves, and thus the data is not available from the same sources nor format (you'll notice that the data points do not exactly match the ones you get from the other leagues).
125 |
126 | Leaguepedia is maintaining a link between the calendar and their lpl.qq link (under the "VODs & Match Links" tournament section), which in turn can be used to fetch the in-game data.
127 |
128 | You can see it being called when opening an lpl.qq link, i.e., https://lpl.qq.com/es/stats.shtml?bmid=10413
129 |
130 | A full API definition can be found here, but only a fraction of the endpoints can be queried using the token you can find when looking at lpl.qq match pages.
131 |
132 | LoL Data Portal
133 |
134 | While it's not opened to the community as of yet, esports teams from ERL1+ can access it.
135 | They have access to their scrims (private training matches) data as well as all of Riot's matches data, in a very detailed (second per second) manner.
136 |
137 | You may have heard of this data as Bayes Esports', which was the previous data provider contracted to Riot. The LoL Data portal is now being operated by GRID Esports. Source: https://esportsinsider.com/2023/11/riot-games-grid-major-data-partnership-acquires-equity-stake
138 |
139 | GRID Esports does not provide any open documentation nor data samples.
140 |
141 | LoLEsports Live Data
142 |
143 | There is an API used by https://lolesports.com/, but it is not officially supported and may change at any time without warning.
144 | There is some unofficial documentation here, but it might not be accurate or up-to-date https://vickz84259.github.io/lolesports-api-docs/
145 |
146 | Others
147 |
148 | I came across the [EsportsBench 4.0](https://bsky.app/profile/cthorrez.bsky.social/post/3lfr767auck2m), a collection of 20 esports competition datasets which can be useful as a "resource for comparison and development of rating systems used to predict the results of esports matches based on past results".
149 |
150 | Back to Contents
151 |
152 | 
153 |
154 | :house: LoL Client Data
155 |
156 | Documentation: https://github.com/Pupix/rift-explorer - An automatically generated documentation of Riot Games LCU API.
157 |
158 | Back to Contents
159 |
160 | 
161 |
162 |
163 | :books: Resources
164 |
165 | Libraries
166 |
167 | **All languages**
168 | - Riot API Libraries can all be found on https://riot-api-libraries.readthedocs.io/en/latest/libraries.html
169 |
170 | **Python**
171 | - [leaguepedia_parser](https://github.com/mrtolkien/leaguepedia_parser) by [Tolki](https://twitter.com/TolkiCasts)
172 |
173 | Back to Contents
174 |
175 | 
176 |
177 | Tutorials
178 |
179 | **Python**
180 | - [An Introduction to the Riot API](https://www.itero.gg/articles/riot-api) and its [full Youtube playlist](https://www.youtube.com/playlist?list=PL3vL1pnMCbUERqllcwhcvEJbKum-M9zT5) - from itero.gg
181 | - [Extracting League of Legends data with Riot API](https://github.com/Lacerdash/Extracting-League-of-Legends-data-with-Riot-Api)
182 | - [Leaguepedia API](https://www.youtube.com/watch?v=V1DUvpFE_9c) by [Arces](https://x.com/arceslol) - stream replay of a live coding session
183 | - [An introduction to Streamlit and Plotly — using Champions Queue data](https://medium.com/@arailla/an-introduction-to-streamlit-and-plotly-using-champions-queue-data-b2803dff7eb4) by [Arailla](https://x.com/lol_arailla)
184 |
185 | **Elixir**
186 | - [Probuild Ex](https://mrdotb.com/posts/probuild-ex-part-one) by [mrdotB](https://x.com/mrdotB) - creating a fully functioning probuild clone in Elixir
187 |
188 | **Others**
189 | - [Resolving spells and variables in spell texts](https://hextechdocs.dev/resolving-variables-in-spell-texts/)
190 | - [Map data](https://hextechdocs.dev/map-data/)
191 | - [Minimap image variations depending on dragon type](https://x.com/Suporian_Garcia/status/1745093587040112836)
192 |
193 | Back to Contents
194 |
195 | 
196 |
197 | Written Pieces
198 |
199 | **Blogs**
200 | I couldn't include them all, but Itero.gg has released a lot of articles in their [Esports Analyst Club newsletter](https://www.itero.gg/articles).
201 |
202 | - [Predicting and analyzing metagames in League of Legends](https://medium.com/@benjamin.castet/predicting-and-analyzing-metagames-in-league-of-legends-3cedb9439310) by [Xenesis](https://x.com/lol_Xenesis)
203 | - [Rating Performances in Competitive Environment](https://medium.com/@benjamin.castet/rating-performances-in-competitive-environment-fd09089fc466) by [Xenesis](https://x.com/lol_Xenesis)
204 | - [Why is the League of Legends meta so stale?](https://www.itero.gg/articles/why-is-the-league-meta-stale) from itero.gg
205 | - [LoL: How to win your Solo Queue Draft - a statistical analysis of 1M+ games](https://www.itero.gg/articles/draft-sq) from itero.gg
206 | - [LoL: The Best Opportunities for AI in Esports](https://www.itero.gg/articles/best-ai) from itero.gg
207 | - [FlyTracker - A Disambiguation](https://samhine.notion.site/samhine/FlyTracker-A-Disambiguation-cf228401fb2d420d9512abc05cea68e5) by [Sam Hine](https://twitter.com/samhine)
208 |
209 | **Papers:**
210 | - [The SIDO Performance Model for League of Legends](https://www.sido.gg/sido-performance-model)
211 | - [An Approach for Team Composition in League of Legends using Genetic Algorithm (2019)](https://www.sbgames.org/sbgames2019/files/papers/ComputacaoFull/198418.pdf)
212 | - [Factor Analysis for behavior analysis](https://drive.google.com/file/d/1o6FcY_anyv7QE86N8dXMdxL2QZdNB26-/view) by [Warock](https://twitter.com/Warock42)
213 | - [Voice Communication Analysis in Esports]() by [Warock](https://twitter.com/Warock42) and [Nicolas Perez](https://x.com/PerezNicolasLol)
214 | - [PandaSkill - Player Performance and Skill Rating in Esports: Application to League of Legends](https://arxiv.org/abs/2501.10049)
215 | - [Win probability estimation for strategic
216 | decision-making in esports](https://x.com/xPetu/status/1838676437693534633) by [xPetu](https://x.com/xPetu)
217 |
218 | Back to Contents
219 |
220 | 
221 |
222 | Videos and Podcasts
223 |
224 | - [How to Use Game Data to Win in Esports](https://www.youtube.com/watch?v=VlZFUW1SbR0) by [Evil Geniuses](https://x.com/evilgeniuses)
225 | - [How Data Is Used Within Esports Orgs](https://www.youtube.com/watch?v=SL_35rOxCAU) by [Evil Geniuses](https://x.com/evilgeniuses)
226 | - [Analyst Insider](https://www.youtube.com/playlist?list=PL3vL1pnMCbUFEX1-s8xvSm6lYTxT5hwf-) by [Jack J](https://x.com/JackJGaming)
227 | - [Deep Dive 2021-2023](https://www.twitch.tv/videos/1983931515) by [Beora](https://twitter.com/_Beora)
228 | - :fr: [KC Analyst Q&A](https://www.twitch.tv/videos/2034539997) by [Xenesis](https://twitter.com/lol_Xenesis)
229 |
230 | 
231 |
232 | Github Repositories
233 |
234 | Using the Riot Official API:
235 | - [LeagueStats](https://github.com/vkaelin/LeagueStats) - A website for League of Legends summoners' stats by [LeagueStatsGG](https://x.com/LeagueStatsGG)
236 | - [LoL Matchup Optimizer](https://github.com/Max-We/lol-matchup-optimizer/tree/main) by Max-We
237 | - [LoL Tracker](https://github.com/danblock97/lol-stat-tracker) by [danblock](https://danblock.dev/)
238 | - [Riot API Tools](https://github.com/Baeora/riot_api_tools) by [Beora](https://twitter.com/_Beora)
239 | - [ProbuildEx](https://github.com/mrdotb/probuild_ex) - An open open source probuild.
240 | - [LeagueOfReplays](https://github.com/mrdotb/leagueofreplays) - Record & Replay lol games with spectator API.
241 |
242 | Using Leaguepedia API:
243 | - [League of Elo](https://github.com/jprMesh/LeagueOfElo) by jprMesh
244 | - [ProRankings](https://github.com/xtevenx/ProRankings) by xtevenx
245 |
246 | Using Oracle's Elixir dataset:
247 | - [Match Modeling](https://github.com/MRittinghouse/ProjektZero-LoL-Model/) by ProjektZero
248 |
249 | Using Bayes API:
250 | - [Automatic Wards Script](https://github.com/James-Woodland/Wards) by [Zero](https://x.com/ZeroAnalytics)
251 |
252 | Extract soloq replay files:
253 | - [replayScraper](https://github.com/HugoNayl/replayScraper) by HugoNayl
254 |
255 | Organize your replay files (.rofl):
256 | - [ReplayBook](https://github.com/fraxiinus/ReplayBook) by [Fraxiinus](https://x.com/fraxiinus)
257 |
258 | Extracting positional data from VODS using computer vision:
259 | - [DeeperLeague](https://github.com/davidweatherall/DeeperLeague) by davidweatherall
260 | - [LoL Automated Video Analyser - LAVA](https://github.com/Steeeephen/LAVA) by Steeeephen
261 |
262 | Tools for Google Sheet:
263 | - [Set Images](https://github.com/Baeora/set_images) by [Beora](https://twitter.com/_Beora)
264 |
265 | Back to Contents
266 |
267 | 
268 |
269 | Discord Servers
270 |
271 | - [Riot Games Third Party Developer Community](https://discord.gg/riotgamesdevrel)
272 | - [LoLStaff Analysis](https://discord.gg/uAHbKNKFUf) :brazil: / :es: server organized by [SrVenancio](https://x.com/SrVenancio1)
273 | - [LoL Analyst Community](https://discord.gg/jduM7FzQs6) organized by [Alejandro Flores](https://x.com/AlexFdezFlores)
274 | - [iTero Gaming](https://discord.gg/itero-gaming-686238814749851697) organized by [Jack J](https://x.com/JackJGaming)
275 | - [Oracle's Elixir](https://discord.gg/mkgagJ6nPg) organized by [Tim Sevenhuysen](https://x.com/TimSevenhuysen)
276 | - [GamesOfLegends](https://discord.gg/MQapQmKmDj) organized by [Bynjee](https://x.com/Bynjee)
277 | - [LoL Coach FR](https://discord.gg/rDrXk5SvpJ) :fr: server organized by [Supernova](https://x.com/Coach_Supernova)
278 | - [Analitycy](https://discord.com/invite/7TkAAsbHwV) 🇵🇱 server organized by [Arces](https://twitter.com/arceslol), [Sanchi](https://twitter.com/Sanchi_lol), and [Devilpiotr](https://twitter.com/Devilpiotr1)
279 | - [LES ANALYSTES FRANÇAIS](https://discord.gg/suYfcvneUC) :fr: server organized by [Mascode](https://x.com/Mascodeux)
280 |
281 | Back to Contents
282 |
283 | This repository isn't endorsed by Riot Games and doesn't reflect the views or opinions of Riot Games or anyone officially involved in producing or managing League of Legends. League of Legends and Riot Games are trademarks or registered trademarks of Riot Games, Inc. League of Legends © Riot Games, Inc.
284 |
--------------------------------------------------------------------------------