Liquipedia APIliquipedia.net ↗
Access Liquipedia esports data via API: match schedules, team rosters, player profiles, tournament results, and game stats for Valorant, CS, LoL, and Dota 2.
What is the Liquipedia API?
This API exposes 8 endpoints covering esports data across Valorant, Counter-Strike, League of Legends, and Dota 2 from Liquipedia. You can retrieve live and upcoming match schedules with get_upcoming_matches, pull per-player game statistics for LoL matches via get_lol_match_player_stats, or query Valorant agent usage stats and CS tournament placements — all returning structured JSON with consistent field shapes.
curl -X GET 'https://api.parse.bot/scraper/4ee21497-024f-4570-b075-97b9fd21ae78/get_valorant_agent_stats?tournament_path=VCT%2F2025%2FChampions%2FStatistics' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace liquipedia-net-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Liquipedia Esports SDK — bounded, re-runnable; every call capped."""
from parse_apis.Liquipedia_Esports_API import Liquipedia, Wiki, PageNotFound
client = Liquipedia()
# List LoL teams active between 2020 and 2025
for team in client.lol_teams.list(start_year="2020", end_year="2025", limit=3):
print(team.team_name, team.region, team.active_years)
# Get upcoming esports matches across all games
for match in client.matches.list(limit=3):
print(match.game, match.team1, "vs", match.team2, match.start_time_ph)
# Get a team roster from a specific wiki
roster = client.rosters.get(team="T1", wiki=Wiki.LEAGUE_OF_LEGENDS)
print(roster.team, roster.wiki)
for player in roster.roster[:3]:
print(player.id, player.name, player.position)
# Get LoL team match history, then drill into objectives
for m in client.lol_matches.list(team="T1", start_date="2026-07-01", limit=3):
print(m.date, m.opponent, m.result, m.match_id, m.length)
# Fetch detailed team-level objective stats for a match
match_item = client.lol_matches.list(team="T1", limit=1).first()
try:
objectives = client.match_objectiveses.get(match_id=match_item.match_id)
print(objectives.match_id, len(objectives.games), "games")
for game in objectives.games[:2]:
print(game.game_number, game.duration, game.winner)
for t in game.teams:
print(" ", t.team_name, t.towers, t.dragons, t.barons, t.total_gold)
except PageNotFound as e:
print("Match not found:", e)
print("exercised: lol_teams.list / matches.list / rosters.get / lol_matches.list / match_objectiveses.get")
Extract Valorant agent usage statistics and map play counts from a tournament statistics page on Liquipedia. Returns agent pick rates (when available), individual player stats, and map play counts. The page must use the exact Liquipedia wiki path. Returns stale_input if the tournament page does not exist.
| Param | Type | Description |
|---|---|---|
| tournament_path | string | Tournament statistics page path on the Valorant wiki (e.g. VCT/2025/Champions/Statistics, VCT/2024/Stage_1/Masters/Statistics). Must match the exact Liquipedia page title. |
{
"type": "object",
"fields": {
"map_stats": "array of MapStat objects with map name and total play count",
"tournament": "string - the tournament path used"
},
"sample": {
"data": {
"map_stats": [
{
"Map": "Abyss",
"Total": "15×",
"Playoffs": "5×",
"Group Stage": "10×"
},
{
"Map": "Ascent",
"Total": "16×",
"Playoffs": "9×",
"Group Stage": "7×"
}
],
"tournament": "VCT/2025/Champions/Statistics"
},
"status": "success"
}
}About the Liquipedia API
Match Data and Schedules
The get_upcoming_matches endpoint returns matches from the last hour onward across all four supported games. Each object includes game, team1, team2, score, start_time_ph (Philippine Time, UTC+8), tournament, and a Unix timestamp. No parameters are required — it returns the current live feed as-is. For League of Legends teams specifically, get_lol_team_matches returns historical game rows for a given team slug, filterable by start_date and end_date, with per-game fields including picks, bans, vs_picks, vs_bans, patch, length, result, and a match_id used to fetch deeper stats.
Player and Team Rosters
get_team_roster accepts a team name and a wiki parameter (leagueoflegends, valorant, counterstrike, or dota2) and returns the active roster with player ID, Name, Join Date, and Position where available. For Counter-Strike specifically, get_cs_esports_data allows combining player, team, and tournament parameters in a single call. The player object returns biographical key-value pairs; the team object includes a full roster array; the tournament object returns placement results.
Game-Specific Statistics
get_lol_match_player_stats takes a match_id (sourced from get_lol_team_matches) and returns per-game, per-player stats for all 10 players: kills, deaths, assists, CS, gold, and damage. The companion endpoint get_lol_match_objectives returns team-level data — towers, inhibitors, barons, dragons, heralds, void grubs, total kills, and total gold — for each game in the same series. For Valorant, get_valorant_agent_stats accepts a tournament_path on the Valorant wiki (e.g. VCT/2025/Champions/Statistics) and returns agent pick rates where available, individual player stats, and a map_stats array with play counts per map.
Team Discovery
get_lol_teams pulls the full Portal:Teams listing from the League of Legends wiki, returning team_name, team_slug, region, and active_years for every team. Optional start_year and end_year parameters filter to teams active within a specific window, which is useful for historical research or building team databases without manual filtering.
The Liquipedia API is a managed, monitored endpoint for liquipedia.net — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when liquipedia.net changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official liquipedia.net API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track live and upcoming CS, Valorant, LoL, and Dota 2 matches using start times and tournament names from
get_upcoming_matches. - Build a draft analysis tool using champion picks, bans, and patch version from
get_lol_team_matchesfiltered by date range. - Aggregate per-player kill, death, assist, and gold stats across a tournament series using
get_lol_match_player_stats. - Compare Valorant agent pick rates across VCT tournaments using
map_statsand player stats fromget_valorant_agent_stats. - Compile CS player biographies and career info by querying multiple player pages with the
playerparameter inget_cs_esports_data. - Enumerate all LoL teams active in a given year range using
start_yearandend_yearfilters inget_lol_teams. - Monitor roster changes over time by periodically polling
get_team_rosterwith a team slug and wiki name.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Liquipedia have an official developer API?+
What does `get_cs_esports_data` return when I pass all three parameters at once?+
player, team, and tournament are all provided, the response includes three top-level objects in a single call: player with biographical info, team with name and roster array, and tournament with placement results. Each key is only present if the corresponding parameter was supplied.What happens if I provide a tournament path that doesn't exist on the Valorant or CS wiki?+
get_valorant_agent_stats and get_cs_esports_data both return a stale_input status when the specified page does not exist. This applies to misspelled slugs, pages that have been renamed, or tournament paths that have not yet been created on Liquipedia. The path format must match the wiki URL structure exactly, for example VCT/2025/Champions/Statistics.Does the API cover Dota 2 match statistics or player stats the way it does for League of Legends?+
get_upcoming_matches (match feed) and get_team_roster (roster lookup with the dota2 wiki param), but there are no dedicated Dota 2 endpoints for per-player game stats, objectives, or team match history. You can fork this API on Parse and revise it to add those endpoints.Are match times in `get_upcoming_matches` localized to a specific timezone?+
start_time_ph field uses Philippine Time (UTC+8). The timestamp field is also returned as a Unix timestamp, so you can convert to any other timezone in your application. There is no parameter to change the timezone in the response directly.