Games & Comics — entry 050 of 75
PlayerDB
Run by Nodecraft, PlayerDB is a keyless JSON lookup service normalizing player data across Minecraft, Hytale, Steam, and Xbox into one common schema (username, ID, avatar, plus platform-specific metadata). Live checks confirm no rate limits and no auth — the docs only ask for an identifying User-Agent as a courtesy, not an enforced requirement — with `Access-Control-Allow-Origin: *` on every response.
PlayerDB (run by Nodecraft) normalizes player lookups across Minecraft, Steam, Xbox, and Hytale into one common JSON schema via a single platform-in-path route. A live GET this run against /player/minecraft/Notch returned a genuine 1,613 B object at HTTP 200, content-type: application/json; charset=utf-8.
GreatAPIs Score
Auth quickstart
- No API key, signup, or credit card required — the live GET above returned real player data with no auth header of any kind attached.
access-control-allow-origin: *was present on every response tested this run, so direct browser fetches work too.
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Look up a Minecraft player by username
GEThttps://playerdb.co/api/player/minecraft/Notch
{
"code": "player.found",
"message": "Successfully found player by given ID.",
"data": {
"player": {
"meta": { "cached_at": 1785089645 },
"username": "Notch",
"id": "069a79f4-44e9-4726-a5be-fca90e38aaf5",
"raw_id": "069a79f444e94726a5befca90e38aaf5",
"avatar": "https://crafthead.net/avatar/069a79f444e94726a5befca90e38aaf5",
"skin_texture": "https://textures.minecraft.net/texture/292009a4925b58f02c77dadc3ecef07ea4c7472f64e0fdc32ce5522489362680",
"properties": [ { "name": "textures", "value": "...", "signature": "..." } ],
"name_history": []
}
},
"success": true
}code is a string, not a numeric result code — confirmed the same shape ("code": "player.found") live this run against Steam (/player/steam/76561197960287930, 929 B) and Xbox (/player/xbox/Xbox, live). Only data.player.meta differs per platform: Minecraft's meta is just a cache timestamp, while Steam's nests the full Steam Web API profile (steamid, personastate, profileurl, ...) and Xbox's nests gamerscore, accounttier, and xboxonerep.
Try it
Developer reference
https://playerdb.co/api- GET/player/minecraft/{username}
- GET/player/steam/{steamid}
- GET/player/xbox/{gamertag}
- GET/player/hytale/{username}
Gotchas & limits
- The result code is a dotted string (
"player.found","minecraft.invalid_username","xbox.not_found"), not a numeric status field — the first string-code envelope in this catalogue's Games & Comics quickstarts. Don't write a switch statement expecting integers. - A not-found lookup is real HTTP 400, not 404, and its body sets
"success": falsebut also"error": false— both flags present, neither one alone tells you the request failed. A live GET this run against a nonsense Minecraft username returned exactly this:{"message":"No Minecraft user could be found.","code":"minecraft.invalid_username","data":{},"success":false,"error":false}, 123 B. The same shape (differentcode) was confirmed live this run for Xbox (xbox.not_found) and Hytale (hytale.not_found). - Hytale lookups really do resolve — and Hytale is the only one of the four platforms with two distinct 400 codes, splitting on the identifier's shape rather than on whether the player exists. Live this run,
/player/hytale/nobodyreturned 200, 964 B,player.found, usernameNobody, andalpha(853 B),Player1(967 B) andxyz(869 B) resolved too; the payload is the richest of the four platforms, carrying a 20-fieldskinobject (bodyCharacteristic,haircut,facialHair,overtop,cape, ...) alongsideid/raw_id/username/avatar— thoughskincan itself benullon an otherwise-valid player (/player/hytale/qqqq, 200, 343 B). A well-formed but unknown identifier returnshytale.not_found(138 B, confirmed onNotchandadmin); a malformed one is rejected before any lookup withhytale.invalid_identifier(131 B,{"message":"Invalid Hytale player identifier supplied.",...}). Probed live, the accepted shape is 3-16 characters, alphanumerics and underscore only — 1-2 and 17+ characters both giveinvalid_identifier, as do-,.,@and a space, whileabc_defgets far enough to returnnot_found. Both codes arrive as the same HTTP 400 with the samesuccess:false/error:falsepair, socodeis the only field separating "you sent garbage" from "that player doesn't exist". - Successful Minecraft lookups are cached hard: the live response above carried
cache-control: public, max-age=2678400(31 days) plusage: 181556(already ~2 days stale when fetched this run) — a player's freshly-changed username can take up to a month to show through this API. - Platform-specific data shows up in two places, so don't treat
metaas the only place to look: each platform adds its own extra top-level keys next to the normalized ones, andmetathen holds a payload whose shape is entirely provider-defined.id/username/avatar(plus themetacontainer itself) are the only four fields normalized across all four platforms, confirmed live this run against all four. Everything else is platform-specific, split across those two places. Extra top-level keys: Minecraft'sskin_texture/properties/name_history, Hytale'sskin, Xbox'smodernGamertag/modernGamertagSuffix/uniqueModernGamertag. Insidemeta: Steam'scommunityvisibilitystate/personaname/profileurl, Xbox'sgamerscore/accounttier/xboxonerep/preferredcolor. Noteraw_idis not a Minecraft-only field — it is shared by the two UUID-keyed platforms, Minecraft and Hytale, and absent on Steam and Xbox.