无需API密钥 CORS已启用 免费 无广告

Minecraft个人资料API

获取任何Minecraft玩家的UUID、皮肤、披风和名称历史。一个URL,JSON响应。无需注册。

支持JavaScript、Python、PHP、cURL — 任何HTTP客户端。Java & Bedrock均支持。

试试:/api?username=jeb_

更多: 下载皮肤 · 披风画廊 · 个人资料查询 · JSON生成器 · 已缓存玩家 · 服务器状态

API特点

无需API密钥
浏览器CORS
Java & Bedrock
快速缓存
皮肤和披风URL

快速开始

Base URL: https://vrc.lol

Endpoints: /api (profile), /head (head image), /skin, /cape.

In one line: Open https://vrc.lol/api?username=jeb_ in a browser to see JSON.

What you get: UUID, XUID, skin URL, cape URL, name history — all in one response.

Before you start: No sign-up, no API key, no rate limit for normal lookups. Works in any HTTP client. For browsers, CORS is enabled — call directly from fetch().

vs Mojang API: We combine Java (Mojang) + Bedrock (GeyserMC/Xbox) in one call. No API key. Cached. Returns skin/cape URLs, name history, and head image — all in one response.

工作原理

1
You send a GET request — Include the username (or UUID/XUID) in the URL: ?username=Notch
2
The API fetches data — From Mojang (Java) or GeyserMC/Xbox (Bedrock), then returns JSON. Results are cached for speed.
3
You use the response — Parse the JSON and read java.uuid, java.skin_url, java.name_history, etc.

Request → Response: GET https://vrc.lol/api?username=jeb_{ "success": true, "java": { "uuid": "853c80ef...", "skin_url": "...", ... } }

在线演示 — 输入用户名查看API响应

https://vrc.lol/api?username=jeb_

点击获取查看JSON响应。

代码示例

Same request, different languages. Replace jeb_ with any Minecraft username. Each example fetches the profile and reads the UUID.

JavaScript(浏览器或Node.js)

fetch() sends the request. res.json() parses the JSON. data.java?.uuid gets the Java UUID (or data.bedrock?.xuid_decimal for Bedrock).

// 1. Send GET request to the API
const res = await fetch('https://vrc.lol/api?username=jeb_');
// 2. Parse JSON response
const data = await res.json();
// 3. Use the data — Java UUID or Bedrock XUID
if (data.success) console.log(data.java?.uuid ?? data.bedrock?.xuid_decimal);

Python

requests.get() fetches the URL. .json() parses the response. data['java']['uuid'] gets the UUID. Install with pip install requests.

import requests

# 1. GET request — returns JSON
data = requests.get('https://vrc.lol/api?username=jeb_').json()
# 2. Check success and extract UUID
if data.get('success'):
    uuid = data.get('java', {}).get('uuid') or data.get('bedrock', {}).get('xuid_decimal')
    print(uuid)

PHP

file_get_contents() fetches the URL. json_decode(..., true) parses JSON into an array. $data['java']['uuid'] gets the UUID.

// 1. Fetch URL and parse JSON
$data = json_decode(file_get_contents('https://vrc.lol/api?username=jeb_'), true);
// 2. Get UUID (Java or Bedrock)
if ($data['success'] ?? false) {
    $uuid = $data['java']['uuid'] ?? $data['bedrock']['xuid_decimal'] ?? '';
    echo $uuid;
}

cURL(终端)

Run this in your terminal. The JSON is printed to stdout. Pipe to jq for pretty output: curl "..." | jq.

curl "https://vrc.lol/api?username=jeb_"

所有端点

Quick reference. Base URL: https://vrc.lol

Quick copy: https://vrc.lol/api?username= + your username. Open in browser or use in fetch(), requests.get(), or curl.
GET /api?username=... — Profile (UUID, skin, cape, name history)
GET /head?username=... — Player head PNG (8–512px)
GET /skin?username=... — Skin texture
GET /cape?username=... — Cape texture

个人资料查询

One URL returns UUID, skin, cape, and name history. Pass username, UUID, or XUID.

GET/api?username={username_or_uuid}

参数

参数必需描述
usernameMinecraft username, UUID, or XUID
typeall, java, or bedrock
updatetrue to force refresh (rate limited)

See Code Examples above for JavaScript, Python, PHP, and cURL.

玩家头像

64×64 PNG of a player's face. Use the URL directly in an <img> tag — no API call needed.

GET/head?username={username}&size=64

HTML — put URL in img src

The browser fetches the image directly. No JavaScript needed.

<img src="https://vrc.lol/head?username=Notch&size=64" alt="Notch" />

Python — save head as PNG

r.content is the raw PNG bytes. Write to a file.

import requests
r = requests.get('https://vrc.lol/head?username=Notch&size=64')
with open('head.png', 'wb') as f: f.write(r.content)

Params: username, uuid, size (8–512), format (png|webp)

Recommended sizes: 64px for general use. 80px for Discord embeds. 512px for high-res previews. Use format=webp for smaller file size.

皮肤和披风URL

Direct URLs to skin or cape PNG. Use in browsers, Discord, or download. CORS enabled.

GET/skin?username={username}&type=java|bedrock
GET/cape?username={username}

Use type=java or type=bedrock for skin — Java uses Mojang textures, Bedrock uses Xbox/GeyserMC.

社交链接和最近查询

Optional endpoints: site social links and recent lookup statistics. Use ?social=1 or ?recent=1.

GET/api?social=1
GET/api?recent=1

