# Mojang Minecraft Profile Scraper (`parseforge/mojang-minecraft-profile-scraper`) Actor

Scrapes Minecraft player profiles from Mojang's public session server by username. Returns UUID, current name, and skin URL in a flat row.

- **URL**: https://apify.com/parseforge/mojang-minecraft-profile-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Developer tools, Games, Automation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.90 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### Mojang Minecraft Profile Scraper

**Scrape Minecraft player profiles by username, up to a million per run.** Each profile returns the UUID, current name, and skin data from Mojang's public API. Export to CSV, JSON, Excel, or XML.

Mojang's official API rate-limits profile lookups and requires you to handle UUID resolution yourself. This Actor reads the public Mojang session server directly, accepts a list of usernames, and returns each resolved profile in one fixed schema. No API key or authentication needed.

| Who uses it | What they scrape Mojang for |
|---|---|
| Server administrators | Verify player identities and check username histories before whitelisting. |
| Skin designers | Fetch current skin URLs for a batch of players to track design trends. |
| Data analysts | Resolve large username lists to UUIDs for database deduplication. |

### What it does

This Actor collects Minecraft player profiles by username and returns each one as a flat row with the UUID, current name, and skin URL.

- 👤 **Bulk username lookup:** paste a list of usernames, one per line, and get every resolved profile back.
- 🔗 **Direct Mojang API:** reads the public session server, so data is always current and official.
- 📦 **Fixed flat schema:** every profile returns the same fields, ready for export to CSV, JSON, Excel, or XML.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with Mojang data

**🛡️ Whitelist player batches.**

A server admin pastes a list of applicant usernames, runs the Actor, and cross-references the returned UUIDs against a ban database before granting access.

**🎨 Audit skin usage.**

A skin designer feeds a list of popular players to collect current skin URLs and spot visual trends across the community.

**🗃️ Deduplicate user records.**

A data analyst resolves a legacy username list to persistent UUIDs so player records can be merged correctly.

### Why choose this scraper

|  | What you get |
|---|---|
| **No API key required** | Reads Mojang's public session server directly with no registration or authentication. |
| **Bulk resolution** | Resolve up to a million usernames to UUIDs in a single run on a paid plan. |
| **Current skin data** | Each profile includes the active skin URL so you can download or display it. |

### How it compares

This Actor reads Mojang's official session server directly, while the competitor uses the PlayerDB aggregator which may include additional derived data.

| Feature | ParseForge | Minecraft Player Lookup - UUID, Name, Skin |
|---|---|---|
| Direct Mojang session server | Yes | Not listed |
| Bulk username lookup | Yes, up to 1,000,000 | Not listed |
| Full name history | Not listed | Yes |
| Skin URL | Yes | Yes |
| No API key required | Yes | Not listed |

### Configure the run

Drive the Actor from a list of Minecraft usernames, and set a maximum profile count to cap your run. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "usernames": [
    "Notch",
    "jeb_",
    "Dinnerbone"
  ],
  "maxItems": 10
}
```

A larger pull:

```json
{
  "usernames": [
    "Notch",
    "jeb_",
    "Dinnerbone"
  ],
  "maxItems": 200
}
```

### Pricing

Pay-per-result: **$0.001 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $0.10 |
| 1,000 results | $1.00 |
| 10,000 results | $10.00 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [Mojang Minecraft Profile Scraper](https://apify.com/parseforge/mojang-minecraft-profile-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to Mojang through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/mojang-minecraft-profile-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results for a valid username?**

Check that the username is spelled correctly and is a Java Edition account. Bedrock accounts and deleted profiles will not resolve. Also verify the username is not blocked or restricted by Mojang.

**The run is very slow with a large username list.**

The Actor respects Mojang's rate limits to avoid being blocked. For lists over a few thousand usernames, expect the run to take longer. Use the maxItems field to test with a smaller subset first.

**I get an error about exceeding the maximum profiles.**

Free users are capped at 10 profiles. Upgrade to a paid Apify plan and set the maxItems field to a value up to 1,000,000.

**The skin URL returned is a default Steve or Alex skin.**

This is correct behavior. If a player has not uploaded a custom skin, Mojang returns the default skin URL for their model type.

### FAQ

| Question | Answer |
|---|---|
| Do I need a Mojang API key to use this scraper? | No. This Actor reads Mojang's public session server, which does not require authentication or an API key. |
| How many profiles can I scrape in one run? | Free users are limited to 10 profiles as a preview. Paid users can set a maximum of up to 1,000,000 profiles per run. |
| What data does each profile row contain? | Each row returns the player's UUID, their current username, and a URL to their active Minecraft skin. |
| Can I get a player's full name history? | This Actor returns the current username. For full name history, you would need a different endpoint. The competitor 'Minecraft Player Lookup' lists name history as a feature. |
| What input format does the username list require? | Paste one Minecraft username per line into the text field. The Actor will look up each one in order. |
| Does this work for both Java and Bedrock edition players? | The Mojang session server covers Java Edition accounts. Bedrock accounts use a different identity system and are not resolved by this endpoint. |
| Can I export the results to Excel? | Yes. The dataset can be exported directly to CSV, JSON, Excel, or XML from your Apify run. |
| What happens if a username does not exist? | The Actor will return an error or empty result for that specific username and continue processing the rest of your list. |
| Is there a rate limit on the Mojang API? | Mojang's public session server has rate limits. The Actor processes requests sequentially to stay within acceptable bounds, but very large lists may take time. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Mojang AB. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

## `usernames` (type: `array`):

Minecraft usernames to look up (one per line).

## `maxItems` (type: `integer`):

Free users: Limited to 10 profiles (preview). Paid users: Optional, max 1,000,000

## Actor input object example

```json
{
  "usernames": [
    "Notch",
    "jeb_",
    "Dinnerbone"
  ],
  "maxItems": 10
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "usernames": [
        "Notch",
        "jeb_",
        "Dinnerbone"
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/mojang-minecraft-profile-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "usernames": [
        "Notch",
        "jeb_",
        "Dinnerbone",
    ],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/mojang-minecraft-profile-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "usernames": [
    "Notch",
    "jeb_",
    "Dinnerbone"
  ],
  "maxItems": 10
}' |
apify call parseforge/mojang-minecraft-profile-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/mojang-minecraft-profile-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/e26L3nO5kiKQO9pLj/builds/lCqi9ZbR6K8gyInkP/openapi.json
