Skip to content

League of Legends Examples

Working examples for the League of Legends API endpoints.

Account Lookup

Look up a player by their Riot ID:

import asyncio
from riotskillissue import RiotClient, Platform

async def main():
    async with RiotClient() as client:
        account = await client.account.get_by_riot_id(
            region=Platform.EUROPE,
            gameName="Agurin",
            tagLine="EUW"
        )
        print(f"Account: {account.gameName}#{account.tagLine}")
        print(f"PUUID: {account.puuid}")

if __name__ == "__main__":
    asyncio.run(main())

Summoner Data

Get summoner profile information:

import asyncio
from riotskillissue import RiotClient, Platform, Region

async def main():
    async with RiotClient() as client:
        # First get the account
        account = await client.account.get_by_riot_id(
            region=Platform.EUROPE,
            gameName="Agurin",
            tagLine="EUW"
        )

        # Then get summoner data
        summoner = await client.summoner.get_by_puuid(
            region=Region.EUW1,
            encryptedPUUID=account.puuid
        )

        print(f"Summoner Level: {summoner.summonerLevel}")
        print(f"Profile Icon ID: {summoner.profileIconId}")

if __name__ == "__main__":
    asyncio.run(main())

Match History

Fetch recent matches for a player:

import asyncio
from riotskillissue import RiotClient, Platform

async def main():
    async with RiotClient() as client:
        # Get account
        account = await client.account.get_by_riot_id(
            region=Platform.EUROPE,
            gameName="Agurin",
            tagLine="EUW"
        )

        # Get last 5 match IDs
        match_ids = await client.match.get_match_ids_by_puuid(
            region=Platform.EUROPE,
            puuid=account.puuid,
            count=5
        )

        print(f"Recent matches: {len(match_ids)}")
        for match_id in match_ids:
            print(f"  - {match_id}")

if __name__ == "__main__":
    asyncio.run(main())

Match Details

Get detailed information about a specific match:

import asyncio
from riotskillissue import RiotClient, Platform

async def main():
    async with RiotClient() as client:
        # Get match by ID
        match = await client.match.get_match(
            region=Platform.EUROPE,
            matchId="EUW1_7654321098"  # Replace with real match ID
        )

        print(f"Game Mode: {match.info.gameMode}")
        print(f"Duration: {match.info.gameDuration // 60} minutes")
        print(f"Queue ID: {match.info.queueId}")

        # Print participants
        print("\nParticipants:")
        for p in match.info.participants:
            kda = f"{p.kills}/{p.deaths}/{p.assists}"
            print(f"  {p.championName}: {p.summonerName} - {kda}")

if __name__ == "__main__":
    asyncio.run(main())

Paginated Match History

Use the pagination helper for large match history fetches:

import asyncio
from riotskillissue import RiotClient, Platform, paginate

async def main():
    async with RiotClient() as client:
        account = await client.account.get_by_riot_id(
            region=Platform.EUROPE,
            gameName="Agurin",
            tagLine="EUW"
        )

        # Fetch up to 50 matches using pagination
        count = 0
        async for match_id in paginate(
            client.match.get_match_ids_by_puuid,
            region=Platform.EUROPE,
            puuid=account.puuid,
            count=20,
            max_results=50
        ):
            count += 1
            print(f"{count}. {match_id}")

if __name__ == "__main__":
    asyncio.run(main())

Champion Mastery

Get a player's champion mastery data:

import asyncio
from riotskillissue import RiotClient, Platform, Region

async def main():
    async with RiotClient() as client:
        account = await client.account.get_by_riot_id(
            region=Platform.EUROPE,
            gameName="Agurin",
            tagLine="EUW"
        )

        summoner = await client.summoner.get_by_puuid(
            region=Region.EUW1,
            encryptedPUUID=account.puuid
        )

        # Get top champion masteries
        masteries = await client.champion_mastery.get_all_masteries(
            region=Region.EUW1,
            encryptedPUUID=account.puuid
        )

        print("Top 5 Champions:")
        for m in masteries[:5]:
            print(f"  Champion {m.championId}: Level {m.championLevel} ({m.championPoints:,} pts)")

if __name__ == "__main__":
    asyncio.run(main())

