Get a player
A full profile, refreshed live when it is stale.
Returns everything DonutStats knows about a player: every stat, their place on each leaderboard, presence, bounty and what they are selling.
By default the API makes sure the stats are fresh. If they are more than 30 seconds old, they are refreshed live and the response waits up to 15 seconds for the new numbers. Read live lookups before you call this in a loop.
Authentication
Cached for
Data updates
lookup=auto or force. With none, as fresh as the last lookup.202 Accepted
When the player is new to DonutStats and the refresh has not finished within 15 seconds, you get status 202 with player: null and lookup.status: pending. Ask again in a few seconds and the stats will be there.
Lookups have their own budget
Live refreshes are expensive, so each key can start a limited number per minute on top of its request limit. Past that, you get stored data with lookup.status: rate_limited. Use lookup=none for bulk reads.
Path parameters
usernamestringrequiredMinecraft username, case insensitive. 1 to 16 letters, digits or underscores, with an optional leading dot for Bedrock players.
Query parameters
lookupstringoptionaldefaultautoauto: refresh stats older than 30 seconds.force: always refresh, needs theforcescope.none: return stored data only, never wait.autoforcenone
Response
The player and what the lookup did.
playerPlayer | nullThe profile.
nullonly with status 202.ShowHide14 child fields
usernamestringUsername with its current capitalization.
uuidstring | nullMinecraft UUID, once known.
firstSeenAttimestampWhen the player first appeared in DonutStats.
lastSeenAttimestampWhen the player last showed up anywhere: chat, a leaderboard, a listing or a lookup.
lastChatAttimestamp | nullWhen the player last chatted in public chat.
statsobjectEvery stat we know. A stat is left out until we have it.
ShowHide8 child fields
moneynumberBalance in DonutSMP dollars.
shardsintegerShards held.
killsintegerPlayer kills.
deathsintegerDeaths.
playtimeintegerPlaytime in seconds.
placedBlocksintegerBlocks placed.
brokenBlocksintegerBlocks broken.
mobsKilledintegerMobs killed.
statsUpdatedAttimestamp | nullWhen the player's full stats were last refreshed.
valuesUpdatedAttimestamp | nullWhen any single stat last changed, including from a leaderboard.
ranksobjectThe player's place on each leaderboard they appear on, keyed by board id (
money,deaths,playtime,placedBlocks,brokenBlocks,mobsKilled).ShowHide3 child fields
rankintegerPosition on the leaderboard, starting at 1.
valuenumberThe ranked value.
updatedAttimestampWhen that leaderboard snapshot was complete.
views30dintegerProfile views on DonutStats in the last 30 days.
viewsTotalintegerProfile views on DonutStats, all time.
listingsobjectWhat the player is selling on the auction house.
ShowHide3 child fields
openintegerOpen listings by this player.
valuenumberTotal asking price of those listings.
checkedAttimestamp | nullWhen the player's listings were last refreshed.
nullif never.
presenceobjectWhether the player is online, as of the last refresh.
ShowHide4 child fields
onlineboolean | nulltruewhen they were online atcheckedAt.pingMsinteger | nullTheir ping in milliseconds, when online.
checkedAttimestamp | nullWhen presence was checked.
lastOnlineAttimestamp | nullThe last time they were seen online.
bountyobject | nullThe open bounty on this player, or
null.ShowHide2 child fields
amountnumberBounty in DonutSMP dollars.
sincetimestampWhen the bounty first appeared.
lookupLookupWhat the live lookup did.
ShowHide2 child fields
statusstringOne of
fresh,updated,not_found,pending,rate_limited,unavailableorskipped. See live lookups.checkedAttimestamp | nullWhen the stats you got were last refreshed.
