Minecraft Player Lookup
Convert Minecraft Java usernames to UUIDs and back, with skin and cape URLs, texture ids and the slim or classic model flag. No API key needed.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
usernames,uuids,includeTextures(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.0004 per player = $0.4 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Player returned | One player profile returned in the dataset. Names that could not be resolved, diagnostics and the labelled sample row are not charged. | $0.0004 |
Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-09-20, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
usernames | Minecraft Java usernames, one per line. Case does not matter — Mojang returns the real capitalisation, so "philza" comes back as the account's actual spelling. Names are resolved ten at a time in a single request, so a list of 500 costs 50 requests, not 500. | array |
uuids | Player UUIDs, with or without dashes, one per line. Use this to go the other way and get the current username. Mojang has no bulk endpoint for UUIDs, so each one costs its own request and a long UUID list runs slower than the same number of usernames. | array |
includeTextures | Fetch the skin URL, texture id, classic/slim model flag and cape from Mojang's session server. This is a second request per player. Turn it off if you only need username-to-UUID and want the run to finish in a fraction of the time. | boolean |
includeSignature | Also return the RSA signature Mojang attaches to the texture blob, so you can verify offline that the skin data really came from Mojang. Only useful if you are going to check it — leave it off otherwise. | boolean |
maxItems | Hard cap on charged rows for this run (1-10000). Sample rows and diagnostics do not count against it and are never charged. | integer |
What you get
A structured dataset — each result includes fields like:
usernameuuiduuidDashedhasCustomSkinskinModelskinUrlskinTextureIdhasCapecapeUrlcapeTextureIdtexturesStatusqueriedByqueriedValuescrapedAtExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
Related tools in Developer & Research Tools
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
GitHub Scraper
Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.
Stack Overflow / Stack Exchange Scraper
Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.
Package Registry Scraper (npm + PyPI)
Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.
arXiv Scraper
Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.
OpenAlex Scholarly Works Scraper
Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.
Crossref Scholarly Works Scraper
Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.
Where this tool sits
- Categories
- Developer & Research Tools
Minecraft Player Lookup: usernames to UUIDs and back, with skins and capes
Paste Minecraft Java usernames and you get each player's UUID in both forms, with their skin, cape and arm model; paste UUIDs and you get the current usernames back. Every row is 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 |
| Ceiling | 10,000 players per run |
| Account needed | None |
| Price | $0.40 per 1,000 players, flat on every plan |
🔍 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 you give it
{
"usernames": ["jeb_", "Dinnerbone", "Dream"],
"uuids": ["069a79f4-44e9-4726-a5be-fca90e38aaf5"],
"includeTextures": true,
"maxItems": 100
}
| Field | Prefilled with | What it is |
|---|---|---|
usernames | jeb_, Dinnerbone, Dream | Minecraft Java usernames, one per line, or several on a line split by commas or spaces. Case does not matter. |
uuids | empty | 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. Left out of an API call, it is on. |
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. Left out of an API call, it is 100. |
proxyConfiguration | untouched | Optional. Add your own servers here if you want the run to go out through them. Otherwise leave it alone. |
📤 What you get back
A real row from a real 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 | What it is |
|---|---|
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. |
skinUrl, skinTextureId, skinModel | The skin texture, the hash at the end of its URL, and slim (three-pixel arms) or classic (four-pixel arms). |
capeUrl, capeTextureId | The same for the cape. Most players have none, so these are usually null. |
texturesStatus | ok, none_published (Mojang knows the player but publishes no textures), or not_requested (the lookup was off). |
texturesTimestamp, textureSignature | When Mojang signed the texture data, and the signature itself if you asked for it. |
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.
▶️ How to run it
1. Open Minecraft Player Lookup and click Try for free. 2. Paste usernames into Usernames, UUIDs into UUIDs, or both. 3. Untick Look up skin and cape if names and UUIDs are all you need. 4. Set Maximum players. 5. Click Start, then download the dataset as JSON, CSV or Excel, or read it from the API.
💰 How much does it cost?
$0.40 per 1,000 players, flat on every Apify plan, with or without skins.
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 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.
- Finding every account on a list that wears the same skin, by grouping on
skinTextureId.
🚧 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_LIMITED
rows. Re-run just those, or split the list across runs.
🧭 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.
Can I get a username from a UUID? Yes. Put it 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.
Is the data live? Yes. Every row is looked up from Mojang at run time.
🆘 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.