Для разработчиков

Публичное API JSON · v1

Все данные, которые показывает WG-Watch, доступны и как JSON. Без ключей, без регистрации, бесплатно — для Discord-ботов, сайтов кланов и собственных расчётов.

Без API-ключа Без регистрации Бесплатно
5
Эндпоинты
0
Нужен API-ключ
0
Нужна регистрация
JSON
Формат ответа
01

Попробовать сразу

Ключ не нужен. Откройте этот адрес в браузере или запросите через curl:

Терминал · 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
$

Стартовый адрес перечисляет все эндпоинты и лимиты в машиночитаемом виде. https://wg-watch.com/api/v1

02

Эндпоинты

Семь GET-эндпоинтов с общим базовым URL. Каждый ответ содержит заголовки Cache-Control и один и тот же объект meta с указанием источника.

Базовый URL: https://wg-watch.com/api/v1
GET /api/v1/player/{account_id}/{region}

Профиль игрока с уже рассчитанными WN8, WN7 и эффективностью.

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

Ежедневная история и анализ за 7, 30 и 90 дней. Параметр: days (1–400).

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

Данные клана со средними значениями по реальным профилям участников.

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

Еженедельный дайджест клана: активность участников, топ-списки и сводная статистика.

GET /api/v1/online

Текущее число игроков по каждой игре и региону с зафиксированным максимумом.

GET /api/v1/online/history

Дневной ряд числа игроков. Параметры: game, region, days.

GET /api/v1/status

Состояние сервиса и временные метки публичных кэшей данных.

03

Одна оболочка для всех ответов

Успех или ошибка определяются единственным полем. Всё остальное — на фиксированных местах: одного обработчика ошибок хватает на все эндпоинты.

success — true при успехе, false при ошибке. Достаточно одной проверки.

meta — источник, версия, временная метка и указание авторства (meta.attribution), готовое к ссылке.

data — собственно данные эндпоинта. При ошибке их место занимает объект error.

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 — указывает, из скольких профилей участников реально рассчитаны средние значения.

04

Что даёт это API и чего нет в Wargaming API

Готовые показатели вместо сырых данных: WN8, WN7 и эффективность уже рассчитаны — включая ожидаемые значения, которые иначе пришлось бы вести самостоятельно.

История: Wargaming отдаёт только текущее состояние. WG-Watch ежедневно собирает замеры и возвращает разницу за периоды.

Средние по клану на основе реальных профилей: не число Elo, а фактический процент побед участников — с указанием, из скольких профилей он получен.

Агрегированная загрузка серверов: минутные значения, дневные ряды и максимумы, которых нет в WG API.

05

Лимиты запросов

Лимиты действуют на 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 в минуту суммарно. Попадания в кэш считаются только по обычному лимиту эндпоинта.

5
/min · IP
30
/min · total
06

Правила

01

Указывайте источник. Кто использует данные дальше, ставит ссылку на wg-watch.com. Больше ничего не требуется — и это указано в каждом ответе в поле meta.attribution.

02

Соблюдайте лимиты. Ограничение на IP в минуту. При превышении возвращается HTTP 429 с Retry-After. Нужно больше — просто напишите через форму обратной связи.

03

Кэшируйте ответы. Каждый ответ содержит заголовок Cache-Control с разумным сроком. Придерживайтесь его — и лимитов хватит без проблем.

04

Только чтение. Доступен исключительно 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
07

Ошибки

Ошибки всегда приходят в одном виде. error.code стабилен и машиночитаем, error.message адресован людям и может меняться.

404 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 растёт вместе с реальными потребностями.

К форме обратной связи