Live Game (Spectator)

Check if a player is currently in game:

import asyncio
from riotskillissue import RiotClient, Platform, Region

async def main():
    async with RiotClient() as client:
        account = await client.account.get_by_riot_id(
            region=Platform.EUROPE,
            gameName="Agurin",
            tagLine="EUW"
        )

        try:
            game = await client.spectator.get_current_game_info(
                region=Region.EUW1,
                encryptedPUUID=account.puuid
            )
            print(f"Currently in game!")
            print(f"Game Mode: {game.gameMode}")
            print(f"Game Length: {game.gameLength // 60} minutes")
        except Exception as e:
            print("Player is not currently in a game.")

if __name__ == "__main__":
    asyncio.run(main())

League Standings

Get ranked league entries:

import asyncio
from riotskillissue import RiotClient, Platform, Region

async def main():
    async with RiotClient() as client:
        account = await client.account.get_by_riot_id(
            region=Platform.EUROPE,
            gameName="Agurin",
            tagLine="EUW"
        )

        summoner = await client.summoner.get_by_puuid(
            region=Region.EUW1,
            encryptedPUUID=account.puuid
        )

        entries = await client.league.get_entries_by_summoner(
            region=Region.EUW1,
            encryptedSummonerId=summoner.id
        )

        for entry in entries:
            print(f"{entry.queueType}:")
            print(f"  Rank: {entry.tier} {entry.rank} ({entry.leaguePoints} LP)")
            print(f"  Record: {entry.wins}W / {entry.losses}L")

if __name__ == "__main__":
    asyncio.run(main())

Static Data (Data Dragon)

Get champion, item, summoner spell, and rune static data:

import asyncio
from riotskillissue import RiotClient

async def main():
    async with RiotClient() as client:
        # Get champion data by ID
        annie = await client.static.get_champion(1)
        print(f"Champion: {annie['name']}")
        print(f"Title: {annie['title']}")

        # Get item data by ID  
        dorans_blade = await client.static.get_item(1055)
        print(f"\nItem: {dorans_blade['name']}")
        print(f"Cost: {dorans_blade['gold']['total']} gold")

        # Get summoner spell by key
        flash = await client.static.get_summoner_spell(4)
        print(f"\nSpell: {flash['name']}")

        # Get all rune trees
        runes = await client.static.get_runes()
        for tree in runes:
            print(f"\nRune Tree: {tree['name']}")

        # Get queue definitions
        queues = await client.static.get_queues()
        for q in queues[:5]:
            print(f"Queue {q['queueId']}: {q.get('description', 'N/A')}")

if __name__ == "__main__":
    asyncio.run(main())

Error Handling

Handle specific API errors with the typed exception hierarchy:

import asyncio
from riotskillissue import (
    RiotClient, Platform, Region,
    NotFoundError, ForbiddenError, RateLimitError, RiotAPIError,
)

async def main():
    async with RiotClient() as client:
        try:
            account = await client.account.get_by_riot_id(
                region=Platform.EUROPE,
                gameName="Nonexistent",
                tagLine="9999"
            )
        except NotFoundError:
            print("Player not found!")
        except ForbiddenError:
            print("API key doesn't have access to this endpoint")
        except RiotAPIError as e:
            print(f"API error [{e.status}]: {e.message}")

if __name__ == "__main__":
    asyncio.run(main())

Synchronous Usage

All examples above work with SyncRiotClient — just drop the async/await:

from riotskillissue import SyncRiotClient, Platform, Region

with SyncRiotClient() as client:
    account = client.account.get_by_riot_id(
        region=Platform.EUROPE,
        gameName="Agurin",
        tagLine="EUW"
    )
    print(f"Account: {account.gameName}#{account.tagLine}")

    summoner = client.summoner.get_by_puuid(
        region=Region.EUW1,
        encryptedPUUID=account.puuid
    )
    print(f"Summoner Level: {summoner.summonerLevel}")

    # Get top 5 champion masteries
    masteries = client.champion_mastery.get_all_masteries(
        region=Region.EUW1,
        encryptedPUUID=account.puuid
    )
    for m in masteries[:5]:
        print(f"  Champion {m.championId}: {m.championPoints:,} pts")