API
Dane listy w JSON, dla botów Discorda, stron serwerów i własnych narzędzi.
Adres
Wszystko przez GET, odpowiedź zawsze w JSON, nagłówek CORS ustawiony.
api/public.phpParametry
| Parametr | Wartość | Do czego |
|---|---|---|
slug | host-port | jeden serwer zamiast całej listy |
online | 1 | tylko serwery, które odpowiadają |
limit | 1-500 | ile pozycji zwrócić, sortowane po graczach |
page | 1, 2, 3… | jedna strona listy zamiast całej, z liczbą wszystkich serwerów i stron |
per | 50, 100, 500 | ile serwerów na stronę, domyślnie 100 |
key | klucz API | gdy właściciel listy włączył klucze |
Przykłady
GET api/public.php
GET api/public.php?online=1&limit=10
GET api/public.php?page=2&per=100
GET api/public.php?slug=mc.hypixel.net-25565
curl -H "X-Api-Key: YOUR_API_KEY" https://example.com/api/public.php
Odpowiedź
Skrócony przykład jednego wpisu. Pole pvp to tryb gry (Survival, SkyBlock, MiniGames...), software bywa puste, gdy serwer go nie podaje.
{
"ok": true,
"count": 1,
"generated": 1790457983,
"servers": [
{
"slug": "mc.hypixel.net-25565",
"name": "Hypixel",
"host": "mc.hypixel.net",
"port": 25565,
"url": "https://hypixel.net",
"country": "us",
"pvp": "MiniGames",
"tags": ["bedwars", "skywars", "skyblock"],
"online": true,
"players": 32389,
"max": 200000,
"peak": 46587,
"uptime": 99.54,
"edition": "java",
"version": "1.8",
"software": "",
"motd": "Hypixel Network [1.8/26.3]\n SKYBLOCK 0.27.1",
"icon": "api/icon.php?s=mc.hypixel.net-25565",
"points": 31,
"checked": 1790457939
}
]
}
Sprawdzenie dowolnego serwera
Pyta serwer na żywo, także taki, którego nie ma na liście. Bez portu: 25565 dla Java, 19132 dla Bedrock.
GET api/status.php?server=mc.hypixel.net
GET api/status.php?server=play.example.com:25565
GET api/status.php?host=play.example.com&port=19132&edition=bedrock
| Pole | Znaczenie |
|---|---|
edition | java albo bedrock |
players.online, players.max, players.peak | gracze online, limit miejsc, szczyt |
version | wersja gry, np. 1.21.4 albo 1.8-1.21 |
version_name | wersja dokładnie tak, jak podaje serwer |
software | oprogramowanie serwera: Paper, Spigot, Velocity, Fabric...; bywa puste |
protocol | numer protokołu Minecraft |
mods | liczba modów (Forge, NeoForge) |
srv | adres z rekordu SRV albo pusty napis |
icon | czy serwer ma własną ikonę |
motd | wiadomość dnia (MOTD) z kodami kolorów § |
ping | czas odpowiedzi w ms |
{
"ok": true,
"server": {
"host": "mc.hypixel.net",
"port": 25565,
"edition": "java",
"srv": "",
"online": true,
"ping": 265,
"version": "1.8",
"version_name": "Requires MC 1.8 / 1.21",
"software": "",
"protocol": 767,
"players": { "online": 32329, "max": 200000, "peak": 0 },
"motd": "§aHypixel Network §c[1.8/26.3]",
"icon": true,
"mods": 0
}
}
Szczegóły serwera z listy
Status, historia graczy, statystyki godzinowe i dzienne, zmiany MOTD.
GET api/server.php?slug=mc.hypixel.net-25565
Ikona serwera
Obrazek PNG 64x64 z ikoną serwera (bez ikony: domyślny blok).
<img src="api/icon.php?s=mc.hypixel.net-25565" width="64" height="64">
Karta podglądu linku
Obrazek PNG 1200x630 z nazwą, adresem, graczami, wersją gry, uptime i trybem gry. Strona serwera podaje go jako og:image, więc tak wygląda link na Discordzie i Facebooku. Język napisów wybierasz parametrem lang (pl, en albo pt).
<img src="api/card.php?s=mc.hypixel.net-25565&lang=en" width="600" height="315">
Nagroda za głos bez otwierania portu
Votifier wymaga otwartego portu 8192: to lista puka do serwera gry. Gdy port jest zamknięty albo serwer akurat się restartuje, głos przepada. Tu jest odwrotnie: plugin na serwerze sam pyta listę o głosy zwykłym zapytaniem HTTP, kiedy chce. Żaden port nie musi być otwarty. Oba sposoby mogą działać jednocześnie.
Uwierzytelnienie: token z panelu serwera (ten sam, którym otwierasz panel), w nagłówku X-Server-Token albo w parametrze token. Nagłówek jest lepszy: adres z tokenem trafia do logów. Gracz wpisuje nick przy głosowaniu na stronie serwera.
| Zapytanie | Do czego |
|---|---|
GET api/votes.php?action=check&username=Steve | czy gracz zagłosował w ostatnich 48 h i czy nagroda już wyszła |
POST api/votes.php {"action":"claim","username":"Steve"} | oznacza najstarszy nieodebrany głos jako nagrodzony; drugi claim tego samego głosu nic nie daje |
GET api/votes.php?action=pending&limit=50 | kolejka głosów czekających na nagrodę (7 dni): po restarcie serwera plugin rozdaje zaległe |
GET api/votes.php?action=top&days=30&limit=10 | ranking głosujących, np. do tablicy w grze |
Okno czasu zmienisz parametrem hours (1-720, domyślnie 48): gracz głosuje wieczorem, wchodzi do gry rano i nagroda nadal czeka. Claim jest jednorazowy także przy dwóch równoczesnych wywołaniach, więc restart serwera niczego nie zdubluje. Zły token: HTTP 401.
curl -H "X-Server-Token: YOUR_SERVER_TOKEN" "https://example.com/api/votes.php?action=check&username=Steve"
{ "ok": true, "username": "Steve", "voted": true, "claimed": false, "vote_id": 812, "voted_at": "2026-09-27 08:12:40", "hours": 48 }
curl -X POST -H "X-Server-Token: YOUR_SERVER_TOKEN" -H "Content-Type: application/json" \
-d '{"action":"claim","username":"Steve"}' https://example.com/api/votes.php
{ "ok": true, "claimed": true, "username": "Steve", "vote_id": 812, "voted_at": "2026-09-27 08:12:40" }
Zasady
- Limit 20 zapytań na minutę z jednego adresu.
- Dane w cache przez 30 sekund, częstsze odpytywanie nic nie da.
- Pomiary robimy co 5 minut, więc szybsze odświeżanie u siebie nie ma sensu.
- Korzystasz publicznie? Miło, jeśli podlinkujesz źródło.
Gracze
Osobny endpoint, tylko dla serwerów, które pokazują nicki graczy online.
GET api/players.php?q=notch
GET api/players.php?top=1&limit=50
GET api/players.php
Pierwszy szuka graczy po fragmencie nicku (minimum 3 znaki), drugi oddaje ostatnio widzianych graczy, trzeci same liczby zbiorcze i listę serwerów, z których mamy nicki.
Widget i sygnatura
Bez pisania kodu: gotowy obrazek i ramka do wklejenia.
<img src="api/signature.php?slug=mc.hypixel.net-25565&style=1">
<iframe src="widget.php?s=mc.hypixel.net-25565" width="240" height="92" frameborder="0"></iframe>