Crafty APIcrafty.gg ↗
Retrieve the full username history for any Minecraft Java Edition player via the Crafty.gg API. Returns UUID, all past names, and change timestamps.
What is the Crafty API?
The Crafty.gg API exposes 1 endpoint — get_player_name_history — that returns a Minecraft Java Edition player's complete username history. Given any current or past username, the response includes the player's UUID, a chronologically ordered array of every name they have held, and the timestamp of each name change. The first entry in the history array carries a null changed_at, marking the player's original username.
curl -X GET 'https://api.parse.bot/scraper/3592c55f-2abd-4f6d-990a-069e295591ab/get_player_name_history?username=Notch' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace crafty-gg-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Crafty.gg SDK — retrieve a Minecraft player's username history."""
from parse_apis.crafty_gg_api import Crafty, PlayerNotFound
client = Crafty()
# Look up a player's full name history by their current username.
try:
player = client.players.get(username="zhclgmfz")
print(player.current_username, player.uuid)
for entry in player.name_history:
print(entry.username, entry.changed_at, entry.available)
except PlayerNotFound as e:
print("player not found:", e.username)
print("exercised: players.get")
Retrieves the full username history of a Minecraft player. Given a current or previous username, returns the player's UUID and an ordered list of all usernames they have held, with timestamps of each name change. The first entry with a null changed_at is the player's original username.
| Param | Type | Description |
|---|---|---|
| usernamerequired | string | Minecraft Java Edition username (1-16 alphanumeric characters or underscores). |
{
"type": "object",
"fields": {
"uuid": "Player's Minecraft UUID",
"name_history": "Array of username entries in chronological order (oldest first)",
"current_username": "The player's current active username"
},
"sample": {
"data": {
"uuid": "a77d4ff6-3979-402c-a1ed-e922b8d83483",
"name_history": [
{
"username": "zhclgmfz",
"available": false,
"changed_at": "2023-08-25T02:40:25.806+02:00"
},
{
"username": "Username",
"available": true,
"changed_at": "2015-02-04T11:11:33.000+01:00"
},
{
"username": "RoostahBoostah",
"available": true,
"changed_at": null
}
],
"current_username": "zhclgmfz"
},
"status": "success"
}
}About the Crafty API
What the API Returns
The get_player_name_history endpoint accepts a single required parameter, username, which must be a valid Minecraft Java Edition username (1–16 alphanumeric characters or underscores). The response resolves the account to its canonical uuid and returns name_history, an array of username entries ordered oldest-first. Each entry in the array includes the username string and a changed_at timestamp; the very first entry has changed_at set to null, indicating that was the player's original name at account creation.
Response Fields in Detail
Beyond the ordered name_history array, the response includes current_username — the name the account holds at the time of the request. The uuid field returns the player's persistent Mojang/Microsoft account identifier, which remains stable across all name changes. This makes the UUID the reliable key for tracking a player's identity regardless of how many times they have renamed.
Coverage and Limitations
The endpoint covers Minecraft Java Edition accounts only. Bedrock Edition accounts use a different identity system and are not included. Username lookups resolve through the player's current or any previously held name, so you can query a legacy username and still receive the full history and current state of that account. The data reflects the name change history as recorded on the Crafty.gg platform.
The Crafty API is a managed, monitored endpoint for crafty.gg — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when crafty.gg changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official crafty.gg API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Verify a Minecraft player's identity by cross-referencing their UUID against a list of past usernames
- Build a server ban system that tracks players across username changes using the stable UUID
- Populate a player profile page with a timeline of all past names and when each change occurred
- Detect account impersonation by checking whether a suspicious username was previously held by a known player
- Audit server logs that recorded old usernames and map them back to current player identities
- Display a player's name change history in a Minecraft stats or leaderboard application
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Crafty.gg have an official developer API?+
What does the name_history array contain, and how is it ordered?+
name_history array is ordered chronologically, oldest entry first. Each element includes the username and a changed_at timestamp. The first element always has changed_at set to null, which marks the player's original username when the account was created. The current_username field separately identifies the name currently active on the account.Can I look up a player by their UUID instead of a username?+
get_player_name_history endpoint accepts only a username string as input. You can fork this API on Parse and revise it to add a UUID-based lookup endpoint.