Social Blade APIsocialblade.com ↗
Access Social Blade data for YouTube: subscriber counts, grades, ranks, daily history, milestones, channel search, and top-channel lists via 5 structured endpoints.
What is the Social Blade API?
The Social Blade API provides structured access to YouTube channel analytics across 5 endpoints, covering current stats, historical daily data, milestone tracking, channel search, and ranked top-channel lists. The get_channel endpoint alone returns over 10 distinct fields including Social Blade grade, five rank dimensions, and growth deltas across ten time windows. list_top_channels lets you filter those rankings by country, content category, and made-for-kids status.
curl -X GET 'https://api.parse.bot/scraper/1c59ab28-a852-4899-9114-87dbf1a73fad/get_channel?channel=UCX6OQ3DkcsbYNE6H8uQQuVA' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace socialblade-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Social Blade YouTube API — bounded, re-runnable."""
from parse_apis.socialblade_com_api import (
SocialBlade, TopField, SortOrder, ChannelCategory, InputNotFound,
)
client = SocialBlade()
# Top 5 YouTube channels by subscriber count, descending.
for ch in client.top_channels.list(
field=TopField.SUBSCRIBERS, sort=SortOrder.DESC, limit=5,
):
print(ch.rank, ch.display_name, ch.subscribers)
# Drill into the first top channel's full profile via .details().
top = client.top_channels.list(field=TopField.VIEWS, limit=1).first()
if top is not None:
channel = top.details()
print(channel.display_name, channel.grade, channel.views)
print("Monthly earnings:", channel.estimated_earnings.monthly.low_usd,
"-", channel.estimated_earnings.monthly.high_usd)
# 30-day subscriber growth from the growth map.
print("30d sub growth:", channel.growth.subscribers.get("30"))
# Recent daily history for that channel.
for day in channel.history.list(days=7, limit=3):
print(day.date, day.subscribers, day.views_change)
# Milestones achieved by the channel.
for ms in channel.milestones.list(limit=5):
print(ms.metric, ms.threshold, ms.reached_on)
# Search for a channel by name, then fetch its full profile.
result = client.channel_summaries.search(query="pewdiepie", limit=1).first()
if result is not None:
try:
detail = client.channels.get(channel=result.channel_id)
print(detail.display_name, detail.subscribers, detail.country)
except InputNotFound:
print("Channel not found")
print("exercised: top_channels.list / details / history.list / milestones.list"
" / channel_summaries.search / channels.get")
Returns one YouTube channel's Social Blade profile: identity (channel_id, handle, username), current subscriber/view/video counts, Social Blade grade, ranks (overall Social Blade rank, subscriber rank, video-view rank, country rank, category rank), linked social profiles, growth deltas of subscribers/views/videos over the last 1, 3, 7, 14, 30, 60, 90, 180 and 365 days plus year-to-date, and estimated monthly/yearly earnings. Earnings are estimates computed from the 30-day and 365-day view gains using Social Blade's published default CPM range of $0.25-$4.00 per 1,000 views; they are not source values. The channel may be given as a channel ID (UC...), an @handle, or a legacy username; a handle/username costs one extra round trip to resolve. An unknown channel returns a stale_input (input_not_found) error. Numeric counts are integers; ranks and country can be null when Social Blade has not assigned them.
| Param | Type | Description |
|---|---|---|
| channelrequired | string | YouTube channel identifier: a channel ID starting with UC (24 chars), an @handle (e.g. @mrbeast), or a legacy username (e.g. mrbeast6000). Channel IDs are also emitted as channel_id by search_channels and list_top_channels. |
{
"type": "object",
"fields": {
"grade": "Social Blade grade string such as A++ or B+",
"ranks": "object of integer ranks: socialblade_rank, subscriber_rank, video_view_rank, country_rank, category_rank (null when unranked)",
"views": "integer total video views",
"growth": "object keyed subscribers/views/videos, each mapping window ('1','3','7','14','30','60','90','180','365','ytd') to the integer change over that window",
"handle": "YouTube @handle without the @, null if none",
"videos": "integer upload count",
"socials": "array of {title, url} linked social profiles",
"username": "legacy YouTube username, null if none",
"channel_id": "YouTube channel ID (UC...)",
"created_at": "channel creation date, YYYY-MM-DD",
"subscribers": "integer current subscriber count (rounded as Social Blade shows it)",
"estimated_earnings": "object with monthly and yearly {low_usd, high_usd} estimates and a basis string describing the CPM assumption"
},
"sample": {
"data": {
"grade": "B+",
"ranks": {
"country_rank": 1,
"category_rank": 7,
"subscriber_rank": 16,
"video_view_rank": 184,
"socialblade_rank": 50230
},
"views": 29536288198,
"growth": {
"views": {
"1": 1688224,
"3": 11840955,
"7": 13249201,
"14": 15284492,
"30": 20757631,
"60": 28200662,
"90": 37234352,
"180": 50915511,
"365": 127995542,
"ytd": 87367747
},
"videos": {
"1": 0,
"3": 0,
"7": 1,
"14": 1,
"30": 1,
"60": 2,
"90": 3,
"180": 6,
"365": 17,
"ytd": 12
},
"subscribers": {
"1": 0,
"3": 0,
"7": 0,
"14": 0,
"30": -1000000,
"60": -1000000,
"90": -1000000,
"180": -1000000,
"365": -1000000,
"ytd": -1000000
}
},
"handle": "pewdiepie",
"videos": 4666,
"country": "JP",
"socials": [
{
"url": "https://instagram.com/pewdiepie",
"title": "IG"
}
],
"category": "entertainment",
"username": "pewdiepie",
"avatar_url": "https://yt3.ggpht.com/example=s88",
"banner_url": "https://yt3.googleusercontent.com/example",
"channel_id": "UC-lHJZR3Gqxm24_Vd_AJ5Yw",
"created_at": "2010-04-29",
"description": "I make videos.",
"subscribers": 109000000,
"display_name": "PewDiePie",
"made_for_kids": false,
"estimated_earnings": {
"basis": "views over the period x $0.25-$4.0 per 1,000 views (Social Blade default CPM range)",
"yearly": {
"low_usd": 31998.89,
"high_usd": 511982.17
},
"monthly": {
"low_usd": 5189.41,
"high_usd": 83030.52
}
}
},
"status": "success"
}
}About the Social Blade API
Channel Statistics and Rankings
The get_channel endpoint accepts a YouTube channel ID (UC… format), an @handle, or a legacy username and returns identity fields (channel_id, handle, username, created_at), current counts (subscribers, views, videos), and a Social Blade grade string such as A++ or B+. The ranks object carries five integer dimensions — socialblade_rank, subscriber_rank, video_view_rank, country_rank, and category_rank — any of which may be null when the channel is unranked in that dimension. The growth object maps ten time windows (1, 3, 7, 14, 30, 60, 90, 180, 365, ytd) to integer deltas for subscribers, views, and videos.
Daily History and Milestones
get_channel_history returns up to 31 daily rows (the maximum Social Blade exposes publicly) for a given channel. Each row includes date, absolute counts for subscribers, views, and videos, day-over-day change fields (subscribers_change, views_change, videos_change), and an estimated_earnings range derived from Social Blade's default $0.25–$4.00 CPM assumption, documented in the earnings_basis field. The get_channel_milestones endpoint returns the first_tracked date and an array of milestone objects — each with a metric (subscribers, views, or uploads), a threshold integer, and a reached_on date (or null if not yet reached).
Search and Top-Channel Lists
search_channels accepts a free-text query and returns a short fixed list in Social Blade's relevance order, each result carrying channel_id, display_name, avatar_url, subscribers, views, and videos. There is no pagination. list_top_channels takes a field (subscribers, views, or videos), sort direction, and an optional limit of 10, 50, or 100. Optional filters include a two-letter ISO country code, a Social Blade category string, and a made_for_kids boolean. Each ranked row includes rank, identity fields, avatar_url, banner_url, description, country, and category.
The Social Blade API is a managed, monitored endpoint for socialblade.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when socialblade.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official socialblade.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track a competitor YouTube channel's subscriber growth across the 30-day and 90-day windows returned by
get_channel. - Build a dashboard that surfaces daily subscriber and view changes using
get_channel_historyover the past 31 days. - Identify when a channel crossed key subscriber thresholds (100K, 1M) using milestone
reached_ondates fromget_channel_milestones. - Discover top YouTube channels in a specific country and content category using
list_top_channelswithcountryandcategoryfilters. - Enrich an influencer database with Social Blade grades and five-dimensional rank scores via
get_channel. - Search for channels by name fragment using
search_channelsto resolve a display name to a canonicalchannel_id. - Filter the top-100 ranked channels by
made_for_kidsstatus to scope an analysis to family-friendly content.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Social Blade have an official developer API?+
What does the `growth` object in `get_channel` actually contain?+
subscribers, views, and videos — each mapping ten window labels (1, 3, 7, 14, 30, 60, 90, 180, 365, ytd) to integer deltas. A value of null means Social Blade does not have enough history to compute that window for the channel.How fresh is the daily history data, and what is the maximum number of days I can retrieve?+
days parameter on get_channel_history is capped at 31. Older history is not available through this API.Does the API cover platforms other than YouTube, such as Twitch, Instagram, or TikTok?+
Can I retrieve historical subscriber counts going back years rather than 31 days?+
get_channel_history endpoint returns at most 31 daily rows, which is what Social Blade exposes in its public view. Long-term historical archives are not available through this API. You can fork the API on Parse and revise it if Social Blade surfaces deeper history in a different context.