This example shows how to fetch a player’s match history and retrieve detailed information about their recent games.
To get match history you need to:
- Look up the account by Riot ID to get the PUUID
- Fetch the matchlist using the PUUID
- Optionally retrieve detailed match data for specific games
import valaw
import asyncio
async def main():
client = valaw.Client("YOUR_TOKEN", "americas")
try:
# Step 1: Get account by Riot ID
account = await client.GET_getByRiotId("PlayerName", "NA1")
print(f"Found: {account.gameName}#{account.tagLine}")
# Step 2: Get match history
matchlist = await client.GET_getMatchlist(account.puuid, "na")
print(f"Total matches: {len(matchlist.history)}")
# Step 3: Get details for recent matches
for entry in matchlist.history[:5]:
match = await client.GET_getMatch(entry.matchId, "na")
print(f"\nMatch: {entry.matchId}")
print(f" Map: {match.matchInfo.mapId}")
print(f" Mode: {match.matchInfo.gameMode}")
print(f" Duration: {match.matchInfo.gameLengthMillis // 1000 // 60} minutes")
# Find the player's stats in this match
player = next((p for p in match.players if p.puuid == account.puuid), None)
if player and player.stats:
kda = f"{player.stats.kills}/{player.stats.deaths}/{player.stats.assists}"
print(f" K/D/A: {kda} — Score: {player.stats.score}")
finally:
await client.close()
asyncio.run(main())
Filtering by queue type
The queueId field on each MatchlistEntryDto lets you filter by game mode:
competitive_matches = [
entry for entry in matchlist.history
if entry.queueId == "competitive"
]
print(f"Competitive matches: {len(competitive_matches)}")
Common queue IDs: competitive, unrated, spikerush, deathmatch
Error handling
try:
matchlist = await client.GET_getMatchlist(account.puuid, "na")
except valaw.Exceptions.RiotAPIResponseError as e:
if e.status_code == 404:
print("Player not found")
else:
print(f"API error {e.status_code}: {e.status_message}")
except valaw.Exceptions.InvalidRegion as e:
print(f"Invalid region: {e}")
The matchlist returns matches in reverse chronological order — most recent first.