# Esport — Zapi reference > Every Esport endpoint on Zapi, with parameters, request shape and an example response. **Base URL:** `https://api.zpi.web.id` **Auth:** Send `x-api-key: YOUR_KEY` header on every request. Get a key at https://zpi.web.id/dashboard/keys (free tier — 2,000 req/mo, no credit card). **Response envelope:** `{ status: "success" | "error", message: string, content: }` **Rate limit:** 60 req/min (free tier). Per-endpoint cache TTL is documented below. **Errors:** standard HTTP codes (`401` invalid key, `429` rate limited, `5xx` upstream). Body always has `{ status: "error", message, errors? }`. ```bash curl "https://api.zpi.web.id/v1/CATEGORY:SCRAPER/ENDPOINT?param=value" \ -H "x-api-key: $ZAPI_KEY" ``` **Category page:** https://zpi.web.id/category/esport **Full catalog:** https://zpi.web.id/apis · **Index:** https://zpi.web.id/llms-full.txt --- ## Liquipedia **Category:** esport · **Slug:** `liquipedia` **Detail page:** https://zpi.web.id/api/esport/liquipedia Esports wiki data — players, teams, tournaments, matches, transfers, and any page — from Liquipedia game wikis via the public MediaWiki API. Works across dota2, counterstrike, valorant, leagueoflegends, mobilelegends and more. **Tags:** esports, liquipedia, wiki, dota2, valorant, counterstrike ### Search Full-text search across a Liquipedia game wiki. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/esport:liquipedia/search` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `game` | string | query | no | Liquipedia game wiki slug. Common: dota2, counterstrike, valorant, leagueoflegends, mobilelegends, rainbowsix, overwatch, apexlegends, rocketleague, starcraft2, pubg, freefire, callofduty. Default "dota2". | | `q` | string | query | yes | Search query | | `page` | number | query | no | Page number (1-based). Default 1 | | `count` | number | query | no | Results per page (max 50). Default 10 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/esport:liquipedia/search?game=dota2&q=Team%20Spirit&page=1&count=10" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/esport:liquipedia/search?game=dota2&q=Team%20Spirit&page=1&count=10", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/esport:liquipedia/search?game=dota2&q=Team%20Spirit&page=1&count=10", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "game": "dota2", "page": 1, "count": 5, "query": "Team Spirit", "hasMore": true, "results": [ { "url": "https://liquipedia.net/dota2/Team_Spirit", "size": 51578, "title": "Team Spirit", "pageId": 37747, "snippet": "(in Russian). Team Spirit. Team Spirit. \"СОСТАВ TEAM SPIRIT ПО DOTA 2 УКОМПЛЕКТОВАН\" (in Russian). Team Spirit. Team Spirit. \"TEAM SPIRIT ПРОЩАЕТСЯ С DKPHOBOS", "wordCount": 2844 }, { "url": "https://liquipedia.net/dota2/Tier_2_Tournaments", "size": 257, "title": "Tier 2 Tournaments", "pageId": 835, "snippet": "8 participants Team Liquid Team Spirit PGL Wallachia Season 2 Oct 4 - 13, 2024 $1,000,000 Bucharest 16 participants HEROIC Team Falcons FISSURE", "wordCount": 243 }, { "url": "https://liquipedia.net/dota2/Yellow_Submarine", "size": 31667, "title": "Yellow Submarine", "pageId": 23676, "snippet": "prodigy Satanic. Team Spirit manager Korb3n wanted the team to be sponsored by his organisation, but ESL rules did not permit multiple teams under the same", "wordCount": 1827 }, { "url": "https://liquipedia.net/dota2/Miposhka", "size": 3661, "title": "Miposhka", "pageId": 28477, "snippet": "(2018) Miposhka with Team Spirit (2021) Miposhka at WePlay AniMajor 2021 Miposhka with Team Spirit (2022) Miposhka with Team Spirit (2023) Miposhka at PGL", "wordCount": 450 }, { "url": "https://liquipedia.net/dota2/Yatoro", "size": 11596, "title": "Yatoro", "pageId": 121389, "snippet": "Yatoro with Team Spirit (2021) Yatoro at WePlay AniMajor 2021 Yatoro at The International 2021 Yatoro with Team Spirit (2022) Yatoro with Team Spirit (2023)", "wordCount": 1440 } ], "nextPage": 2, "totalHits": 1821 } ``` --- ### Suggest Autocomplete page-title suggestions. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/esport:liquipedia/suggest` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `game` | string | query | no | Liquipedia game wiki slug (dota2, counterstrike, valorant, leagueoflegends, mobilelegends, ...). Default "dota2". | | `q` | string | query | yes | Partial query to autocomplete | | `limit` | number | query | no | Max suggestions (max 20). Default 10 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/esport:liquipedia/suggest?game=dota2&q=Team%20Sp&limit=10" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/esport:liquipedia/suggest?game=dota2&q=Team%20Sp&limit=10", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/esport:liquipedia/suggest?game=dota2&q=Team%20Sp&limit=10", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "game": "dota2", "query": "Team Sp", "suggestions": [ { "url": "https://liquipedia.net/dota2/Team_Spirit", "title": "Team Spirit" }, { "url": "https://liquipedia.net/dota2/Team_Spirit/Played_Matches", "title": "Team Spirit/Played Matches" }, { "url": "https://liquipedia.net/dota2/Team_Spirit/Results", "title": "Team Spirit/Results" }, { "url": "https://liquipedia.net/dota2/Team_Spirit/Played_Matches/Pre-2020", "title": "Team Spirit/Played Matches/Pre-2020" }, { "url": "https://liquipedia.net/dota2/Team_Spirit/History", "title": "Team Spirit/History" } ] } ``` --- ### Player Structured player profile (identity, team, roles, signature picks, socials). - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/esport:liquipedia/player/:id` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `game` | string | query | no | Liquipedia game wiki slug. Common: dota2, counterstrike, valorant, leagueoflegends, mobilelegends, rainbowsix, overwatch, apexlegends, rocketleague, starcraft2, pubg, freefire, callofduty. Default "dota2". | | `id` | string | path | yes | Player page title / in-game id (case-sensitive, spaces or underscores) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/esport:liquipedia/player/:id?game=dota2" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/esport:liquipedia/player/:id?game=dota2", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/esport:liquipedia/player/:id?game=dota2", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "id": "Yatoro", "url": "https://liquipedia.net/dota2/Yatoro", "game": "dota2", "name": "Ілля Мулярчук", "roles": [ "carry", "mid" ], "status": "Active", "country": "Ukraine", "infobox": { "id": "Yatoro", "vk": "yatoro_gxd", "ids": "YATOROGOD, Yatoro雨, Raddan", "hero": "Morphling", "name": "Ілля Мулярчук", "team": "{{PlayerTeamAuto}}", "hero2": "Faceless Void", "hero3": "Terrorblade", "image": "Yatoro 2025 Team Spirit.jpg", "roles": "carry,mid", "faceit": "-balisong", "status": "Active", "twitch": "YatorOxx", "country": "Ukraine", "history": "{{THA}}", "playerid": "321580662", "telegram": "Yatorokale", "givenname": "Illya", "instagram": "yatoro999", "birth_date": "2003-03-12", "familyname": "Mulyarchuk", "romanized_name": "Illya Mulyarchuk" }, "socials": { "vk": "yatoro_gxd", "twitch": "YatorOxx", "telegram": "Yatorokale", "instagram": "yatoro999" }, "realName": "Illya Mulyarchuk", "birthDate": "2003-03-12", "alternateIds": [ "YATOROGOD", "Yatoro雨", "Raddan" ], "sectionCount": 18, "romanizedName": "Illya Mulyarchuk", "signaturePicks": [ "Morphling", "Faceless Void", "Terrorblade" ] } ``` --- ### Team Structured team profile (region, location, socials, staff). - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/esport:liquipedia/team/:name` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `game` | string | query | no | Liquipedia game wiki slug (dota2, counterstrike, valorant, leagueoflegends, ...). Default "dota2". | | `name` | string | path | yes | Team page title (spaces or underscores) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/esport:liquipedia/team/:name?game=dota2" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/esport:liquipedia/team/:name?game=dota2", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/esport:liquipedia/team/:name?game=dota2", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "url": "https://liquipedia.net/dota2/OG", "game": "dota2", "name": "OG", "region": "Southeast Asia", "created": "2015-10-31", "infobox": { "vk": "ogesports", "kick": "ogesports", "name": "OG", "weibo": "u/7267465977", "faceit": "4305da69-3821-49fe-ba5e-35f5b045356c", "reddit": "OGesports", "region": "Southeast Asia", "teamid": "2586976", "tiktok": "ogesportsofficial", "twitch": "ogesports", "created": "2015-10-31", "discord": "ogesports", "fanclub": "https://tl.net/forum/dota-2-players-and-teams/495518-og-discussion", "twitter": "OGesports", "website": "http://ogs.gg", "youtube": "channel/UC0lxu2TmzhqJBkYvqTXVAsw", "facebook": "OGDota2", "linkedin": "og-esports-s-a", "location": "Philippines", "telegram": "OGEsports_ru", "instagram": "ogesports", "location2": "Europe" }, "socials": { "vk": "ogesports", "kick": "ogesports", "weibo": "u/7267465977", "reddit": "OGesports", "tiktok": "ogesportsofficial", "twitch": "ogesports", "discord": "ogesports", "twitter": "OGesports", "youtube": "channel/UC0lxu2TmzhqJBkYvqTXVAsw", "facebook": "OGDota2", "linkedin": "og-esports-s-a", "telegram": "OGEsports_ru", "instagram": "ogesports" }, "website": "http://ogs.gg", "location": "Philippines, Europe", "sectionCount": 21 } ``` --- ### Tournament Structured tournament (prize pool, tier, dates, teams). - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/esport:liquipedia/tournament/:name` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `game` | string | query | no | Liquipedia game wiki slug (dota2, counterstrike, valorant, leagueoflegends, ...). Default "dota2". | | `name` | string | path | yes | Tournament page title (spaces or underscores; subpages use /) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/esport:liquipedia/tournament/:name?game=dota2" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/esport:liquipedia/tournament/:name?game=dota2", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/esport:liquipedia/tournament/:name?game=dota2", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "url": "https://liquipedia.net/dota2/The_International/2024", "game": "dota2", "name": "The International 2024", "tier": "1", "type": "Offline", "patch": "7.37c", "format": "Group Stage
Round-robin
Playoffs
Double-elimination", "series": "The International", "endDate": "2024-09-15", "infobox": { "city": "Copenhagen", "icon": "The International 2024 aegis allmode.png", "name": "The International 2024", "next": "{{BASEPAGENAME}}/2025{{!}}2025", "type": "Offline", "edate": "2024-09-15", "image": "The International 2024 padded allmode.png", "patch": "7.37c", "sdate": "2024-09-04", "venue": "Royal Arena", "weibo": "dota2comcn", "format": "Group Stage
Round-robin
Playoffs
Double-elimination", "series": "The International", "twitch": "dota2ti", "bracket": "https://www.dota2.com/esports/ti13/schedule", "country": "Denmark", "twitter": "dota2ti", "website": "https://www.dota2.com/esports/ti13", "youtube": "dota2", "facebook": "dota2", "leagueid": "16935", "previous": "{{BASEPAGENAME}}/2023{{!}}2023", "rulebook": "https://www.dota2.com/esports/ti13/tirules", "instagram": "dota2", "organizer": "Valve", "shortname": "TI 13", "sort_date": "2024-09-20", "venuedesc": "Finals Weekend", "venuelink": "https://www.royalarena.dk", "headtohead": "true", "organizer2": "PGL", "tickername": "TI 2024", "team_number": "16", "prizepoolusd": "{{:The International/2024/prizepool}}", "publishertier": "international", "liquipediatier": "1" }, "location": { "city": "Copenhagen", "venue": "Royal Arena", "country": "Denmark" }, "organizer": "Valve", "startDate": "2024-09-04", "teamCount": "16" } ``` --- ### Matches Upcoming and completed matches with teams, time, format. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/esport:liquipedia/matches` - **Cache TTL:** 60s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `game` | string | query | no | Liquipedia game wiki slug (dota2, counterstrike, valorant, leagueoflegends, ...). Default "dota2". | | `count` | number | query | no | Max matches to return (max 50). Default 20 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/esport:liquipedia/matches?game=dota2&count=20" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/esport:liquipedia/matches?game=dota2&count=20", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/esport:liquipedia/matches?game=dota2&count=20", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "game": "dota2", "count": 8, "matches": [ { "score": null, "team1": "Team Syntax", "team2": "Summer Bear", "format": "Bo3", "status": "upcoming", "timestamp": 1783332000, "tournament": "European Pro League/39", "startsAtIso": "2026-07-06T10:00:00.000Z" }, { "score": null, "team1": "Balu Team", "team2": "Team Syntax", "format": "Bo3", "status": "upcoming", "timestamp": 1783342800, "tournament": "European Pro League/39", "startsAtIso": "2026-07-06T13:00:00.000Z" }, { "score": null, "team1": "Team Falcons", "team2": "BB Team", "format": "Bo2", "status": "upcoming", "timestamp": 1783414800, "tournament": "Esports World Cup/2026/Group Stage", "startsAtIso": "2026-07-07T09:00:00.000Z" }, { "score": null, "team1": "Poor Rangers", "team2": "GamerLegion", "format": "Bo2", "status": "upcoming", "timestamp": 1783414800, "tournament": "Esports World Cup/2026/Group Stage", "startsAtIso": "2026-07-07T09:00:00.000Z" }, { "score": null, "team1": "Rune Eaters", "team2": "Xtreme Gaming", "format": "Bo2", "status": "upcoming", "timestamp": 1783414800, "tournament": "Esports World Cup/2026/Group Stage", "startsAtIso": "2026-07-07T09:00:00.000Z" }, { "score": null, "team1": "Balu Team", "team2": "Summer Bear", "format": "Bo3", "status": "upcoming", "timestamp": 1783418400, "tournament": "European Pro League/39", "startsAtIso": "2026-07-07T10:00:00.000Z" }, { "score": null, "team1": "Team Liquid", "team2": "PTime", "format": "Bo2", "status": "upcoming", "timestamp": 1783423800, "tournament": "Esports World Cup/2026/Group Stage", "startsAtIso": "2026-07-07T11:30:00.000Z" }, { "score": null, "team1": "L1 TEAM", "team2": "Nigma Galaxy", "format": "Bo2", "status": "upcoming", "timestamp": 1783423800, "tournament": "Esports World Cup/2026/Group Stage", "startsAtIso": "2026-07-07T11:30:00.000Z" } ] } ``` --- ### Transfers Roster transfers for a period (players, old/new team, date). - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/esport:liquipedia/transfers` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `game` | string | query | no | Liquipedia game wiki slug (dota2, counterstrike, valorant, leagueoflegends, ...). Default "dota2". | | `period` | string | query | yes | Transfer period path after "Transfers/" (e.g. "2015/1st Quarter", "2024"). Titles vary per game. | | `page` | number | query | no | Page number (1-based). Default 1 | | `count` | number | query | no | Rows per page (max 100). Default 50 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/esport:liquipedia/transfers?game=dota2&period=2015%2F1st%20Quarter&page=1&count=50" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/esport:liquipedia/transfers?game=dota2&period=2015%2F1st%20Quarter&page=1&count=50", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/esport:liquipedia/transfers?game=dota2&period=2015%2F1st%20Quarter&page=1&count=50", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "url": "https://liquipedia.net/dota2/Transfers/2015/1st_Quarter", "game": "dota2", "page": 1, "count": 8, "total": 138, "period": "2015/1st Quarter", "hasMore": true, "nextPage": 2, "transfers": [ { "date": "2015-03-31", "roles": [], "newTeam": null, "oldTeam": "vega", "players": [ "sQreen" ] }, { "date": "2015-03-31", "roles": [], "newTeam": null, "oldTeam": "aces", "players": [ "Misa", "77", "SPH" ] }, { "date": "2015-03-30", "roles": [], "newTeam": "sfz", "oldTeam": null, "players": [ "KaHT" ] }, { "date": "2015-03-30", "roles": [], "newTeam": null, "oldTeam": "sfz", "players": [ "ArtStyle" ] }, { "date": "2015-03-29", "roles": [], "newTeam": "root", "oldTeam": "fire", "players": [ "FLUFFNSTUFF" ] }, { "date": "2015-03-26", "roles": [], "newTeam": "team malaysia", "oldTeam": "ehome.my", "players": [ "kYxY", "Kecik Imba", "Ohaiyo", "JoHnNy", "Mushi" ] }, { "date": "2015-03-25", "roles": [], "newTeam": null, "oldTeam": "navi", "players": [ "Goblak" ] }, { "date": "2015-03-24", "roles": [], "newTeam": "nar", "oldTeam": null, "players": [ "bLeeK", "Korok", "MSS", "USH", "Fogged" ] } ] } ``` --- ### Category List members of a wiki category. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/esport:liquipedia/category` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `game` | string | query | no | Liquipedia game wiki slug (dota2, counterstrike, valorant, ...). Default "dota2". | | `category` | string | query | yes | Category name (with or without "Category:" prefix) | | `page` | number | query | no | Page number (1-based). Default 1 | | `count` | number | query | no | Members per page (max 50). Default 20 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/esport:liquipedia/category?game=dota2&category=Players&page=1&count=20" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/esport:liquipedia/category?game=dota2&category=Players&page=1&count=20", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/esport:liquipedia/category?game=dota2&category=Players&page=1&count=20", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "game": "dota2", "page": 1, "count": 8, "hasMore": true, "members": [ { "ns": 0, "url": "https://liquipedia.net/dota2/.Ark", "title": ".Ark", "pageId": 61410 }, { "ns": 0, "url": "https://liquipedia.net/dota2/04", "title": "04", "pageId": 51760 }, { "ns": 0, "url": "https://liquipedia.net/dota2/11", "title": "11", "pageId": 126564 }, { "ns": 0, "url": "https://liquipedia.net/dota2/1437", "title": "1437", "pageId": 2849 }, { "ns": 0, "url": "https://liquipedia.net/dota2/23savage", "title": "23savage", "pageId": 105895 }, { "ns": 0, "url": "https://liquipedia.net/dota2/290", "title": "290", "pageId": 50847 }, { "ns": 0, "url": "https://liquipedia.net/dota2/2hoi", "title": "2hoi", "pageId": 60619 }, { "ns": 0, "url": "https://liquipedia.net/dota2/33", "title": "33", "pageId": 44308 } ], "category": "Players", "nextPage": 2 } ``` --- ### Page Full rendered page: HTML, sections, categories. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/esport:liquipedia/page/:title` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `game` | string | query | no | Liquipedia game wiki slug (dota2, counterstrike, valorant, leagueoflegends, mobilelegends, ...). Default "dota2". | | `title` | string | path | yes | Page title (spaces or underscores) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/esport:liquipedia/page/:title?game=dota2" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/esport:liquipedia/page/:title?game=dota2", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/esport:liquipedia/page/:title?game=dota2", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "url": "https://liquipedia.net/dota2/OG", "game": "dota2", "html": "