API Reference

Plain HTTP. No authentication. No API key. All responses are either an image or JSON. Rate limit is 10 requests per 30 seconds per IP.

Free to useNo auth required10 req/30s

Base URL

https://banner.yt
GET/api/channel/{identifier}

Returns JSON channel metadata: title, subscriber count, view count, description, all banner URLs, and links.

Parameters

ParamTypeValues
typestringid (default), username, handle

Examples

URLs
// by channel ID (default)
/api/channel/UCX6OQ3DkcsbYNE6H8uQQuVA

// by @handle
/api/channel/mrbeast?type=handle

// by username
/api/channel/mrbeast?type=username

Response

JSON
{
  "channelId": "UCX6OQ3DkcsbYNE6H8uQQuVA",
  "title": "MrBeast",
  "description": "SUBSCRIBE FOR A COOKIE",
  "customUrl": "@MrBeast",
  "publishedAt": "2012-02-19T23:29:16Z",
  "country": "US",
  "subscriberCount": "340000000",
  "viewCount": "60000000000",
  "videoCount": "800",
  "bannerUrl": "https://banner.yt/api/banner/UCX6OQ3DkcsbYNE6H8uQQuVA",
  "avatarUrl": "https://banner.yt/api/banner/UCX6OQ3DkcsbYNE6H8uQQuVA?type=avatar",
  "bannerUrls": {
    "default": "https://banner.yt/api/banner/UCX6OQ3DkcsbYNE6H8uQQuVA",
    "tv": "https://banner.yt/api/banner/UCX6OQ3DkcsbYNE6H8uQQuVA?type=tv",
    "desktop": "https://banner.yt/api/banner/UCX6OQ3DkcsbYNE6H8uQQuVA?type=desktop",
    "tablet": "https://banner.yt/api/banner/UCX6OQ3DkcsbYNE6H8uQQuVA?type=tablet",
    "mobile": "https://banner.yt/api/banner/UCX6OQ3DkcsbYNE6H8uQQuVA?type=mobile",
    "avatar": "https://banner.yt/api/banner/UCX6OQ3DkcsbYNE6H8uQQuVA?type=avatar"
  },
  "links": [
    { "title": "Instagram", "url": "https://www.instagram.com/mrbeast/" }
  ]
}

Code examples

HTML

HTML
<!-- Banner image -->
<img src="https://banner.yt/api/banner/UCX6OQ3DkcsbYNE6H8uQQuVA" alt="Channel banner" />

<!-- Avatar -->
<img src="https://banner.yt/api/banner/UCX6OQ3DkcsbYNE6H8uQQuVA?type=avatar" />

<!-- AVIF mobile crop -->
<img src="https://banner.yt/api/banner/UCX6OQ3DkcsbYNE6H8uQQuVA?type=mobile&format=avif" />

JavaScript / fetch

JavaScript
// Fetch and display a banner
const img = document.createElement('img');
img.src = 'https://banner.yt/api/banner/UCX6OQ3DkcsbYNE6H8uQQuVA';
document.body.appendChild(img);

// Get channel data
const res = await fetch('https://banner.yt/api/channel/UCX6OQ3DkcsbYNE6H8uQQuVA');
const channel = await res.json();
console.log(channel.title, channel.subscriberCount);

Python

Python
import requests

channel_id = 'UCX6OQ3DkcsbYNE6H8uQQuVA'

# Download banner
r = requests.get(f'https://banner.yt/api/banner/{channel_id}')
with open('banner.webp', 'wb') as f:
    f.write(r.content)

# Channel data
data = requests.get(f'https://banner.yt/api/channel/{channel_id}').json()
print(data['title'], data['subscriberCount'])

curl

bash
# Download banner
curl -o banner.webp "https://banner.yt/api/banner/UCX6OQ3DkcsbYNE6H8uQQuVA"

# Channel data
curl "https://banner.yt/api/channel/UCX6OQ3DkcsbYNE6H8uQQuVA"

# Search
curl "https://banner.yt/api/search?q=MrBeast"

Rate limits and caching

Rate limit: 10 requests per 30 seconds per IP. Returns HTTP 429 if exceeded.

Image cache: 24 hours. Cache-Control: public, max-age=86400

Channel data cache: 1 hour per channel ID.

Higher limits: Contact us at [email protected]

More documentation