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
type아니오all, java, or bedrock
update아니오true 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 봇
  • 웹 앱
  • 서버 플러그인
  • 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 스킨 다운로드 망토 갤러리