v1.0.0-BETA · public beta on Modrinth

Your server's statistics, as one JSON API

Statfyr embeds an HTTP server inside your Minecraft server and serves every player statistic, live or offline, as JSON. Dashboards, leaderboards, and Discord bots read from one place instead of scraping logs or poking the database.

GET /api/healthGET /api/playersGET /api/player/<id>GET /api/leaderboard/<stat>

What one call returns

One GET, the whole profile

GET /api/player/<id>/summary folds hundreds of raw Bukkit statistics into a dashboard-ready object. These tiles are rendered from its real field names.

318,402
Blocks mined
summary.blocksMined
3,140
Mob kills
summary.mobKills
128
Deaths
summary.deaths
4,820km
Distance
summary.distanceKm
21,843
Items crafted
summary.itemsCrafted
7,433
Chests opened
summary.chestsOpened

Request

curl http://localhost:8080/api/player/Notch/summary \
  -H "Authorization: Bearer YOUR_API_KEY"

Response

{
  "playtime_formatted": "15d 4h 50m",
  "combat": { "deaths": 128, "player_kills": 41 },
  "movement": { "total_distance_km": 4820.34, "jumps": 92044 },
  "activity": { "blocks_mined": 318402, "items_crafted": 21843 }
}
minecraft:customminecraft:minedminecraft:craftedminecraft:usedminecraft:brokenminecraft:picked_upminecraft:droppedminecraft:killedminecraft:killed_byplaytimeplayer_killsmob_killsblocks_mineditems_picked_upitems_crafted

Why statfyr

Built for owners who ship dashboards

Live and offline players

Online players read straight from the Bukkit statistic API; offline players from the world's stats JSON files. One API covers both.

Nine vanilla categories

custom, mined, crafted, used, broken, picked_up, dropped, killed, killed_by, plus custom stats registered by other plugins.

Safe to poll

A 30-second statistic cache and per-IP rate limiting keep request costs flat even while dashboards poll aggressively.

Point a dashboard at it

Install the plugin, set an API key, and start polling. The full endpoint reference includes copy-paste curl for every route.