Für Entwickler

Öffentliche API JSON · v1

Alle Daten, die WG-Watch anzeigt, gibt es auch als JSON. Ohne Schlüssel, ohne Anmeldung, kostenlos — gedacht für Discord-Bots, Clan-Webseiten und eigene Auswertungen.

Kein API-Schlüssel Keine Anmeldung Kostenlos
5
Endpunkte
0
API-Schlüssel nötig
0
Anmeldung erforderlich
JSON
Antwortformat
01

Sofort ausprobieren

Kein Schlüssel nötig. Diese Adresse im Browser öffnen oder mit curl abrufen:

Terminal · curl GET
$ curl https://wg-watch.com/api/v1/online
$ curl https://wg-watch.com/api/v1/player/519363312/eu
$ curl "https://wg-watch.com/api/v1/online/history?game=wot&region=eu&days=30"
$ curl https://wg-watch.com/api/v1/clan/500214248/eu/weekly
$ curl https://wg-watch.com/api/v1/status
$

Die Startadresse listet alle Endpunkte samt Limits maschinenlesbar auf. https://wg-watch.com/api/v1

02

Endpunkte

Sieben GET-Endpunkte unter einer gemeinsamen Basis-URL. Jede Antwort trägt Cache-Control-Header und dasselbe meta-Objekt mit Quellenangabe.

Basis-URL: https://wg-watch.com/api/v1
GET /api/v1/player/{account_id}/{region}

Spielerprofil mit fertig gerechnetem WN8, WN7 und Effizienz.

GET /api/v1/player/{account_id}/{region}/history

Täglicher Verlauf und Auswertung für 7, 30 und 90 Tage. Parameter: days (1–400).

GET /api/v1/clan/{clan_id}/{region}

Clandaten samt Durchschnittswerten der tatsächlichen Mitgliederprofile.

GET /api/v1/clan/{clan_id}/{region}/weekly

Wöchentlicher Clan-Digest: Mitglieder-Aktivität, Top-Listen und aggregierte Statistiken.

GET /api/v1/online

Aktuelle Spielerzahlen je Spiel und Region, mit gemessenem Höchstwert.

GET /api/v1/online/history

Tagesreihe der Spielerzahlen. Parameter: game, region, days.

GET /api/v1/status

Betriebsstatus und Zeitstempel der öffentlichen Daten-Caches.

03

Eine Hülle für alle Antworten

Erfolg oder Fehler entscheidet sich an einem einzigen Feld. Alles Weitere liegt an festen Plätzen — so reicht eine einzige Fehlerbehandlung für alle Endpunkte.

success — true bei Erfolg, false bei Fehlern. Eine einzige Prüfung genügt.

meta — Quelle, Version, Zeitstempel und die Quellenangabe (meta.attribution), fertig zum Verlinken.

data — die eigentlichen Daten des Endpunkts. Bei Fehlern steht hier stattdessen das error-Objekt.

200 OK GET /api/v1/clan/500214248/eu
{
  "success": true,
  "meta": {
    "source": "WG-Watch.com",
    "version": "v1",
    "generated": "2026-08-06T18:05:12+00:00",
    "attribution": "Data via wg-watch.com — please credit when reusing."
  },
  "data": {
    "clan_id": 500214248,
    "tag": "MERCY",
    "name": "No Mercy",
    "members_count": 100,
    "ratings": {
      "elo_10": 1146,
      "elo_8": 1000,
      "skirmish_win_rate": 63.59,
      "skirmish_battles": 4590
    },
    "members": {
      "profiles_measured": 98,
      "avg_win_rate": 55.24,
      "avg_damage": 1804,
      "avg_battles": 20983
    },
    "cached_at": 1786031123
  }
}

members.profiles_measured — nennt die Zahl der Mitgliederprofile, aus denen die Durchschnittswerte tatsächlich berechnet wurden.

04

Was diese API bietet, was die Wargaming-API nicht bietet

Fertige Kennzahlen statt Rohdaten: WN8, WN7 und Effizienz sind bereits berechnet — inklusive der Erwartungswerte, die man sonst selbst pflegen müsste.

Verlauf: Wargaming liefert nur den aktuellen Stand. WG-Watch sammelt täglich Messpunkte und gibt daraus Differenzen über Zeiträume zurück.

Clan-Durchschnitte über echte Profile: nicht die Elo-Zahl, sondern die tatsächliche Siegquote der Mitglieder — mit Angabe, aus wie vielen Profilen sie stammt.

