API publique JSON · v1
Toutes les données affichées par WG-Watch sont aussi disponibles en JSON. Sans clé, sans inscription, gratuitement — pensé pour les bots Discord, les sites de clans et tes propres analyses.
Essayer immédiatement
Aucune clé nécessaire. Ouvre cette adresse dans le navigateur ou récupère-la avec curl :
L'adresse de départ liste tous les endpoints avec leurs limites, lisible par machine. https://wg-watch.com/api/v1
Endpoints
Sept endpoints GET sous une URL de base commune. Chaque réponse porte des en-têtes Cache-Control et le même objet meta avec l'attribution.
https://wg-watch.com/api/v1
/api/v1/player/{account_id}/{region}
Profil de joueur avec WN8, WN7 et efficacité déjà calculés.
/api/v1/player/{account_id}/{region}/history
Historique quotidien et analyse sur 7, 30 et 90 jours. Paramètre : days (1–400).
/api/v1/clan/{clan_id}/{region}
Données du clan avec les valeurs moyennes des profils réels des membres.
/api/v1/clan/{clan_id}/{region}/weekly
Récapitulatif hebdomadaire du clan : activité des membres, classements et statistiques agrégées.
/api/v1/online
Nombres de joueurs actuels par jeu et région, avec le record mesuré.
/api/v1/online/history
Série quotidienne des nombres de joueurs. Paramètres : game, region, days.
/api/v1/status
État du service et horodatages des caches de données publics.
Une seule enveloppe pour toutes les réponses
Succès ou échec : tout se joue sur un seul champ. Le reste est à des places fixes — un seul gestionnaire d'erreurs couvre tous les endpoints.
success — true en cas de succès, false en cas d'erreur. Une seule vérification suffit.
meta — source, version, horodatage et l'attribution (meta.attribution), prête à être liée.
data — les données proprement dites de l'endpoint. En cas d'erreur, l'objet error prend sa place.
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 —
indique sur combien de profils de membres les moyennes ont réellement été calculées.
Ce que cette API offre, que l'API Wargaming n'offre pas
Indicateurs prêts à l'emploi plutôt que données brutes : WN8, WN7 et efficacité sont déjà calculés — y compris les valeurs attendues qu'il faudrait sinon maintenir soi-même.
Historique : Wargaming ne fournit que l'état actuel. WG-Watch collecte des points de mesure quotidiens et en tire des différences sur des périodes.
Moyennes de clan à partir de vrais profils : pas le score Elo, mais le taux de victoire réel des membres — en précisant sur combien de profils il repose.
Charge des serveurs agrégée : valeurs à la minute, séries quotidiennes et records que l'API WG ne fournit pas.
Limites de requêtes
Les limites s'appliquent par adresse IP et par minute et sont volontairement généreuses. En cas de dépassement, l'API répond HTTP 429 et indique dans l'en-tête Retry-After quand continuer.
requêtes par 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
Les appels en direct sont plus strictement limités
Les profils pas encore en cache sont récupérés en direct chez Wargaming — 5 requêtes par minute par appelant, 30 par minute au total. Les succès en cache ne comptent que contre la limite normale de l'endpoint.
Règles d'utilisation
Mentionner la source. Quiconque réutilise les données doit mettre un lien vers wg-watch.com. Rien de plus n'est demandé — et c'est indiqué dans chaque réponse sous meta.attribution.
Respecter les limites. La limite s'applique par IP et par minute. En cas de dépassement, HTTP 429 avec Retry-After. Ceux qui ont besoin de plus n'ont qu'à demander via le formulaire de contact.
Mettre les réponses en cache. Chaque réponse porte un en-tête Cache-Control avec une durée raisonnable. Respecte-le, et les limites suffiront largement.
Lecture seule. Il n'y a que du GET. Aucun accès en écriture n'est prévu.
Actualité des données
Les données de joueurs et de clans proviennent du cache et peuvent avoir jusqu'à une heure ; le champ cached_at indique le moment sous forme de timestamp Unix. Si un profil de joueur n'est pas encore dans le cache, l'API le récupère en direct chez Wargaming et le stocke ; la réponse porte alors live_fetched: true. Les appels en direct sont plus strictement limités (5/minute par appelant, 30/minute au total) et ne fournissent pas encore WN8/WN7/efficacité — pour cela, ratings.available: false. Ces valeurs sont générées dès que le profil a été ouvert une fois sur la page. Les nombres de joueurs sont actualisés à la minute.
Depuis le navigateur
L'API définit Access-Control-Allow-Origin: * — un appel direct depuis le site du clan fonctionne sans passer par ton propre serveur.
Versionnage
La version fait partie du chemin — actuellement v1. Les nouvelles versions arrivent à côté, pas par-dessus : les intégrations existantes ne cassent pas.
En-têtes de réponse
Cache-Control indique la durée de validité des données, CORS autorise l'accès direct depuis le navigateur, et Retry-After met fin aux devinettes après un 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
Erreurs
Les erreurs arrivent toujours sous la même forme. error.code est stable et lisible par machine, error.message s'adresse aux humains et peut changer.
error.code · player_not_found
{
"success": false,
"error": {
"code": "player_not_found",
"message": "No such player on this region.",
"region": "eu"
}
}
| HTTP | Endpoint | Description |
|---|---|---|
| 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. |
Quelque chose manque ?
Il manque un champ ou tout un endpoint ? Écris-nous — l'API grandit avec ce qui est réellement nécessaire.
Aller au formulaire de contact