响应格式

All endpoints return JSON. Success: success: true + data. Error: success: false + error + code.

Tip: Use the Live Demo above to see a real response for any username.

Response structure (success)

success
Boolean — true when a profile was found.
java
Object — Java Edition data: username, uuid, skin_url, cape_url, name_history (array of {name, changed_at}).
bedrock
Object — Bedrock data: gamertag, xuid_decimal, floodgate_uuid, skin_url, cape_url.
cached
Boolean — true if served from cache (faster).

name_history format: [{ "name": "jeb_", "changed_at": null }, { "name": "oldname", "changed_at": 1234567890000 }]changed_at is Unix ms or null for original name.

Success (200) — example for jeb_

{ "success": true, "java": { "username": "jeb_", "uuid": "853c80ef3e3740fdaa867b06307a3d4f", "skin_url": "/skin?username=jeb_&type=java", "name_history": [{ "name": "jeb_" }] } }

Error (404)

{ "success": false, "error": "...", "code": "NOT_FOUND", "status": 404 }

HTTP状态码和常见错误

Standard codes. 200 = success. 404 = not found. 429 = rate limited.

Common errors
  • MISSING_PARAMETER — You forgot ?username=.... Always include the username.
  • NOT_FOUND — No profile exists for that username/UUID. Check spelling or try the other edition.
  • RATE_LIMITED — Too many ?update=true requests. Wait 1 hour or use cached data.
  • BAD_GATEWAY — Mojang or GeyserMC API is down. Retry later.
代码含义
200成功
400错误请求 — 参数无效或缺失
404未找到 — 该用户/UUID无配置文件
429速率限制 — 更新请求过多(每IP/配置文件1小时)
500服务器内部错误
502Bad Gateway — Mojang/GeyserMC API错误

速率限制

Normal lookups: no limit (cached). Force update (?update=true): 1 hour per IP.

提示
  • Always check data.success before reading java or bedrock.
  • Use encodeURIComponent(username) in URLs to handle special characters.
  • For Bedrock-only lookups, use ?type=bedrock to skip Java API calls.
  • Player head: use /head?username=X&size=64 directly in <img src="...">.

完整示例

Reusable functions that fetch a profile and return UUID. Replace jeb_ with any username.

JavaScript(浏览器或Node.js)

async function getUuid(username) {
  const res = await fetch(`https://vrc.lol/api?username=${encodeURIComponent(username)}`);
  const data = await res.json();
  if (!data.success) throw new Error(data.error || 'Not found');
  return data.java?.uuid ?? data.bedrock?.xuid_decimal;
}

Python (requires: pip install requests)

import requests

def get_uuid(username):
    data = requests.get(f'https://vrc.lol/api?username={username}').json()
    if not data.get('success'):
        raise Exception(data.get('error', 'Not found'))
    return data.get('java', {}).get('uuid') or data.get('bedrock', {}).get('xuid_decimal')

PHP

function getUuid(string $username): string {
    $data = json_decode(file_get_contents('https://vrc.lol/api?username=' . urlencode($username)), true);
    if (empty($data['success'])) throw new Exception($data['error'] ?? 'Not found');
    return $data['java']['uuid'] ?? $data['bedrock']['xuid_decimal'];
}

Real-world: Name history + error handling

Fetch a profile, show name history, and handle errors (404, network failure).

async function getProfile(username) {
  try {
    const res = await fetch(`https://vrc.lol/api?username=${encodeURIComponent(username)}`);
    const data = await res.json();
    if (!data.success) return { error: data.error || 'Not found' };
    const names = data.java?.name_history?.map(n => n.name) ?? [];
    return { uuid: data.java?.uuid, names };
  } catch (e) { return { error: 'Network error' }; }
}

常见问题

Common questions about the Minecraft Profile API.

API需要密钥吗?
不需要。Minecraft个人资料API免费且无需密钥。

可以从浏览器使用吗?
Yes. CORS is enabled — call it directly from fetch() in any webpage.

支持Bedrock Edition吗?
Yes. Responses include both Java UUID and Bedrock XUID when available.

可以获取什么数据?
UUID, XUID, skin URL, cape URL, player head image, and full name history as JSON.

基础URL是什么?
https://vrc.lol. Endpoints: /api, /head, /skin, /cape.

可以构建什么?
Discord bots, web apps, server plugins, leaderboards, skin previews, and any tool needing Minecraft player data.

如何获取名称历史?
Use /api?username=X — the response includes java.name_history (array of past names).

可以通过UUID查询吗?
Yes. Pass the UUID in the username parameter: /api?username=853c80ef3e3740fdaa867b06307a3d4f.

在Node.js中可以使用吗?
Yes. Node.js 18+ has fetch() built-in. For older Node, use node-fetch or axios.

/api vs /api.php?
Use /api — it's the canonical URL. /api.php redirects to it. Both work.

UUID格式 — 带连字符还是不带?
Both work. 853c80ef3e3740fdaa867b06307a3d4f (no hyphens) and 853c80ef-3e37-40fd-aa86-7b06307a3d4f (with hyphens) are accepted.

使用场景

The Minecraft Profile API works for many projects. Common examples:

  • Discord机器人
  • Web应用
  • 服务器插件
  • Minecraft工具

下一步

Use the API in your project — Profile Lookup for manual lookups, UUID Guide for server setup, JSON Lists for banned-players.json and whitelist. Skin downloads and Cape gallery for textures.

个人资料查询 Try API 下载皮肤 披风画廊