🔌 Wolffiles API
Darmowe publiczne REST API dla danych plików Wolfenstein: Enemy Territory. Nie wymaga uwierzytelnienia.
Bazowy URL
https://wolffiles.eu/api/v1
📁 Pliki
Przeszukaj wszystkie zatwierdzone pliki z metadanymi.
Parametry
qFraza wyszukiwania (wymagane)gameFiltruj według gry: ET, RtCW (opcjonalne)categoryFiltruj według slug kategorii (opcjonalne)limitMaks. wyniki (domyślnie: 10, max: 50) (opcjonalne)Przykładowe żądanie
GET https://wolffiles.eu/api/v1/files/search?q=goldrush&limit=5
Zwraca ostatnio przesłane i zatwierdzone pliki.
Parametry
gameFiltruj według gry: ET, RtCW (opcjonalne)limitMaks. wyniki (domyślnie: 10, max: 50) (opcjonalne)Przykładowe żądanie
GET https://wolffiles.eu/api/v1/files/latest?limit=5
Zwraca losowy zatwierdzony plik.
Parametry
gameFiltruj według gry: ET, RtCW (opcjonalne)Przykładowe żądanie
GET https://wolffiles.eu/api/v1/files/random
Zwraca pliki posortowane według liczby pobrań.
Parametry
periodOkres: all, month, week (opcjonalne)limitMaks. wyniki (domyślnie: 10, max: 50) (opcjonalne)Przykładowe żądanie
GET https://wolffiles.eu/api/v1/files/top?period=month&limit=5
Zwraca pliki z najwyższym wynikiem trendu.
Parametry
limitMaks. wyniki (domyślnie: 10, max: 50) (opcjonalne)Przykładowe żądanie
GET https://wolffiles.eu/api/v1/files/trending?limit=5
Zwraca aktualnie wyróżniony plik.
Przykładowe żądanie
GET https://wolffiles.eu/api/v1/files/featured
Zwraca pełne szczegóły dla określonego pliku.
Parametry ścieżki
idID pliku (wymagane)Pola odpowiedzi
idintegertitlestringslugstringcategorystringgamestring — ET, RtCWmap_namestring|nullfile_sizestring — "4.2 MB"download_countintegeraverage_ratingfloat — 0.0–5.0urlstringdownload_urlstringthumbnailstring|nullauthorstring|nullpublished_atISO 8601mod_compatibilitystring|nullreadme_contentstring|nulldescriptionstring|nullversionstring|nulltagsarrayscreenshotsarrayPrzykładowe żądanie
GET https://wolffiles.eu/api/v1/files/1
📊 Statystyki
Zwraca zagregowane statystyki platformy Wolffiles.
Przykładowe żądanie
GET https://wolffiles.eu/api/v1/stats
📖 Wiki & Tutoriale
Przeszukaj artykuły wiki o rozgrywce ET, mapowaniu i moddingu.
Parametry
qFraza wyszukiwania (wymagane)limitMaks. wyniki (domyślnie: 10, max: 50) (opcjonalne)Przykładowe żądanie
GET https://wolffiles.eu/api/v1/wiki/search?q=mapping
Przeszukaj tutoriale i poradniki ET.
Parametry
qFraza wyszukiwania (wymagane)limitMaks. wyniki (domyślnie: 10, max: 50) (opcjonalne)Przykładowe żądanie
GET https://wolffiles.eu/api/v1/tutorials/search?q=install
📡 Tracker API
Returns the current number of players and servers online across all tracked games.
Example Request
GET https://wolffiles.eu/api/v1/tracker/online
Returns server and player counts broken down by game (ET 2.60b, ETL, RtCW, etc.).
Example Request
GET https://wolffiles.eu/api/v1/tracker/stats
Returns all currently online servers, sorted by player count. Filter by game slug.
Parameters
gameFilter by game slug (e.g. etl, et-260b) (optional)Example Request
GET https://wolffiles.eu/api/v1/tracker/servers?game=etl
Returns the most populated servers currently online. Max 25.
Parameters
limitNumber of results, max 25 (optional, default 10)Example Request
GET https://wolffiles.eu/api/v1/tracker/servers/top?limit=5
Returns all servers currently playing the given map, plus historical stats (times played, peak players, avg players).
Path Parameter
mapNameMap filename without extension (e.g. venice, supply) (required)Example Request
GET https://wolffiles.eu/api/v1/tracker/maps/venice
Search tracked players by name. Minimum 2 characters required.
Parameters
qPlayer name (min 2 chars) (required)Example Request
GET https://wolffiles.eu/api/v1/tracker/players/search?q=ninja
Returns top players sorted by ELO, kills, playtime, or K/D ratio. Max 25.
Parameters
sortelo / kills / playtime / kd (optional, default elo)limitNumber of results, max 25 (optional, default 10)Example Request
GET https://wolffiles.eu/api/v1/tracker/players/top?sort=elo&limit=10
Returns full profile for a tracked player including ELO, stats, and last 5 sessions.
Path Parameter
idPlayer ID (required)Example Request
GET https://wolffiles.eu/api/v1/tracker/players/1
Returns paginated player rankings for a given period.
Parameters
periodalltime / month / week (optional, default alltime)limitResults per page (optional, default 50)Example Request
GET https://wolffiles.eu/api/v1/tracker/rankings?period=month&limit=10
Returns active clans sorted by member count. Optionally search by tag or name.
Parameters
qSearch by clan tag or name (optional)limitResults per page (optional, default 50)Example Request
GET https://wolffiles.eu/api/v1/tracker/clans?q=etj
🎯 Tracker API — Player Combat
Returns a player's lifetime combat totals: basic kills/deaths/XP/playtime, the enhanced block (headshots, damage, match count — only meaningful when available is true), and current ELO. Complements /tracker/players/{id} (profile).
Path Parameter
idTracker player ID (required)Example Request
GET https://wolffiles.eu/api/v1/tracker/players/1/stats
Response
{
"data": {
"player_id": 1,
"totals": {
"kills": 0, "deaths": 0, "kd_ratio": 0,
"xp": 5498107, "play_time_minutes": 3924, "sessions": 339
},
"enhanced": {
"available": false,
"kills": 0, "deaths": 0, "headshots": 0,
"damage": 0, "matches": 0, "kd_ratio": 0, "headshot_pct": 0
},
"elo": { "rating": 1797.49, "peak": 1797.49, "games": 0, "level": 0 }
}
}
Code
$data = json_decode(file_get_contents(
'https://wolffiles.eu/api/v1/tracker/players/1/stats'
), true)['data'];
echo "K/D: {$data['totals']['kd_ratio']} — XP: {$data['totals']['xp']}\n";
import requests
d = requests.get('https://wolffiles.eu/api/v1/tracker/players/1/stats').json()['data']
print(f"K/D: {d['totals']['kd_ratio']} — XP: {d['totals']['xp']}")
Returns per-weapon stats for a player (hits, attempts, kills, deaths, headshots), with accuracy computed from hits/attempts. Each weapon includes resolved metadata (name, slug, category, side, icon) when known. Empty for players with no recorded weapon data (e.g. seen only on non-enhanced servers).
Path Parameter
idTracker player ID (required)Example Request
GET https://wolffiles.eu/api/v1/tracker/players/379/weapons
Response
{
"data": [
{
"weapon_bit": 3,
"weapon": {
"name": "Colt .45", "slug": "colt", "category": "pistol",
"side": "allied", "icon": "https://wolffiles.eu/img/tracker/weapons/iconw_colt.svg"
},
"hits": 40102, "attempts": 153450, "kills": 100715,
"deaths": 85065, "headshots": 41827, "accuracy": 26.13
}
],
"meta": { "player_id": 379, "count": 18 }
}
Code
$weapons = json_decode(file_get_contents(
'https://wolffiles.eu/api/v1/tracker/players/379/weapons'
), true)['data'];
foreach ($weapons as $w) {
$name = $w['weapon']['name'] ?? "bit {$w['weapon_bit']}";
echo "{$name}: {$w['kills']} kills @ {$w['accuracy']}%\n";
}
import requests
for w in requests.get('https://wolffiles.eu/api/v1/tracker/players/379/weapons').json()['data']:
name = (w['weapon'] or {}).get('name', f"bit {w['weapon_bit']}")
print(f"{name}: {w['kills']} kills @ {w['accuracy']}%")
Returns the names a player has used, ordered by frequency. Includes the raw name (with color codes), clean name, and HTML-rendered name.
Parameters
idTracker player ID (required)limitNumber of aliases, max 500 (optional, default 100)Example Request
GET https://wolffiles.eu/api/v1/tracker/players/11/aliases?limit=3
Response
{
"data": [
{
"name": "^nEts^0|^nT^0o^np^0c^na^0t",
"name_clean": "Ets|Topcat",
"name_html": "<span style=\"color:#993300\">Ets</span>...",
"times_used": 171432,
"first_seen_at": "2026-02-23 17:14:44",
"last_seen_at": "2026-06-17 08:08:43"
}
],
"meta": { "player_id": 11, "count": 3, "limit": 3 }
}
Code
$aliases = json_decode(file_get_contents(
'https://wolffiles.eu/api/v1/tracker/players/11/aliases?limit=5'
), true)['data'];
foreach ($aliases as $a) {
echo "{$a['name_clean']} (used {$a['times_used']}x)\n";
}
import requests
for a in requests.get('https://wolffiles.eu/api/v1/tracker/players/11/aliases', params={'limit': 5}).json()['data']:
print(f"{a['name_clean']} (used {a['times_used']}x)")
Returns a player's recent matches (most recent first) with per-match kills/deaths/score/accuracy and server/map context. Paginated via offset + has_more.
Parameters
idTracker player ID (required)limitResults per page, max 100 (optional, default 25)offsetPagination offset (optional, default 0)Example Request
GET https://wolffiles.eu/api/v1/tracker/players/379/matches?limit=2
Response
{
"data": [
{
"match_id": 33811, "map_name": "tower_b27j",
"server": { "id": 49163, "name": ">M!< Merged! silEnT" },
"started_at": "2026-06-17 19:08:12.000",
"team": null, "class": 0,
"kills": 1, "deaths": 1, "headshots": 0, "gibs": 63,
"score": 820, "accuracy_pct": 46.51, "playtime_seconds": 0
}
],
"meta": { "player_id": 379, "count": 2, "limit": 2, "offset": 0, "has_more": true }
}
Code
$matches = json_decode(file_get_contents(
'https://wolffiles.eu/api/v1/tracker/players/379/matches?limit=10'
), true)['data'];
foreach ($matches as $m) {
echo "{$m['map_name']}: {$m['kills']}/{$m['deaths']} (score {$m['score']})\n";
}
import requests
for m in requests.get('https://wolffiles.eu/api/v1/tracker/players/379/matches', params={'limit': 10}).json()['data']:
print(f"{m['map_name']}: {m['kills']}/{m['deaths']} (score {m['score']})")
Returns individual kill events for a player. RtCW only — ET kills are not stored as individual events (every response carries meta.source: "rtcw"; ET players return an empty feed). Use role to switch between kills made and deaths suffered.
Parameters
idTracker player ID (required)rolekills or deaths (optional, default kills)exclude_botsSet to 1 to omit bot kills (optional)limitResults per page, max 200 (optional, default 50)offsetPagination offset (optional, default 0)Example Request
GET https://wolffiles.eu/api/v1/tracker/players/46614/kills?limit=3
Response
{
"data": [
{
"id": 27147,
"killer": { "player_id": 46614, "slot": 2, "name": "", "name_clean": "", "is_bot": false },
"victim": { "player_id": 236, "slot": 0, "name": "WolfPlayer", "name_clean": "WolfPlayer", "is_bot": false },
"weapon_key": "machinegun", "category": "weapon", "mod_index": 3,
"is_frag": true, "is_world": false,
"killed_at": "2026-06-14 18:03:37", "server_id": 26707, "match_id": 25941
}
],
"meta": { "player_id": 46614, "role": "kills", "source": "rtcw", "count": 3, "limit": 3, "offset": 0, "has_more": true }
}
Code
$res = json_decode(file_get_contents(
'https://wolffiles.eu/api/v1/tracker/players/46614/kills?limit=10&exclude_bots=1'
), true);
foreach ($res['data'] as $k) {
echo "{$k['victim']['name_clean']} ({$k['weapon_key']})\n";
}
import requests
res = requests.get('https://wolffiles.eu/api/v1/tracker/players/46614/kills',
params={'limit': 10, 'exclude_bots': 1}).json()
for k in res['data']:
print(f"{k['victim']['name_clean']} ({k['weapon_key']})")
⚔️ Tracker API — Matches
Returns recent matches (most recent first) with map, server, duration, and player-count summary. Filter by server or map. Paginated via offset + has_more.
Parameters
server_idFilter by server (optional)mapFilter by map name (optional)limitResults per page, max 100 (optional, default 25)offsetPagination offset (optional, default 0)Example Request
GET https://wolffiles.eu/api/v1/tracker/matches?limit=2
Response
{
"data": [
{
"id": 33812,
"server": { "id": 26436, "name": "[eG] SNIPER WAR XPS" },
"map_name": "uje_skull_sniper",
"started_at": "2026-06-17 19:08:37.000",
"ended_at": "2026-06-17 19:08:47.000",
"duration_seconds": 10, "end_reason": "maprestart",
"players": { "max": 0, "avg": 0, "at_start": null, "at_end": null },
"totals": { "kills": 0, "deaths": 0 }
}
],
"meta": { "count": 2, "limit": 2, "offset": 0, "has_more": true }
}
Code
$matches = json_decode(file_get_contents(
'https://wolffiles.eu/api/v1/tracker/matches?limit=10'
), true)['data'];
foreach ($matches as $m) {
echo "{$m['map_name']} on {$m['server']['name']}\n";
}
import requests
for m in requests.get('https://wolffiles.eu/api/v1/tracker/matches', params={'limit': 10}).json()['data']:
print(f"{m['map_name']} on {m['server']['name']}")
Returns full match details plus the complete scoreboard (one row per player, ordered by score). Each row carries kills/deaths/gibs/revives/damage/objectives/score/ping. team and class are raw ET enum integers (may be null for some mods).
Path Parameter
idMatch ID (required)Example Request
GET https://wolffiles.eu/api/v1/tracker/matches/33812
Response
{
"data": {
"match": {
"id": 33812,
"server": { "id": 26436, "name": "[eG] SNIPER WAR XPS" },
"map_name": "uje_skull_sniper",
"started_at": "...", "ended_at": "...", "duration_seconds": 10,
"players": {
"max": 8, "avg": 6,
"at_start": { "total": 8, "allies": 4, "axis": 4, "spectator": 0 },
"at_end": { "total": 6, "allies": 3, "axis": 3, "spectator": 0 }
},
"totals": { "kills": 42, "deaths": 42 }
},
"scoreboard": [
{
"player_id": 1475, "name": "...", "name_clean": "EUR2020|GER",
"slot": 1, "team": 1, "class": 4,
"kills": 12, "deaths": 8, "headshots": 5, "gibs": 2,
"damage_given": 1840, "score": 120, "accuracy_pct": 28.5, "ping_avg": 47
}
]
},
"meta": { "player_count": 8 }
}
Code
$d = json_decode(file_get_contents(
'https://wolffiles.eu/api/v1/tracker/matches/33812'
), true)['data'];
echo "{$d['match']['map_name']} — {$d['meta']['player_count']} players\n";
foreach ($d['scoreboard'] as $p) {
echo " {$p['name_clean']}: {$p['kills']}/{$p['deaths']}\n";
}
import requests
d = requests.get('https://wolffiles.eu/api/v1/tracker/matches/33812').json()['data']
print(d['match']['map_name'])
for p in d['scoreboard']:
print(f" {p['name_clean']}: {p['kills']}/{p['deaths']}")
Returns per-weapon stats for every player in a match, grouped by player (ordered by kills). Same weapon metadata as /players/{id}/weapons.
Path Parameter
idMatch ID (required)Example Request
GET https://wolffiles.eu/api/v1/tracker/matches/33812/weapons
Response
{
"data": [
{
"player_id": 1475, "name": "...", "name_clean": "EUR2020|GER", "kills": 12,
"weapons": [
{
"weapon_bit": 7,
"weapon": { "name": "FG42", "slug": "fg42", "category": "rifle", "side": "axis", "icon": "..." },
"hits": 88, "attempts": 210, "kills": 12, "deaths": 8, "headshots": 5, "accuracy": 41.9
}
]
}
],
"meta": { "match_id": 33812, "player_count": 8 }
}
Code
$players = json_decode(file_get_contents(
'https://wolffiles.eu/api/v1/tracker/matches/33812/weapons'
), true)['data'];
foreach ($players as $p) {
echo "{$p['name_clean']}: " . count($p['weapons']) . " weapons\n";
}
import requests
for p in requests.get('https://wolffiles.eu/api/v1/tracker/matches/33812/weapons').json()['data']:
print(f"{p['name_clean']}: {len(p['weapons'])} weapons")
Returns the kill log of a match in chronological order. RtCW only (meta.source: "rtcw"; empty for ET matches).
Parameters
idMatch ID (required)exclude_botsSet to 1 to omit bot kills (optional)limitResults per page, max 1000 (optional, default 200)Example Request
GET https://wolffiles.eu/api/v1/tracker/matches/25941/kills?limit=50
Response
{
"data": [
{
"id": 38128,
"killer": { "player_id": null, "slot": 4, "name": null, "is_bot": true },
"victim": { "player_id": null, "slot": 3, "name": null, "is_bot": true },
"weapon_key": "mp40", "category": "weapon", "mod_index": 17,
"is_frag": true, "is_world": false,
"killed_at": "2026-06-17 19:47:49", "server_id": 26707, "match_id": 33898
}
],
"meta": { "match_id": 33898, "source": "rtcw", "count": 50, "limit": 50, "offset": 0, "has_more": true }
}
Code
$kills = json_decode(file_get_contents(
'https://wolffiles.eu/api/v1/tracker/matches/25941/kills?limit=100'
), true)['data'];
echo count($kills) . " kills in this match\n";
import requests
kills = requests.get('https://wolffiles.eu/api/v1/tracker/matches/25941/kills', params={'limit': 100}).json()['data']
print(f"{len(kills)} kills in this match")
🏅 Tracker API — Leaderboards
Returns the available leaderboard metrics and time periods to use with /tracker/leaderboards/{metric}.
Example Request
GET https://wolffiles.eu/api/v1/tracker/leaderboards
Response
{
"data": {
"metrics": ["elo", "xp", "kills", "deaths", "playtime", "headshots"],
"periods": ["alltime", "daily", "weekly", "monthly"],
"notes": {
"headshots": "available for the alltime period only",
"default_period": "alltime"
}
}
}
Returns ranked players for a given metric and period. alltime uses lifetime totals; daily/weekly/monthly use the latest snapshot for that window. Each entry has a position, the value for the chosen metric, and a full stats block.
Parameters
metricPath: elo, xp, kills, deaths, playtime, headshots (required)periodalltime, daily, weekly, monthly (optional, default alltime; headshots = alltime only)limitResults per page, max 100 (optional, default 25)offsetPagination offset (optional, default 0)Example Request
GET https://wolffiles.eu/api/v1/tracker/leaderboards/elo?period=alltime&limit=3
Response
{
"data": [
{
"position": 1,
"player": { "id": 1901, "name": "...", "name_clean": "TWH XRP", "name_html": "...", "country_code": "US" },
"value": 1999.69,
"stats": { "elo": 1999.69, "xp": 53394000, "kills": 0, "deaths": 0, "playtime_minutes": 173, "headshots": null }
}
],
"meta": { "metric": "elo", "period": "alltime", "period_date": null, "count": 3, "limit": 3, "offset": 0, "has_more": true }
}
Code
$board = json_decode(file_get_contents(
'https://wolffiles.eu/api/v1/tracker/leaderboards/kills?period=weekly&limit=10'
), true)['data'];
foreach ($board as $e) {
echo "#{$e['position']} {$e['player']['name_clean']} — {$e['value']}\n";
}
import requests
board = requests.get('https://wolffiles.eu/api/v1/tracker/leaderboards/kills',
params={'period': 'weekly', 'limit': 10}).json()['data']
for e in board:
print(f"#{e['position']} {e['player']['name_clean']} — {e['value']}")
🛡️ Tracker API — Clans
Returns detail for an auto-detected clan: tag, name, description, links, member counts, average ELO, and total playtime.
Path Parameter
idClan ID (required)Example Request
GET https://wolffiles.eu/api/v1/tracker/clans/3
Response
{
"data": {
"id": 3, "tag": "F|A", "tag_clean": "F|A", "name": "Fearless Assassins",
"description": "We are glad you decided to stop by...",
"website": null, "discord": null, "country": null, "country_code": null,
"members": { "total": 235, "active": 235 },
"squad_count": 0, "avg_elo": 1000, "total_play_time_minutes": 0,
"status": "active", "is_verified": false,
"first_seen_at": "...", "last_seen_at": "..."
}
}
Code
$c = json_decode(file_get_contents(
'https://wolffiles.eu/api/v1/tracker/clans/3'
), true)['data'];
echo "{$c['name']} — {$c['members']['active']} active members\n";
import requests
c = requests.get('https://wolffiles.eu/api/v1/tracker/clans/3').json()['data']
print(f"{c['name']} — {c['members']['active']} active members")
Returns clan members ordered by role (founder → leader → officer → member), each with player info, role, and squad reference. Only active members by default.
Parameters
idClan ID (required)squad_idFilter to one squad (optional)include_inactiveSet to 1 to include former members (optional)limitResults per page, max 500 (optional, default 100)Example Request
GET https://wolffiles.eu/api/v1/tracker/clans/3/members?limit=3
Response
{
"data": [
{
"player": { "id": 1681, "name": "=F|A= Moses", "name_clean": "=F|A= Moses", "name_html": "...", "country_code": "US", "elo": 1405.96 },
"role": "member", "role_label": "Member",
"squad": null,
"joined_at": "2026-06-11 15:59:24", "left_at": null, "is_active": true
}
],
"meta": { "clan_id": 3, "count": 3, "limit": 3, "offset": 0, "has_more": true }
}
Code
$members = json_decode(file_get_contents(
'https://wolffiles.eu/api/v1/tracker/clans/3/members?limit=50'
), true)['data'];
foreach ($members as $m) {
echo "{$m['player']['name_clean']} — {$m['role']}\n";
}
import requests
for m in requests.get('https://wolffiles.eu/api/v1/tracker/clans/3/members', params={'limit': 50}).json()['data']:
print(f"{m['player']['name_clean']} — {m['role']}")
Returns the squads defined within a clan, each with its active member count. Empty for clans without squads.
Path Parameter
idClan ID (required)Example Request
GET https://wolffiles.eu/api/v1/tracker/clans/3/squads
Response
{
"data": [
{ "id": 7, "name": "Main Squad", "description": "Core roster", "member_count": 12 }
],
"meta": { "clan_id": 3, "count": 1 }
}
Code
$squads = json_decode(file_get_contents(
'https://wolffiles.eu/api/v1/tracker/clans/3/squads'
), true)['data'];
foreach ($squads as $s) {
echo "{$s['name']}: {$s['member_count']} members\n";
}
import requests
for s in requests.get('https://wolffiles.eu/api/v1/tracker/clans/3/squads').json()['data']:
print(f"{s['name']}: {s['member_count']} members")
🗺️ Tracker API — Maps
Returns maps with aggregate play stats (computed live across all servers): servers, times played, total minutes, peak players. Sortable and searchable.
Parameters
sorttime, played, servers, peak, recent (optional, default time)qSearch by map name (optional)limitResults per page, max 200 (optional, default 50)offsetPagination offset (optional, default 0)Example Request
GET https://wolffiles.eu/api/v1/tracker/maps?sort=time&limit=3
Response
{
"data": [
{
"id": 17, "name": "oasis", "name_clean": "oasis",
"file_id": null, "screenshot_path": null,
"stats": {
"servers": 1576, "times_played": 110860,
"time_played_minutes": 3374032, "peak_players": 66,
"last_played_at": "2026-06-17 19:35:48"
},
"first_seen_at": "...", "last_seen_at": "..."
}
],
"meta": { "count": 3, "limit": 3, "offset": 0, "sort": "time", "has_more": true }
}
Code
$maps = json_decode(file_get_contents(
'https://wolffiles.eu/api/v1/tracker/maps?sort=time&limit=10'
), true)['data'];
foreach ($maps as $m) {
echo "{$m['name']}: {$m['stats']['servers']} servers\n";
}
import requests
for m in requests.get('https://wolffiles.eu/api/v1/tracker/maps', params={'sort': 'time', 'limit': 10}).json()['data']:
print(f"{m['name']}: {m['stats']['servers']} servers")
Returns aggregate stats for one map plus the top servers that run it (by total time). Note: this is the historical stats endpoint — for "who is playing this map right now", use /tracker/maps/{mapName}.
Parameters
nameMap name (e.g. goldrush-gals) (required)limitTop servers to return, max 50 (optional, default 10)Example Request
GET https://wolffiles.eu/api/v1/tracker/maps/goldrush-gals/stats
Response
{
"data": {
"map": {
"id": 151, "name": "goldrush-gals", "name_clean": "goldrush-gals",
"file_id": 1881, "screenshot_path": null,
"stats": { "servers": 53, "times_played": 9027, "time_played_minutes": 263750, "peak_players": 60, "last_played_at": "..." },
"first_seen_at": "...", "last_seen_at": "..."
},
"top_servers": [
{
"server": { "id": 15466, "name": "[!!!]Hirntot Legacy" },
"times_played": 506, "total_time_minutes": 35554,
"avg_players": 10.47, "peak_players": 43, "last_played_at": "..."
}
]
},
"meta": { "server_count": 10 }
}
Code
$d = json_decode(file_get_contents(
'https://wolffiles.eu/api/v1/tracker/maps/goldrush-gals/stats'
), true)['data'];
echo "{$d['map']['name']}: {$d['map']['stats']['servers']} servers\n";
import requests
d = requests.get('https://wolffiles.eu/api/v1/tracker/maps/goldrush-gals/stats').json()['data']
print(f"{d['map']['name']}: {d['map']['stats']['servers']} servers")
Returns the maps a server runs most, ordered by total time. Includes times played, total minutes, average and peak players, and last played time.
Parameters
idServer ID (required)limitResults per page, max 200 (optional, default 50)offsetPagination offset (optional, default 0)Example Request
GET https://wolffiles.eu/api/v1/tracker/servers/152/maps?limit=3
Response
{
"data": [
{
"map_name": "goldrush-gals", "times_played": 388,
"total_time_minutes": 12552, "avg_players": 42.67,
"peak_players": 60, "last_played_at": "2026-06-17 19:28:32"
}
],
"meta": { "server_id": 152, "count": 3, "limit": 3, "offset": 0, "has_more": true }
}
Code
$maps = json_decode(file_get_contents(
'https://wolffiles.eu/api/v1/tracker/servers/152/maps?limit=10'
), true)['data'];
foreach ($maps as $m) {
echo "{$m['map_name']}: {$m['times_played']}x\n";
}
import requests
for m in requests.get('https://wolffiles.eu/api/v1/tracker/servers/152/maps', params={'limit': 10}).json()['data']:
print(f"{m['map_name']}: {m['times_played']}x")
Returns the recent kill feed for a server (most recent first). RtCW only (meta.source: "rtcw"; empty for ET servers). Same kill shape as the player kill feed.
Parameters
idServer ID (required)exclude_botsSet to 1 to omit bot kills (optional)limitResults per page, max 200 (optional, default 50)offsetPagination offset (optional, default 0)Example Request
GET https://wolffiles.eu/api/v1/tracker/servers/26707/kills?limit=3
Response
{
"data": [
{
"id": 38134,
"killer": { "player_id": null, "slot": 5, "name": null, "is_bot": true },
"victim": { "player_id": null, "slot": 3, "name": null, "is_bot": true },
"weapon_key": "colt", "category": "weapon", "mod_index": 16,
"is_frag": true, "is_world": false,
"killed_at": "2026-06-17 19:48:52", "server_id": 26707, "match_id": 33898
}
],
"meta": { "server_id": 26707, "source": "rtcw", "count": 3, "limit": 3, "offset": 0, "has_more": true }
}
Code
$kills = json_decode(file_get_contents(
'https://wolffiles.eu/api/v1/tracker/servers/26707/kills?limit=20&exclude_bots=1'
), true)['data'];
echo count($kills) . " recent kills\n";
import requests
kills = requests.get('https://wolffiles.eu/api/v1/tracker/servers/26707/kills',
params={'limit': 20, 'exclude_bots': 1}).json()['data']
print(f"{len(kills)} recent kills")
⚠️ Limity i użytkowanie
API jest ograniczone do 60 żądań na minutę. Prosimy o odpowiedzialne korzystanie.
Potrzebujesz wyższych limitów? Skontaktuj się z nami. Kontakt
💻 Przykłady kodu
curl -s "https://wolffiles.eu/api/v1/files/search?q=goldrush" | python3 -m json.tool
const res = await fetch('https://wolffiles.eu/api/v1/files/search?q=goldrush');
const data = await res.json();
data.results.forEach(f => console.log(`${f.title} — ${f.download_count} downloads`));
import requests
r = requests.get('https://wolffiles.eu/api/v1/files/search', params={'q': 'goldrush', 'limit': 5})
for f in r.json()['results']:
print(f"{f['title']} — {f['download_count']} downloads")
$data = json_decode(file_get_contents(
'https://wolffiles.eu/api/v1/files/search?q=goldrush'
), true);
foreach ($data['results'] as $file) {
echo $file['title'] . ' — ' . $file['download_count'] . " downloads\n";
}
// Discord.js v14 slash command example
const res = await fetch('https://wolffiles.eu/api/v1/files/search?q=' + query);
const { results } = await res.json();
const embed = new EmbedBuilder()
.setTitle(results[0].title)
.setURL(results[0].url)
.addFields(
{ name: 'Downloads', value: String(results[0].download_count), inline: true },
{ name: 'Game', value: results[0].game ?? 'ET', inline: true }
);
await interaction.reply({ embeds: [embed] });
Returns full server details including IP, map, players, and banner/embed URLs ready for use.
Example Request
GET https://wolffiles.eu/api/v1/tracker/servers/270
Returns the server's rank within its game (based on 30-day average player count). Snapshot refreshes every 10 minutes.
Example Request
GET https://wolffiles.eu/api/v1/tracker/servers/270/rank
Returns the top 8 all-time players on this server, ranked by cumulative XP. Snapshot refreshes every 30 minutes.
Example Request
GET https://wolffiles.eu/api/v1/tracker/servers/270/top-players
Returns the list of players currently online on this server with team, score, and session details.
Example Request
GET https://wolffiles.eu/api/v1/tracker/servers/270/online
Returns historical player-count samples for charting. Default last 24 hours, max 168 hours (1 week).
Parameters
hoursLookback window in hours (default: 24, max: 168) (optional)Example Request
GET https://wolffiles.eu/api/v1/tracker/servers/270/history?hours=24
Wolffiles API v1 · Zbudowane z miłością dla społeczności ET
Pytania? Kontakt · Dołącz do Discord