Para desarrolladores

API pública JSON · v1

Todos los datos que muestra WG-Watch también están disponibles como JSON. Sin clave, sin registro, gratis: pensado para bots de Discord, sitios web de clanes y análisis propios.

Sin clave de API Sin registro Gratis
5
Endpoints
0
Claves de API necesarias
0
Registro necesario
JSON
Formato de respuesta
01

Pruébalo ya

No se necesita clave. Abre esta dirección en el navegador o consúltala con curl:

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
$

La dirección inicial lista todos los endpoints con sus límites en formato legible por máquina. https://wg-watch.com/api/v1

02

Endpoints

Siete endpoints GET bajo una URL base común. Cada respuesta incluye cabeceras Cache-Control y el mismo objeto meta con la atribución.

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

Perfil de jugador con WN8, WN7 y eficiencia ya calculados.

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

Historial diario y evaluación para 7, 30 y 90 días. Parámetro: days (1–400).

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

Datos del clan con los valores medios de los perfiles reales de los miembros.

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

Resumen semanal del clan: actividad de los miembros, clasificaciones y estadísticas agregadas.

GET /api/v1/online

Cifras actuales de jugadores por juego y región, con el máximo medido.

GET /api/v1/online/history

Serie diaria de cifras de jugadores. Parámetros: game, region, days.

GET /api/v1/status

Estado del servicio y marcas de tiempo de las cachés públicas.

03

Un mismo formato para todas las respuestas

El éxito o el error se deciden en un solo campo. Todo lo demás está en lugares fijos: un solo manejo de errores cubre todos los endpoints.

success — true en caso de éxito, false en caso de error. Basta una sola comprobación.

meta — fuente, versión, marca de tiempo y la atribución (meta.attribution), lista para enlazar.

data — los datos reales del endpoint. En caso de error, un objeto error ocupa su lugar.

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 — indica de cuántos perfiles de miembros se calcularon realmente las medias.

04

Lo que esta API ofrece y la API de Wargaming no

Métricas listas en lugar de datos brutos: WN8, WN7 y eficiencia ya están calculados, incluidos los valores esperados que de otro modo tendrías que mantener tú.

Historial: Wargaming solo entrega el estado actual. WG-Watch recoge puntos de medición diarios y devuelve diferencias en periodos de tiempo.

Medias de clanes basadas en perfiles reales: no el número de Elo, sino la tasa de victorias real de los miembros, indicando de cuántos perfiles procede.

Carga de servidores agregada: valores por minuto, series diarias y máximos que la API de WG no ofrece así.

05

Límites de solicitud

Los límites se aplican por dirección IP y minuto, y son deliberadamente generosos. Si los superas, la API responde con HTTP 429 e indica en la cabecera Retry-After cuándo continuar.

solicitudes por minuto

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

Las consultas en vivo tienen límites más estrictos

Los perfiles que aún no están en la caché se obtienen en vivo de Wargaming: 5 solicitudes por minuto por solicitante, 30 por minuto en total. Los aciertos de caché solo cuentan contra el límite normal del endpoint.

5
/min · IP
30
/min · total
06

Reglas de uso

01

Indica la fuente. Quien reutilice los datos enlaza wg-watch.com. No se pide nada más, y aparece en cada respuesta bajo meta.attribution.

02

Respeta los límites. El límite es por IP y por minuto. Si lo superas, recibirás HTTP 429 con Retry-After. Si necesitas más, pregúntanos por el formulario de contacto.

03

Cachea las respuestas. Cada respuesta lleva una cabecera Cache-Control con una duración razonable. Respétala y los límites serán suficientes sin esfuerzo.

04

Solo lectura. Solo hay GET. No se contemplan accesos de escritura.

Actualidad de los datos

Los datos de jugadores y clanes provienen de la caché y pueden tener hasta una hora de antigüedad: el campo cached_at indica el momento como marca de tiempo Unix. Si un perfil aún no está en la caché, la API lo obtiene en vivo de Wargaming y lo guarda; la respuesta lleva entonces live_fetched: true. Las consultas en vivo están más limitadas (5/minuto por solicitante, 30/minuto en total) y aún no incluyen WN8/WN7/eficiencia: para eso está ratings.available: false. Estos valores se generan en cuanto el perfil se abre una vez en la página. Las cifras de jugadores están actualizadas al minuto.

Desde el navegador

La API establece Access-Control-Allow-Origin: *: una consulta directa desde el sitio web del clan funciona sin pasar por un servidor propio.

Versionado

La versión forma parte de la ruta: actualmente v1. Las nuevas versiones llegan al lado, no encima: las integraciones existentes no se rompen.

Cabeceras de respuesta

Cache-Control indica la vigencia de los datos, CORS permite el acceso directo desde el navegador y Retry-After elimina las suposiciones tras 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
07

Errores

Los errores siempre vienen en el mismo formato. error.code es estable y legible por máquina; error.message está dirigido a personas y puede cambiar.

404 error.code · player_not_found
{
  "success": false,
  "error": {
    "code": "player_not_found",
    "message": "No such player on this region.",
    "region": "eu"
  }
}
HTTP Endpoint Descripción
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.

¿Falta algo?

¿Falta un campo o un endpoint completo? Escríbenos: la API crece con lo que realmente se necesita.

Ir al formulario de contacto