Minecraft Player Lookup - Username, UUID, Skin
Pricing
from $0.38 / 1,000 players
Minecraft Player Lookup - Username, UUID, Skin
Look up Minecraft Java players: usernames to UUIDs, UUIDs back to current usernames, with skin and cape URLs, texture ids and the slim or classic arm model. No account. Unknown names and invalid entries come back free. $0.40 per 1,000 players.
Pricing
from $0.38 / 1,000 players
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Paste Minecraft Java usernames and get each player's UUID, skin, cape and arm model, or paste UUIDs and get the current usernames back: one row per player, the UUID in both the plain and the dashed form, looked up from Mojang when you run it, so a name is the one the account holds today.
What it cannot give you is name history. Mojang withdrew it in 2022, and there is no nameHistory field here pretending otherwise.
| Input | Minecraft Java usernames, UUIDs, or both |
| Output | One row per player: current username, UUID in both forms, skin and cape URLs with texture ids, slim or classic model |
| Ceiling | 10,000 players per run |
| Account needed | None, and no Mojang API key |
| Price | $0.40 per 1,000 players on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 12,500 |
🔍 What Minecraft Player Lookup does
Usernames come back in the account's real capitalisation, so philza returns the spelling the player chose. Names are looked up ten at a time and UUIDs one by one, so a long UUID list runs slower than the same number of names. If you can choose the direction, run names.
Duplicates collapse before anything is looked up, and across both lists: a username in one box and the same player's UUID in the other make one row, charged once. Several names on one line are fine if commas or spaces split them, since a Minecraft name can contain neither.
The skin lookup is a second step for every player. Switch it off when all you need is a name-to-UUID map for a whitelist or a plugin config, and the run finishes in a fraction of the time.
skinTextureId is the hash at the end of the skin URL. Two accounts wearing the same skin share it, which is how you group them. Mojang serves the texture URLs over plain http, and they are passed through unchanged.
Close to its time limit, a run stops looking things up. Players it had found but not yet fetched skins for arrive without them, free of charge, instead of the run being killed mid-list.
📋 What data you get from each Minecraft player
| What you get | Field |
|---|---|
| The username as the account holds it now | username |
| The UUID, plain and dashed | uuid, uuidDashed |
| Whether the account has a custom skin, the skin URL, its texture id and the arm model | hasCustomSkin, skinUrl, skinTextureId, skinModel |
| Whether it wears a cape, the cape URL and its texture id | hasCape, capeUrl, capeTextureId |
| Whether the skin lookup ran and answered, and when Mojang signed the data | texturesStatus, texturesTimestamp |
| Mojang's signature over the texture data, when you ask for it | textureSignature |
| Which of your inputs produced the row | queriedBy, queriedValue |
▶️ How to look up Minecraft UUIDs and skins
- Open Minecraft Player Lookup and click Try for free.
- Paste usernames into Usernames, UUIDs into UUIDs, or both.
- Untick Look up skin and cape if names and UUIDs are all you need.
- Set Maximum players.
- Click Start, then download the dataset as JSON, CSV or Excel, or read it from the API.
Clear both lists and start it, and you get one free sample row showing the shape.
💰 How much does it cost to look up Minecraft players?
$0.40 per 1,000 players on the Free plan, with or without skins. Paid plans pay a little less: $0.395 on Starter, $0.39 on Scale and $0.385 on Business. The free plan's $5 a month covers about 12,500 players.
Not charged: the sample row, every problem row (invalid input, unknown names, lookups Mojang did not answer) and a player whose skin you asked for but did not get. A player you listed twice, by name and by UUID, is charged once.
📥 What you give it
{"usernames": ["jeb_", "Dinnerbone", "Dream"],"uuids": ["069a79f4-44e9-4726-a5be-fca90e38aaf5"],"includeTextures": true,"maxItems": 100}
| Field | Default | What it is |
|---|---|---|
usernames | none; the box starts with jeb_, Dinnerbone, Dream | Minecraft Java usernames, one per line, or several on a line split by commas or spaces. Case does not matter. |
uuids | none | Player UUIDs, with or without dashes, to get the current username back. |
includeTextures | true | Look up the skin, cape and arm model. Off, the run does name-to-UUID only and finishes much faster. |
includeSignature | false | Adds Mojang's RSA signature over the texture data, so you can check offline that the skin data really came from Mojang. It makes every row larger, so leave it off unless you will check it. |
maxItems | 100 | The most players one run returns and charges, 1 to 10,000. Unknown and invalid names do not count against it. |
proxyConfiguration | off | Optional. Add your own servers here if you want the run to go out through them. Otherwise leave it alone. |
For includeTextures, includeSignature and maxItems, an API call that leaves the field out gets the value shown, the same one the form starts with.
📤 What you get back
A real row from a run on 30 September 2026:
{"ok": true,"username": "jeb_","uuid": "853c80ef3c3749fdaa49938b674adae6","uuidDashed": "853c80ef-3c37-49fd-aa49-938b674adae6","hasCustomSkin": true,"skinUrl": "http://textures.minecraft.net/texture/7fd9ba42a7c81eeea22f1524271ae85a8e045ce0af5a6ae16c6406ae917e68b5","skinTextureId": "7fd9ba42a7c81eeea22f1524271ae85a8e045ce0af5a6ae16c6406ae917e68b5","skinModel": "classic","hasCape": true,"capeUrl": "http://textures.minecraft.net/texture/9e507afc56359978a3eb3e32367042b853cddd0995d17d0da995662913fb00f7","capeTextureId": "9e507afc56359978a3eb3e32367042b853cddd0995d17d0da995662913fb00f7","texturesStatus": "ok","texturesTimestamp": "2026-09-30T02:31:10.009Z","textureSignature": null,"queriedBy": "username","queriedValue": "jeb_","scrapedAt": "2026-09-30T02:31:10.104Z"}
| Field | How to read it |
|---|---|
username | The spelling the account holds now, whatever capitalisation you typed. |
uuid, uuidDashed | The same id as 32 hex characters, and in the dashed 8-4-4-4-12 form. |
hasCustomSkin, hasCape | Whether the account has uploaded a skin and has a cape on. null when the skin lookup was off or did not answer, which means unknown, not no. |
skinModel | slim (three-pixel arms) or classic (four-pixel arms). |
capeUrl, capeTextureId | Most players have no cape, so these are usually null. |
texturesStatus | ok, none_published (Mojang knows the player but publishes no textures), or not_requested (the lookup was off). |
queriedBy, queriedValue | Which of your inputs produced the row, so you can join it back to your list. |
🧾 Reading the output
ok is not the filter it looks like. Real rows say ok: true, but so does the free sample row, and so do the rows where the skin lookup failed.
| Row | How to spot it | Charged |
|---|---|---|
| A player | ok: true, with no _sample or _diagnostic field | yes |
| The sample row | _sample: true and charged: false. Written only when both lists are empty | no |
| A problem row | _diagnostic: true and charged: false, with an errorCode, the queriedValue it is about, and a plain error and hint | no |
| A summary row | An errorCode ending in _SUMMARY, with suppressedCount and a sample of up to 25 values | no |
errorCode | What happened |
|---|---|
INVALID_USERNAME | Not 3 to 16 letters, numbers or underscores. Rejected before any lookup. |
INVALID_UUID | Not 32 hex characters. |
USERNAME_NOT_FOUND | No account holds that name right now. Names are released and re-registered, so one that existed last year may not today. |
UUID_NOT_FOUND | Mojang has no account with that id. Offline-mode UUIDs, and the ones a server makes up for Bedrock players, always end up here. |
RATE_LIMITED | Mojang limits how fast it answers, and this lookup missed out. Re-run just those values. |
LOOKUP_FAILED | Mojang answered that lookup with some other error. Re-run just those values. |
TEXTURES_RATE_LIMITED, TEXTURES_FAILED, TEXTURES_SKIPPED_TIME_LIMIT | The name and UUID in the row are right, but the skin and cape did not arrive, so the row is free. |
After 50 problem rows, the rest roll into one summary row per code, so your real results are not buried. A 300-name test list with 272 unknown names came back as 79 rows: 28 players, 50 problem rows and one summary.
To keep only real players, drop every row carrying _sample or _diagnostic.
💡 What people use it for
- Turning the names in a server whitelist or a plugin config into UUIDs, with the skin lookup off.
- Refreshing the names on a leaderboard that stores players by UUID. Names change; UUIDs do not.
- Pulling skin and cape URLs to draw player heads on a website or in a Discord bot.
🚧 What it does not do
- No name history. Mojang withdrew it in 2022 and nothing replaced it.
- Java accounts only. A Bedrock gamertag is looked up as if it were a Java name, so if a Java player happens to hold the same name, you get that Java player, not the Bedrock one.
- No offline-mode UUIDs. A server in offline mode makes up its own ids. Mojang has never heard of them, so they come back as a free
UUID_NOT_FOUND. - No server data. It looks up players, not servers.
- No skin images. You get the URL and the texture id; download the PNG yourself.
- No ban or account status. Mojang does not publish it.
- No promise that a huge list comes back whole. A very long list can return some
RATE_LIMITEDrows. Re-run just those, or split the list across runs. - It is not an official Minecraft tool. Dami's Studio is independent and is not affiliated with or endorsed by Minecraft, Mojang or Microsoft, or by any other company named on this page.
🧭 Which gaming scraper do you need?
| If you want | Use |
|---|---|
| Minecraft Java usernames and UUIDs, with skins and capes | This one |
| Steam games with their details, stats and reviews | Steam Scraper |
| Kick streamers, their followers and whether they are live | Kick Creator Scraper |
| Growth stats for Twitch and YouTube channels | Social Blade Scraper |
❓ Questions people ask
How do I get a Minecraft UUID from a username?
Put the name in Usernames and run it. uuid is the undashed form and uuidDashed the standard one; every row has both. To go the other way, put UUIDs in UUIDs, with or without dashes.
Can I get a player's old usernames?
No. Mojang removed name history in September 2022, so Mojang no longer gives it to anyone.
How do I tell an Alex skin from a Steve skin?
skinModel is slim for three-pixel arms and classic for four. When hasCustomSkin is false, the account never uploaded one and the game picks a default.
Do I need a Mojang API key or a Minecraft account?
No. There is nothing to sign up for.
Can I call it from code or connect it to an AI assistant?
Yes. The API tab has ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/minecraft-player-lookup. Either way the run happens on your Apify account at the same price.
Is it legal to look up Minecraft players?
Usernames, UUIDs and skins are public profile data that Mojang serves to anyone who asks. A username can still identify a person, so have a reason for keeping a list of them. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Send the run ID and a few of the names or UUIDs that went wrong, with their errorCode.