Aggregierte Serverauslastung: Minutenwerte, Tagesreihen und Höchstwerte, die die WG-API so nicht ausgibt.

05

Rate-Limits

Die Limits gelten pro IP-Adresse und Minute und sind bewusst großzügig bemessen. Bei Überschreitung antwortet die API mit HTTP 429 und sagt im Retry-After-Header, wann es weitergeht.

Anfragen pro Minute

pro IP
/api/v1/player/{account_id}/{region} 30/min
/api/v1/player/{account_id}/{region}/history 20/min
/api/v1/clan/{clan_id}/{region} 30/min
/api/v1/clan/{clan_id}/{region}/weekly 10/min
/api/v1/online 60/min
/api/v1/online/history 30/min
/api/v1/status 60/min

Live-Abrufe sind strenger begrenzt

Profile, die noch nicht im Cache liegen, holt die API live bei Wargaming — 5 Anfragen je Minute pro Aufrufer, 30 je Minute insgesamt. Cache-Treffer zählen nur gegen das normale Endpunkt-Limit.

5
/min · IP
30
/min · total
06

Spielregeln

01

Quelle nennen. Wer die Daten weiterverwendet, verlinkt wg-watch.com. Mehr wird nicht verlangt — und es steht in jeder Antwort unter meta.attribution.

02

Limits einhalten. Begrenzt wird pro IP und Minute. Bei Überschreitung kommt HTTP 429 mit Retry-After. Wer mehr braucht, fragt einfach über das Kontaktformular.

03

Antworten zwischenspeichern. Jede Antwort trägt einen Cache-Control-Header mit sinnvoller Dauer. Halte dich daran, dann reichen die Limits mühelos.

04

Nur lesend. Es gibt ausschließlich GET. Schreibende Zugriffe sind nicht vorgesehen.

Aktualität der Daten

Spieler- und Clandaten kommen aus dem Cache und können bis zu einer Stunde alt sein — das Feld cached_at nennt den Zeitpunkt als Unix-Zeitstempel. Steht ein Spielerprofil noch nicht im Cache, holt die API es live bei Wargaming und legt es ab; die Antwort trägt dann live_fetched: true. Live-Abrufe sind strenger begrenzt (5/Minute je Aufrufer, 30/Minute insgesamt) und liefern noch keine WN8/WN7/Effizienz — dafür steht ratings.available: false. Diese Werte entstehen, sobald das Profil einmal auf der Seite geöffnet wurde. Spielerzahlen sind minutenaktuell.

Aus dem Browser

Die API setzt Access-Control-Allow-Origin: * — ein Aufruf direkt aus der Clan-Webseite funktioniert ohne Umweg über einen eigenen Server.

Versionierung

Die Version ist Teil des Pfades — aktuell v1. Neue Versionen kommen daneben, nicht darüber: bestehende Integrationen brechen nicht.

Antwort-Header

Cache-Control nennt die Gültigkeitsdauer der Daten, CORS erlaubt den direkten Zugriff aus dem Browser, und Retry-After beendet das Raten nach einem 429.

Access-Control-Allow-Origin: *
Cache-Control: public, max-age=300
Content-Type: application/json; charset=utf-8
Retry-After: 60            # nur bei HTTP 429
07

Fehler

Fehler kommen immer in derselben Form. error.code ist stabil und maschinenlesbar, error.message richtet sich an Menschen und kann sich ändern.

404 error.code · player_not_found
{
  "success": false,
  "error": {
    "code": "player_not_found",
    "message": "No such player on this region.",
    "region": "eu"
  }
}
HTTP Endpunkt Beschreibung
400 invalid_account_id Account ID missing or not a positive integer.
400 invalid_region Region is not one of eu, na, asia.
404 player_not_found No account with this ID on this region.
404 clan_not_cached Clan not in cache yet.
404 no_history No snapshots recorded for this account.
404 unknown_endpoint Path does not match any endpoint.
404 unknown_version API version in the path does not exist.
429 rate_limited Per-IP limit exceeded. See Retry-After.
429 rate_limited_global Shared live-lookup budget exhausted this minute.
503 database_unavailable Temporary backend problem.

Etwas fehlt?

Fehlt ein Feld oder ein ganzer Endpunkt? Schreib uns — die API wächst mit dem, was tatsächlich gebraucht wird.

Zum Kontaktformular