Games & Comics — entry 050 of 75

PlayerDB

Verified Aug 2026

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.

minecraftsteamxboxplayer-lookup
AuthenticationNone requiredCall it straight away — no key, no signup.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score74out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs0/20No docs or spec available
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 74 on greatapis.com
<a href="https://greatapis.com/api/playerdb/"><img src="https://greatapis.com/badge/playerdb.svg" alt="Scored 74 on greatapis.com"></a>

Auth quickstart

  1. 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.
Stored keyNo key stored

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

200 application/json; charset=utf-8

{
  "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

Base URLhttps://playerdb.co/api
Key endpoints
  • 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": false but 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 (different code) 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/nobody returned 200, 964 B, player.found, username Nobody, and alpha (853 B), Player1 (967 B) and xyz (869 B) resolved too; the payload is the richest of the four platforms, carrying a 20-field skin object (bodyCharacteristic, haircut, facialHair, overtop, cape, ...) alongside id/raw_id/username/avatar — though skin can itself be null on an otherwise-valid player (/player/hytale/qqqq, 200, 343 B). A well-formed but unknown identifier returns hytale.not_found (138 B, confirmed on Notch and admin); a malformed one is rejected before any lookup with hytale.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 give invalid_identifier, as do -, ., @ and a space, while abc_def gets far enough to return not_found. Both codes arrive as the same HTTP 400 with the same success:false/error:false pair, so code is 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) plus age: 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 meta as the only place to look: each platform adds its own extra top-level keys next to the normalized ones, and meta then holds a payload whose shape is entirely provider-defined. id/username/avatar (plus the meta container 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's skin_texture/properties/name_history, Hytale's skin, Xbox's modernGamertag/modernGamertagSuffix/uniqueModernGamertag. Inside meta: Steam's communityvisibilitystate/personaname/profileurl, Xbox's gamerscore/accounttier/xboxonerep/preferredcolor. Note raw_id is not a Minecraft-only field — it is shared by the two UUID-keyed platforms, Minecraft and Hytale, and absent on Steam and Xbox.