🔌 Wolffiles API

Gratis publieke REST API voor Wolfenstein: Enemy Territory bestandsdata. Geen authenticatie vereist.

✅ Gratis 🔓 Geen auth vereist 📦 JSON antwoorden ⚡ 60 req/min

Basis URL

https://wolffiles.eu/api/v1

📁 Bestanden

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

idinteger
titlestring
slugstring
categorystring
gamestring — ET, RtCW
map_namestring|null
file_sizestring — "4.2 MB"
download_countinteger
average_ratingfloat — 0.0–5.0
urlstring
download_urlstring
thumbnailstring|null
authorstring|null
published_atISO 8601
mod_compatibilitystring|null
readme_contentstring|null
descriptionstring|null
versionstring|null
tagsarray
screenshotsarray

Voorbeeldverzoek

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

We gebruiken cookies om je de beste ervaring op onze website te bieden. Door verder te surfen ga je akkoord met het gebruik van cookies. Privacybeleid.