Pangolin Works game API

Public, read-only game statistics for community projects. No authentication is required. Browser requests are supported with CORS.

Blast Buddies

Fetch the complete snapshot once, then reuse it across your portal. All data endpoints share one budget: one successful request per five minutes per IP address. IPv6 addresses share a budget within each /64 network. Backend proxies share their public IP budget.

const response = await fetch('https://api.pangolinworks.dev/blast-buddies');
if (response.status === 429) {
  // Wait at least Number(response.headers.get('Retry-After')) seconds.
}
const snapshot = response.ok ? await response.json() : null;

Published data

The snapshot includes up to 500 current ranked players, 500 players per previous ranked season, the top 100 daily and weekly players by kills, and the top 100 clans this month. Clan history includes up to twelve previous months, with the top twenty clans and their archived member statistics per available month. Missing ranked archives have available: false. Missing clan archive months are omitted.

Current leaderboard rows include public player IDs, names, level, XP, cosmetics, clan labels, lifetime kills/deaths/assists, games played, per-weapon kills/headshots, and recorded ranked seasons. Lifetime and weapon statistics include casual play. Player details cover listed leaderboard players; this is not a directory of every player. Historical names and cosmetics stay as recorded in the archives. Trophies are current or season-end totals, not historical peaks. Equal-score rows have no guaranteed tie order.

The catalog includes rank divisions, XP levels, maps, weapons, abilities, and clan colors. It is generated from committed game source; its sourceCommit and definitionsNote identify the published definitions. Image paths refer to game assets and are not hosted by this API. Daily and weekly boards reset at 00:03 UTC (Monday for weekly); clans reset on the first day of the month at 00:03 UTC. Reset jobs run in batches and may finish later.

Focused endpoints still consume the same shared budget. Query parameters, player lookups, and arbitrary database queries are not supported. All timestamps use UTC. Public display names are untrusted text: render them as text, never HTML.

Freshness and errors

Snapshots refresh every five minutes. generatedAt records the last successful refresh; metadata.ageSeconds and metadata.stale describe freshness. After ten minutes, retained data is marked stale. Data older than thirty minutes is unavailable. A 503 means no recent snapshot is available; retry after the supplied delay. A 429 includes Retry-After in seconds. Responses include RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset (seconds until the budget resets).

Documentation, health checks, errors, and OPTIONS requests do not consume the data budget. Responses must not be shared-cache stored. Cache the parsed snapshot in your own application and poll at most once every five minutes.

OpenAPI specification · Health