Публичное API JSON · v1
Все данные, которые показывает WG-Watch, доступны и как JSON. Без ключей, без регистрации, бесплатно — для Discord-ботов, сайтов кланов и собственных расчётов.
Попробовать сразу
Ключ не нужен. Откройте этот адрес в браузере или запросите через curl:
Стартовый адрес перечисляет все эндпоинты и лимиты в машиночитаемом виде. https://wg-watch.com/api/v1
Эндпоинты
Семь GET-эндпоинтов с общим базовым URL. Каждый ответ содержит заголовки Cache-Control и один и тот же объект meta с указанием источника.
https://wg-watch.com/api/v1
/api/v1/player/{account_id}/{region}
Профиль игрока с уже рассчитанными WN8, WN7 и эффективностью.
/api/v1/player/{account_id}/{region}/history
Ежедневная история и анализ за 7, 30 и 90 дней. Параметр: days (1–400).
/api/v1/clan/{clan_id}/{region}
Данные клана со средними значениями по реальным профилям участников.
/api/v1/clan/{clan_id}/{region}/weekly
Еженедельный дайджест клана: активность участников, топ-списки и сводная статистика.
/api/v1/online
Текущее число игроков по каждой игре и региону с зафиксированным максимумом.
/api/v1/online/history
Дневной ряд числа игроков. Параметры: game, region, days.
Одна оболочка для всех ответов
Успех или ошибка определяются единственным полем. Всё остальное — на фиксированных местах: одного обработчика ошибок хватает на все эндпоинты.
success — true при успехе, false при ошибке. Достаточно одной проверки.
meta — источник, версия, временная метка и указание авторства (meta.attribution), готовое к ссылке.
data — собственно данные эндпоинта. При ошибке их место занимает объект error.
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 —
указывает, из скольких профилей участников реально рассчитаны средние значения.
Что даёт это API и чего нет в Wargaming API
Готовые показатели вместо сырых данных: WN8, WN7 и эффективность уже рассчитаны — включая ожидаемые значения, которые иначе пришлось бы вести самостоятельно.
История: Wargaming отдаёт только текущее состояние. WG-Watch ежедневно собирает замеры и возвращает разницу за периоды.
Средние по клану на основе реальных профилей: не число Elo, а фактический процент побед участников — с указанием, из скольких профилей он получен.
Агрегированная загрузка серверов: минутные значения, дневные ряды и максимумы, которых нет в WG API.
Лимиты запросов
Лимиты действуют на IP-адрес в минуту и намеренно щедрые. При превышении API отвечает HTTP 429 и в заголовке Retry-After говорит, когда можно продолжить.
запросов в минуту
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
Живые запросы ограничены строже
Профили, которых ещё нет в кэше, API запрашивает у Wargaming вживую — 5 запросов в минуту на вызывающего, 30 в минуту суммарно. Попадания в кэш считаются только по обычному лимиту эндпоинта.
Правила
Указывайте источник. Кто использует данные дальше, ставит ссылку на wg-watch.com. Больше ничего не требуется — и это указано в каждом ответе в поле meta.attribution.
Соблюдайте лимиты. Ограничение на IP в минуту. При превышении возвращается HTTP 429 с Retry-After. Нужно больше — просто напишите через форму обратной связи.
Кэшируйте ответы. Каждый ответ содержит заголовок Cache-Control с разумным сроком. Придерживайтесь его — и лимитов хватит без проблем.
Только чтение. Доступен исключительно GET. Пишущий доступ не предусмотрен.
Актуальность данных
Данные игроков и кланов приходят из кэша и могут быть давностью до часа — поле cached_at указывает момент как Unix-время. Если профиля ещё нет в кэше, API запрашивает его у Wargaming вживую и сохраняет; в ответе тогда live_fetched: true. Живые запросы сильнее ограничены (5 в минуту на вызывающего, 30 в минуту суммарно) и пока не содержат WN8/WN7/эффективность — за это отвечает ratings.available: false. Эти значения появляются после первого открытия профиля на сайте. Данные о числе игроков обновляются ежеминутно.
Из браузера
API отдаёт Access-Control-Allow-Origin: * — запрос прямо с сайта клана работает без посредника в виде собственного сервера.
Версионирование
Версия — часть пути: сейчас v1. Новые версии появляются рядом, а не вместо старой — существующие интеграции не ломаются.
Заголовки ответа
Cache-Control называет срок актуальности данных, CORS разрешает прямой доступ из браузера, а Retry-After избавляет от гаданий после 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
Ошибки
Ошибки всегда приходят в одном виде. error.code стабилен и машиночитаем, error.message адресован людям и может меняться.
error.code · player_not_found
{
"success": false,
"error": {
"code": "player_not_found",
"message": "No such player on this region.",
"region": "eu"
}
}
| HTTP | Эндпоинт | Описание |
|---|---|---|
| 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. |
Чего-то не хватает?
Не хватает поля или целого эндпоинта? Напишите нам — API растёт вместе с реальными потребностями.
К форме обратной связи