🔌 Wolffiles API

Free public REST API for Wolfenstein: Enemy Territory file data. No authentication required.

✅ Free 🔓 No Auth Required 📦 JSON Responses ⚡ 60 req/min

Base URL

https://wolffiles.eu/api/v1

📁 Files

Returns the most recently uploaded and approved files.

Parameters

gameFilter by game: ET, RtCW (optional)
limitMax results (default: 10, max: 50) (optional)

Example Request

GET https://wolffiles.eu/api/v1/files/latest?limit=5

Returns a single random approved file. Great for discover features.

Parameters

gameFilter by game: ET, RtCW (optional)

Example Request

GET https://wolffiles.eu/api/v1/files/random

Returns files sorted by download count.

Parameters

periodTime period: all, month, week (optional)
limitMax results (default: 10, max: 50) (optional)

Example Request

GET https://wolffiles.eu/api/v1/files/top?period=month&limit=5

Returns files with highest trending score based on recent activity.

Parameters

limitMax results (default: 10, max: 50) (optional)

Example Request

GET https://wolffiles.eu/api/v1/files/trending?limit=5

Returns the currently featured editor pick file.

Example Request

GET https://wolffiles.eu/api/v1/files/featured

Returns full details for a specific file including readme content.

Path Parameters

idFile ID (required)

Response Fields

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

Example Request

GET https://wolffiles.eu/api/v1/files/1

📊 Statistics

Returns aggregate statistics about the Wolffiles platform.

Example Request

GET https://wolffiles.eu/api/v1/stats

📖 Wiki & Tutorials

Search through wiki articles about ET gameplay, mapping and modding.

Parameters

qSearch query (required)
limitMax results (default: 10, max: 50) (optional)

Example Request

GET https://wolffiles.eu/api/v1/wiki/search?q=mapping

Search through ET tutorials and guides.

Parameters

qSearch query (required)
limitMax results (default: 10, max: 50) (optional)

Example Request

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 & Usage

The API is rate limited to 60 requests per minute. Please be respectful with your usage.

Need higher limits? Contact us. Contact

💻 Code Examples

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 · Built with love for the ET Community

Questions? Contact · Join Discord

Wir verwenden Cookies, um die beste Erfahrung auf unserer Website zu gewährleisten. Durch weiteres Surfen stimmst du der Verwendung von Cookies zu. Datenschutzerklärung.