Ö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.
Sofort ausprobieren
Kein Schlüssel nötig. Diese Adresse im Browser öffnen oder mit curl abrufen:
Die Startadresse listet alle Endpunkte samt Limits maschinenlesbar auf. https://wg-watch.com/api/v1
Endpunkte
Sieben GET-Endpunkte unter einer gemeinsamen Basis-URL. Jede Antwort trägt Cache-Control-Header und dasselbe meta-Objekt mit Quellenangabe.
https://wg-watch.com/api/v1
/api/v1/player/{account_id}/{region}
Spielerprofil mit fertig gerechnetem WN8, WN7 und Effizienz.
/api/v1/player/{account_id}/{region}/history
Täglicher Verlauf und Auswertung für 7, 30 und 90 Tage. Parameter: days (1–400).
/api/v1/clan/{clan_id}/{region}
Clandaten samt Durchschnittswerten der tatsächlichen Mitgliederprofile.
/api/v1/clan/{clan_id}/{region}/weekly
Wöchentlicher Clan-Digest: Mitglieder-Aktivität, Top-Listen und aggregierte Statistiken.
/api/v1/online
Aktuelle Spielerzahlen je Spiel und Region, mit gemessenem Höchstwert.
/api/v1/online/history
Tagesreihe der Spielerzahlen. Parameter: game, region, days.
/api/v1/status
Betriebsstatus und Zeitstempel der öffentlichen Daten-Caches.
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.
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.
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.
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.
Spielregeln
Quelle nennen. Wer die Daten weiterverwendet, verlinkt wg-watch.com. Mehr wird nicht verlangt — und es steht in jeder Antwort unter meta.attribution.
Limits einhalten. Begrenzt wird pro IP und Minute. Bei Überschreitung kommt HTTP 429 mit Retry-After. Wer mehr braucht, fragt einfach über das Kontaktformular.
Antworten zwischenspeichern. Jede Antwort trägt einen Cache-Control-Header mit sinnvoller Dauer. Halte dich daran, dann reichen die Limits mühelos.
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
Fehler
Fehler kommen immer in derselben Form. error.code ist stabil und maschinenlesbar, error.message richtet sich an Menschen und kann sich ändern.
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