WARDOGS NOW
Sign in
Continue with your account

Sign in when you are ready

Explore freely. Sign in only to take this action, and we will bring you back here afterward.

Continue with DiscordContinue with Steam
Discord and Steam handle your account credentials. WARDOGS NOW never receives your provider password.
For community websites

Show your server's stats on your own website.

A read only JSON API and two ready made embeds. No key, no account, nothing to install. The server owner turns it on for one server in the RCON console, and only then does it work.

Turn it on

Open your server in the RCON console, choose Public API in the Server section, and switch it on. It needs player stats tracking to be on for that server. Until you switch it on, every address below answers as if the server does not exist. You can switch it off again at any time and it stops within a minute.

Your server's id is the number in its stats page address: https://wardogsnow.com/stats/servers/12.

Embeds

Paste one of these into your page. They are plain HTML with no scripts, refresh themselves every minute, and match a dark or light page with theme=dark or theme=light.

Server status

HTML · Status card
<iframe
  src="https://wardogsnow.com/embed/v1/servers/12/status"
  title="Server status"
  width="100%" height="280"
  style="border:0;max-width:520px"
  loading="lazy"></iframe>

Leaderboard

HTML · Leaderboard
<iframe
  src="https://wardogsnow.com/embed/v1/servers/12/leaderboard?limit=10&window=30d"
  title="Top players"
  width="100%" height="500"
  style="border:0;max-width:520px"
  loading="lazy"></iframe>

Set the iframe height to fit: the status card needs about 250 px, and the leaderboard about 110 px plus 33 px per row (so 500 px for ten players).

ParameterValuesDefault
themedark, lightdark
sortkills, kd, time, wins, matches (leaderboard)kills
windowall, 30d, 7d (leaderboard)all
limit1 to 25 (leaderboard)10
seasona season slug, or allthe current season

JSON API

Base address https://wardogsnow.com/api/public/v1. Read only: GET, HEAD and OPTIONS. Any website may call it from the browser (CORS is open, and no cookies are used or accepted).

EndpointReturns
/servers/{id}State (online, offline, unknown), players now and maximum, map, mode, and totals for the season. map and mode are the names players see in the game, for example Bakurani and King of the Hill. mode also carries any ruleset, such as King of the Hill, Infantry only. Either is null when the server has not reported one.
/servers/{id}/leaderboardTop players with sort, window, limit, season as above.
/servers/{id}/players/{steamId}One player's totals on this server. steamId is the 17 digit SteamID64.

Example

cURL
curl https://wardogsnow.com/api/public/v1/servers/12
JSON · Response
{
  "ok": true,
  "data": {
    "id": 12,
    "name": "Example Server",
    "state": "online",
    "players": 41,
    "max_players": 64,
    "map": "Bakurani",
    "mode": "King of the Hill",
    "totals": { "players_tracked": 812, "matches": 391, "hours": 5120 },
    "season": { "slug": "season-1", "name": "Season 1" },
    "stats_url": "https://wardogsnow.com/stats/servers/12"
  },
  "meta": { "version": "v1", "generated_at": "2026-01-01T12:00:00+00:00", "cache_seconds": 30 }
}
JavaScript
const res = await fetch("https://wardogsnow.com/api/public/v1/servers/12/leaderboard?limit=10");
const { data } = await res.json();
for (const p of data.players) {
  console.log(p.rank, p.name, p.kills, p.kd);
}

Leaderboard row

JSON · One row of data.players
{ "rank": 1, "steam_id": "76561198000000000", "name": "Player", "kills": 4210, "deaths": 2980,
  "kd": 1.41, "hours": 212.5, "matches": 96, "wins": 51, "win_rate": 53 }

Errors

JSON · Error
{ "ok": false, "error": { "code": "not_found", "message": "Not found." } }

404 not_found means the server is unknown, is not tracked, or the owner has not switched the API on; these are deliberately indistinguishable. 429 rate_limited carries a Retry-After header. 405 is any method other than GET, HEAD or OPTIONS.

Fair use

  • Cache on your side. Data refreshes about once a minute. Responses are cacheable for 30 to 60 seconds (see meta.cache_seconds). Fetching more often returns the same numbers.
  • Limit: 120 requests per minute per address. Over that, you get 429 until the minute passes.
  • Attribution: the embeds link back here. If you build your own display from the JSON, a small link to the server's stats page (data.stats_url) is appreciated.
  • Players: names and SteamID64 appear exactly as on the public stats pages. A player who asked to be removed is not returned. Please do not use the data to profile or harass people.
  • Stability: everything under /v1/ only ever gains fields. A breaking change would be published as /v2/, with v1 kept running for a long notice period.