Methodology

About Invariance Statistics

A public, keyless statistics site and long-running collector for Fortnite Creative islands and Roblox experiences. It is built to surface early growth and show when demand and supply inside a genre are moving apart.

Sources

First-party public data

Fortnite
Epic ecosystem API for island catalog metadata and Epic's own minute, hour, and day metric buckets.
Roblox
Roblox public web APIs for game metadata, concurrent players, counters, votes, and discovery seeds.

Collection

Cadence by platform and tier

PlatformTierCollection cadenceWhy
FortnitePanelMinute metrics every 30 min; daily metrics dailyCaptures Epic's 10-minute buckets with a recovery pass.
FortniteWatchDailyTracks every island with plays in the last 30 days.
FortniteColdWeeklyKeeps the rest of the catalog covered at low cost.
RobloxPanelPlaying every 10 min; votes hourlyPreserves intraday peaks and launch shape.
RobloxWatchPlaying hourly; votes dailySupports honest daily peaks beyond the panel.
RobloxColdDailyMaintains low-resolution coverage of quiet games.

Missing data

Gaps stay visible

Missing observations remain explicit absences and are never interpolated or assigned synthetic timestamps. Recoverable Epic buckets are re-read within their upstream window; anything unrecoverable stays missing and is recorded as a gap.

Honest parity

What this dataset does not claim

  • Finest Fortnite resolution is 10 minutes, Epic's floor; fortnite.gg shows one-minute data for the last hour through sources we rejected.
  • There is no Discover-placement archive. fortnite.gg has one back to 2023 through the in-game API we rejected; revisiting that source would require an explicit future decision.
  • Fortnite genres use Epic's tags and categories, not fortnite.gg's 152 community tags.
  • Fortnite release dates are known only for islands first seen after collection started.
  • All-time peaks are tracked peaks bounded by collection start, the same caveat Rolimons states.
  • History depth grows from zero on launch day. The differentiating views use our own observations, so they widen over time instead of pretending to match an incumbent's head start.

Public JSON API

Version 1 endpoints

Replace {platform} with fortnite or roblox. Responses are public and need no API key; list and series filters are passed as query parameters.

GET /api/v1/status

Coarse collector freshness and recent gap counts.

Parameters: None

Example: /api/v1/status

GET /api/v1/{platform}/list

Paginated tracked-title metrics and filters.

Parameters: sort, dir, q, genre, tier, created_in (Fortnite), min_*, max_*, page, per_page

Example: /api/v1/fortnite/list?sort=peak_7d&dir=desc&page=1&per_page=25

GET /api/v1/{platform}/entity/{id}

One title's profile, latest metrics, and ranks.

Parameters: None

Example: /api/v1/fortnite/entity/42

GET /api/v1/{platform}/entity/{id}/series

A chart-ready metric series at the range's public resolution.

Parameters: metric; range=24h|7d|30d|90d|1y|all

Example: /api/v1/roblox/entity/123456/series?metric=playing&range=30d

GET /api/v1/{platform}/genres

Genre demand, activity, releases, and concentration aggregates.

Parameters: range=24h|7d|30d|90d|1y|all

Example: /api/v1/fortnite/genres?range=90d

GET /api/v1/{platform}/rising

Momentum ranking from the latest two full seven-day windows.

Parameters: None

Example: /api/v1/roblox/rising

Freshness

Collector freshness and coarse recent-gap counts are available at /api/v1/status.