🔌 Wolffiles API
Gratis publieke REST API voor Wolfenstein: Enemy Territory bestandsdata. Geen authenticatie vereist.
Basis URL
https://wolffiles.eu/api/v1
📁 Bestanden
Zoek in alle goedgekeurde bestanden. Geeft de bestanden weer die aan de zoekcriteria voldoen, inclusief metagegevens.
Parameters
qZoekterm (verplicht)gameFilter op spel: ET, RtCW (optioneel)categoryFilter op categorie slug (optioneel)limitMax resultaten (standaard: 10, max: 50) (optioneel)Voorbeeldverzoek
GET https://wolffiles.eu/api/v1/files/search?q=goldrush&limit=5
Geeft de meest recent geüploade en goedgekeurde bestanden terug.
Parameters
gameFilter op spel: ET, RtCW (optioneel)limitMax resultaten (standaard: 10, max: 50) (optioneel)Voorbeeldverzoek
GET https://wolffiles.eu/api/v1/files/latest?limit=5
Geeft één willekeurig goedgekeurd bestand terug. Ideaal voor het ontdekken van functies.
Parameters
gameFilter op spel: ET, RtCW (optioneel)Voorbeeldverzoek
GET https://wolffiles.eu/api/v1/files/random
Geeft bestanden gesorteerd op aantal downloads terug.
Parameters
periodTijdsperiode: all, month, week (optioneel)limitMax resultaten (standaard: 10, max: 50) (optioneel)Voorbeeldverzoek
GET https://wolffiles.eu/api/v1/files/top?period=month&limit=5
Geeft de bestanden weer met de hoogste trendscore op basis van recente activiteit.
Parameters
limitMax resultaten (standaard: 10, max: 50) (optioneel)Voorbeeldverzoek
GET https://wolffiles.eu/api/v1/files/trending?limit=5
Geeft het huidige uitgelichte bestand terug.
Voorbeeldverzoek
GET https://wolffiles.eu/api/v1/files/featured
Geeft alle details weer voor een specifiek bestand, inclusief de inhoud van het readme-bestand.
Pad parameters
idBestand ID (verplicht)Antwoordvelden
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|nulltagsarrayscreenshotsarrayVoorbeeldverzoek
GET https://wolffiles.eu/api/v1/files/1
📊 Statistieken
Geeft geaggregeerde statistieken over het Wolffiles platform terug.
Voorbeeldverzoek
GET https://wolffiles.eu/api/v1/stats
📖 Wiki & Tutorials
Doorzoek wiki-artikelen over ET gameplay, mapping en modding.
Parameters
qZoekterm (verplicht)limitMax resultaten (standaard: 10, max: 50) (optioneel)Voorbeeldverzoek
GET https://wolffiles.eu/api/v1/wiki/search?q=mapping
Doorzoek ET tutorials en handleidingen.
Parameters
qZoekterm (verplicht)limitMax resultaten (standaard: 10, max: 50) (optioneel)Voorbeeldverzoek
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")
⚠️ Rate Limits & Gebruik
De API is beperkt tot 60 verzoeken per minuut. Gebruik het respectvol.
Hogere limieten nodig? Neem contact op. Contact
💻 Codevoorbeelden
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 · Gebouwd met liefde voor de ET Community
Vragen? Contact · Discord joinen