# Liquipedia — Zapi reference
> 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.
**Base URL:** `https://api.zpi.web.id`
**Auth:** Send `x-api-key: YOUR_KEY` header on every request. Get a free key at https://zpi.web.id/dashboard/keys.
**Response envelope:** `{ status, message, content }`
**Rate limit:** 60 req/min on free tier.
**Related:**
- Detail page: https://zpi.web.id/api/esport/liquipedia
- Endpoint catalog: https://zpi.web.id/category/esport
- Concise index: https://zpi.web.id/llms.txt
- Full reference: 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": "