Skip to content

Runes and Perks

Access a participant's rune pages and stat shards via Perks, PerkStyle, and PerkStats.

import asyncio
import os

from nexar.cache import DEFAULT_CACHE_CONFIG
from nexar.client import NexarClient
from nexar.enums import Region

client = NexarClient(
    riot_api_key=os.getenv("RIOT_API_KEY", ""),
    cache_config=DEFAULT_CACHE_CONFIG,
)


async def main() -> None:
    async with client:
        player = await client.get_player(riot_id="bexli#bex", region=Region.NA1)
        last_match = await player.get_last_match()
        assert last_match

        participant = last_match.participants.by_puuid(player.puuid)
        assert participant

        perks = participant.perks
        if not perks:
            print("No perk data available for this match.")
            return

        # Stat shards (defense, flex, offense)
        print(f"{participant.champion_name} stat shards:")
        print(f"  Offense: {perks.stat_perks.offense}")
        print(f"  Flex:    {perks.stat_perks.flex}")
        print(f"  Defense: {perks.stat_perks.defense}")

        # Rune pages (primary + secondary)
        print("\nRune pages:")
        for style in perks.styles:
            print(f"  {style.description} (style {style.style}):")
            for sel in style.selections:
                print(f"    Perk {sel.perk} (var1={sel.var1}, var2={sel.var2}, var3={sel.var3})")


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