Social Blade Scraper — YouTube, TikTok, Instagram, Twitch Stats
Pricing
from $12.70 / 1,000 user search + profile lookups
Social Blade Scraper — YouTube, TikTok, Instagram, Twitch Stats
Scrape Social Blade stats for YouTube, TikTok, Instagram and Twitch creators: subscribers or followers, views, uploads, engagement, SB grade and ranks, about a month of daily history, and 1-365 day growth deltas. One row per creator, no login or API key needed.
Pricing
from $12.70 / 1,000 user search + profile lookups
Rating
0.0
(0)
Developer
R.L.
Maintained by CommunityActor stats
0
Bookmarked
145
Total users
56
Monthly active users
4 days ago
Last modified
Categories
Share
Social Blade Scraper — YouTube, TikTok, Instagram & Twitch Stats
Pull Social Blade statistics for any creator without an account, an API key, or a browser. This Actor talks directly to Social Blade's live backend and returns clean, structured JSON for YouTube, TikTok, Instagram and Twitch — including profile summaries, daily historical data, and multi-window growth deltas.
One batched request per creator fetches the profile, ~30 days of history and the growth section together — the same trick the official Social Blade mobile app uses.
What can you scrape from Social Blade?
| Result type | What you get | Accepts |
|---|---|---|
| Profile (recommended) | Resolves a handle, then returns profile + daily history + growth in a single batched call. | handle, ID or URL |
| Search | Social Blade's top matches for a term — 6 on YouTube, 5 on TikTok (measured), with no paging. Use it to find an account's ID, not to enumerate a niche. | search term |
| User | Profile / summary stats only (avatar, country, ranks, totals, grade…). | platform ID only |
| History | Daily historical data points — about 31 days, which is all Social Blade serves anonymously. | platform ID only |
| Growth | Multi-window growth deltas (3–365 days). | platform ID only |
What can I paste, and what gets refused? A handle, a platform ID, a profile URL on
youtube.com,tiktok.com,instagram.com,twitch.tv(subdomains included, som.youtube.comandmusic.youtube.comwork) or asocialblade.comaccount URL. The account is taken from the start of the path, sotiktok.com/@khaby.lame/video/7123…andtwitch.tv/ninja/clipsboth resolve to the account.Refused, with a message naming the reason and charged nothing: a share link (
youtu.be/…,vm.tiktok.com/…) because it names a video or a redirect code rather than an account; a video, post or listing page (youtube.com/watch?v=…,instagram.com/p/…,twitch.tv/videos/…); and any other host, including lookalikes such asyoutube.com.evil.example. Nothing is guessed from an unrecognised URL — it used to become a handle built from the last path segment, which turned a pasted TikTok share link into a YouTube lookup.
How far back does history go? About 31 days. Measured 2026-10-21, one run per rung:
historyLimit10 returned 10 rows and 30 returned 30, while 32, 60, 120 and 365 all returned 31 — identically on YouTube, TikTok and Twitch. That is Social Blade's retention for anonymous callers, and nothing in its response says it truncated, so a run that asks for more says so in its status message. Growth deltas are not affected: those windows really do run 1, 3, 7, 14, 30, 60, 90, 180 and 365 days plus year-to-date.
user,historyandgrowthrequire a resolved platform ID (e.g. a YouTube channel IDUCX6OQ3DkcsbYNE6H8uQQuVA, not the handlemrbeast) — a handle or URL returns an error. Onlyprofileandsearchaccept handles/URLs. To get history or growth from a handle, useprofile(which resolves the handle first, then fetches both); you can pick exactly the layers you want withmode(see the mode table). To find an account's ID, run asearchfirst — theidfield of each result is what these modes expect.
Which platforms and fields are covered?
| Platform | Headline count field | Daily history | Growth deltas | ID format the user/history/growth modes need |
|---|---|---|---|---|
| YouTube | subscribers | yes | yes | channel ID, e.g. UCX6OQ3DkcsbYNE6H8uQQuVA |
| TikTok | followers | yes | yes | the id from a search result (a numeric string) |
followers | gated by Social Blade | gated by Social Blade | the id from a search result (a numeric string) | |
| Twitch | followers | yes | yes | the id from a search result |
Every platform fills id, displayName, username, sbGrade, avatar and rankSb. The rest
differ, because Social Blade publishes different things per platform — measured 2026-10-21
over 42 live accounts (12 YouTube, 10 TikTok, 10 Instagram, 10 Twitch):
| Column | YouTube | TikTok | Twitch | |
|---|---|---|---|---|
subscribers | ✅ | |||
followers | ✅ | ✅ | ✅ | |
views | ✅ | |||
likes | ✅ | |||
uploads | ✅ | ✅ | ✅ | |
following | ✅ | ✅ | ||
verified | ✅ | ✅ | ||
engagementRate, averageLikes, averageComments | ✅ | |||
category, madeForKids | ✅ | |||
country | usually — 10/12 | |||
createdAt | ✅ | about half | ✅ | |
socials | ✅ | |||
| Ranks | rankSubscribers, rankViews, rankCategory, rankCountry (10/12) | rankFollowers, rankLikes, rankVideos | rankFollowers, rankEngagementRate (9/10) | rankFollowers |
A blank cell is an honest null, not a missing column: the column set is the same for every row
of a given mode, so an export never changes shape between accounts.
createdAt is null on about half of TikTok accounts. Social Blade answers with a 1970
epoch artifact for some of them (measured: 1970-12-11 for khaby.lame, 1970-07-04 for
zachking, both of whom joined after 2015), so the Actor drops any date earlier than 2000
rather than shipping an account age that is wrong by half a century. Of 10 TikTok accounts
measured, 2 were artifacts dropped this way, 3 were null at the source, and 5 carried real
dates (2018–2019) and kept them. YouTube (12/12) and Twitch (10/10) are correct to the day.
statsHidden has not been seen true yet. It is false on every Twitch account measured
and null elsewhere, so treat it as "Twitch tells us, the others do not" until an account with
withheld counts turns up — across 42 accounts, none did.
(Social Blade removed Twitter/X data, so it is not available. Facebook is not covered by this Actor.)
Instagram history & growth are gated by Social Blade. Social Blade only serves Instagram's daily-history and growth sections to logged-in/premium accounts (its public backend answers
401 UNAUTHORIZED). For Instagram,profileruns still return the full profile summary, but thehistory/growthfields come backnull— and you are not charged for a section that wasn't delivered. YouTube, TikTok and Twitch are unaffected.
Why use this Social Blade scraper?
- No login, no API key. Works against Social Blade's public web backend.
- Multi-platform in one Actor. Switch between YouTube, TikTok, Instagram and Twitch with a single input field — or mix them in one run by pasting profile URLs.
- Accepts what identifies an account. Handles (
mrbeast), platform IDs, profile URLs (https://youtube.com/@PewDiePie,https://m.youtube.com/@MrBeast,https://tiktok.com/@khaby.lame/video/7123…— the account is read out of the path) and Social Blade URLs all work, and the platform is detected from the URL. A link that names a video or a host the Actor does not read is refused by name instead of being guessed at. - Batched profile lookups. Profile mode pulls summary + history + growth in one request, so you spend fewer proxy hits and finish faster.
- Headline fields surfaced. SB grade, ranks, country, category, total views/uploads, engagement, linked socials and multi-window growth are named top-level columns rather than a nested blob to parse — so they export to CSV and filter in a spreadsheet.
- Beats Cloudflare without a browser. Social Blade JA3-fingerprints the TLS handshake, so plain Python HTTP clients get a 403 "Just a moment" page. The Actor impersonates a real Chrome TLS/HTTP2 fingerprint (via
curl_cffi) and retries with a fresh proxy IP on any remaining challenge — no slow headless browser needed.
How does it compare to the other Social Blade Actors?
Drawn from each Actor's own store listing on 2026-09-27; pricing and features change, so check their pages before deciding.
| This Actor | radeance/socialblade-api | parseforge/socialblade-scraper | |
|---|---|---|---|
| Platforms | YouTube, TikTok, Instagram, Twitch | those four + Facebook | those four + Facebook |
| Look up one creator by handle / ID / URL | yes | yes | profile pages and top lists |
| Daily history time-series (~31 days) | yes (Instagram gated) | subscriber growth stats | not listed |
| Multi-window growth deltas (3–365 d) | yes (Instagram gated) | subscriber growth | not listed |
| Top-100 / leaderboard lists | no | yes | yes |
| Estimated earnings | no | yes | not listed |
| SB grade, ranks, socials | yes | yes | rank, counts, country |
| Mixed-platform URLs in one run | yes | — | — |
| Pricing model | pay-per-event, no subscription | see its pricing tab (it changed model in 2026) | per result |
Pick a different Actor if you need Facebook data, Social Blade's Top-100 leaderboards, or estimated-earnings figures — this Actor does none of those. Pick this one if you already know which creators you care about and want their full profile, daily history and growth deltas per creator, with no subscription.
How much does a Social Blade lookup cost?
This Actor uses pay-per-event pricing — no monthly subscription. You only pay for the data you actually receive (failed/empty queries are never charged). The live per-event prices, which vary by your Apify plan, are on the Actor's store page and in the cost estimate shown before you start a run — they are not repeated here, so this page cannot disagree with what you are actually billed.
| Event | Charged when |
|---|---|
| User search + profile lookup | A search, user, or profile query returns its profile/summary data. |
| Historical data | A daily history time-series is returned (in history or profile mode). |
| Growth data | A multi-window growth section is returned (in growth or profile mode). |
Pick your layers with mode. The three layers are charged separately, so asking for
only the layers you need is the cheapest way to run this Actor — and the two add-on layers
are priced below the base lookup, so depth costs less than three separate queries:
mode | What you get | Events charged |
|---|---|---|
profile | Stats snapshot only | profile lookup |
history | Daily history rows only | historical data |
growth | Multi-window growth only | growth data |
profile-history | Snapshot + daily history | profile lookup + historical data |
profile-growth | Snapshot + growth windows | profile lookup + growth data |
all | Snapshot + history + growth | all three |
search | Account search results | profile lookup |
user | Profile summary only, by platform ID | profile lookup |
Platform coverage (verified 2026-10-06):
| Platform | profile | history | growth |
|---|---|---|---|
| YouTube | ✅ | ✅ | ✅ |
| TikTok | ✅ | ✅ | ✅ |
| Twitch | ✅ | ✅ | ✅ |
| ✅ | ❌ | ❌ |
Social Blade's API answers 401 UNAUTHORIZED for Instagram history and growth, so those
modes stop with an explanatory message and charge nothing; profile-history /
profile-growth / all on Instagram deliver and charge the profile layer only.
history and growth are standalone: give them a handle or a profile URL and the Actor
resolves the platform ID for you, at no extra charge — you pay for the one layer you
asked for. Previously those modes rejected anything that was not already a platform ID.
If you are migrating: the old default (
resultType: "profile"withincludeHistoryandincludeGrowthbothtrue) charged all three layers for a request most people make to get a snapshot. That combination is nowmode: "all", andmode: "profile"gives the snapshot alone and charges one layer instead of three. Saved tasks that set the old inputs keep working exactly as before.
Platform usage (compute, Apify Proxy, data transfer) is absorbed by this Actor, not billed to you on top of the events above.
What input does it take?
| Field | Type | Default | Description |
|---|---|---|---|
platform | string | youtube | youtube, tiktok, instagram or twitch. |
queries | array of strings | — | Handles / IDs / profile URLs (or search terms for search). Every mode accepts a handle or URL — history and growth resolve the platform ID themselves at no extra charge. Required. |
mode | string | profile | Which data layers to fetch — see the mode table above. One of profile, history, growth, profile-history, profile-growth, all, search, user. |
resultType | string | profile | Deprecated — use mode. Honoured only when mode is left empty, so saved tasks are unaffected. |
includeHistory | boolean | true | Deprecated — use mode (profile-history / all). Honoured only when mode is left empty. |
includeGrowth | boolean | true | Deprecated — use mode (profile-growth / all). Honoured only when mode is left empty. |
historyLimit | integer | 30 | Daily data points for history / profile. Values above ~31 are accepted but return ~31 rows — see the note under Result types. |
maxConcurrency | integer | 5 | Queries processed in parallel (1–50). |
maxRetries | integer | 6 | Retries (with IP rotation) per request when Cloudflare challenges (1–20). |
proxyConfiguration | object | Residential Apify Proxy | Proxy settings. Residential is the default; datacenter IPs get hard-blocked by Cloudflare under load. |
Example input
{"platform": "youtube","queries": ["mrbeast", "pewdiepie"],"resultType": "profile","historyLimit": 30,"maxConcurrency": 5,"proxyConfiguration": { "useApifyProxy": true }}
What does each row contain?
One record is pushed to the dataset per query. Example (profile, abbreviated):
{"platform": "youtube","resultType": "profile","query": "mrbeast","id": "UCX6OQ3DkcsbYNE6H8uQQuVA","displayName": "MrBeast","username": "mrbeast","verified": null,"subscribers": 502000000,"followers": null,"views": 130065447496,"likes": null,"uploads": 988,"following": null,"sbGrade": "A++","country": "US","category": "entertainment","madeForKids": false,"statsHidden": null,"createdAt": "2012-02-20T00:00:00.000Z","socials": [ "https://instagram.com/mrbeast", "https://x.com/MrBeast" ],"avatar": "https://yt3.ggpht.com/...","rankSb": 13,"rankSubscribers": 1,"rankViews": 12,"rankCountry": 1,"rankCategory": 1,"scrapedAt": "2026-06-19T12:00:00+00:00","history": [ { "date": "2026-06-18T00:00:00.000Z", "subscribers": 501000000, "views": 129900000000, "videos": 987 } ],"growth": {"subscribers": { "3d": 1000000, "7d": 3000000, "30d": 15000000, "90d": 30000000, "365d": 96000000 },"views": { "3d": 509488425, "30d": 6576018368, "365d": 43252485950 },"videos": { "3d": 1, "30d": 7, "365d": 111 }}}
growthgroups subscriber, view and upload deltas by metric, each keyed by the day-window Social Blade returned it for (from1dup to365d, plusytd);historyis the daily time-series. Pick the sections withmode—profilefor neither,profile-history,profile-growthorall.
The column set belongs to the mode, not to the account. Every row of a run carries exactly
the columns its mode can fill, with an explicit null where Social Blade publishes nothing — so
row["displayName"] is a null rather than a missing key, and a CSV keeps one shape for the whole
run. A history run therefore carries the six identity columns plus history, and not the
profile summary it could never fill. The dataset has one view per mode (Profile, Daily history,
Growth, Search results) so the Console shows the columns that mode actually uses.
A search record contains a results array; failed queries carry an error string instead of
data (the run continues — one bad query never aborts the batch) and are never charged.
Breaking change, 2026-10-21. Three output fields changed shape, so update any workflow that reads them:
was now user— the whole upstream profile object, verbatimremoved. Every scalar worth having is a named column; likes,following,verified,engagementRate,averageLikes,averageCommentsandstatsHiddenare new ones lifted out of it. Dropped with it:banner,description,website,secUid,identifiers,stats,hasAuthed,disabled,status.ranks— an object keyed per metricrankSb,rankSubscribers,rankFollowers,rankViews,rankVideos,rankLikes,rankEngagementRate,rankCountry,rankCategory— one scalar column each, so they export and filter.socials— a list of{url, title, favicon}objectsa list of URL strings. The titlewas UI chrome ("Follow") and thefavicona tracking URL.It was half a YouTube row by weight, it restated the same counts in a
statssub-object as strings, and an upstream shape change altered the output with nobody touching a mapping. If you need a field that went with it, open an issue — it is a one-line addition.
What do Social Blade's metrics actually mean?
- SB grade (
sbGrade) — Social Blade's own letter grade for an account (A++,B, and so on). It is Social Blade's editorial summary of how the account is doing, not a figure YouTube or TikTok publishes; the Actor passes it through unchanged. - Ranks (
rank…) — position in Social Blade's league tables:rankSbis the overall SB rank,rankSubscribers/rankFollowers/rankViews/rankLikes/rankVideos/rankEngagementRaterank by those totals, andrankCountry/rankCategoryrank the account within its own country and content category. Rank 1 is the top. - Growth deltas vs. projections — the
growthsection is historical: how much a metric changed over the last 3, 7, … 365 days. These are measured differences between two past snapshots, not a forecast of future subscribers. If you want a projection, fit it yourself fromhistory. - Daily history (
history) — one data point per day, each carrying that day's cumulative totals rather than that day's gain. The keys differ by platform (measured): YouTubedate, subscribers, views, videos; TikTokdate, followers, following, likes, videos; Twitchdate, followers. Growth is the opposite — the same windows on every platform, with only the metric set differing. Day-over-day change is the difference between two consecutive points.historyLimitsets how many days you ask for; Social Blade serves about 31 to anonymous callers, and a run that asks for more says so in its status message. - Stats hidden (
statsHidden) — whether Social Blade is withholding this account's counts. It separates "this creator has no views" from "we are not shown them", which otherwise look identical. - Engagement (
engagementRate,averageLikes,averageComments) — Instagram only. The rate is a fraction, so0.02is 2%. - Subscribers vs. followers — the same idea under two names. YouTube reports subscribers; TikTok, Instagram and Twitch report followers. The Actor keeps them in separate fields rather than merging them, so exactly one of the two is populated per row.
- Handle vs. platform ID — a handle (
mrbeast) is the name in the URL and can be changed by its owner; the platform ID (UCX6OQ3DkcsbYNE6H8uQQuVA) is permanent and is what theusermode needs (historyandgrowthresolve a handle for you, at no extra charge).profilemode resolves one to the other for you. - Category (
category) — Social Blade's content classification for the account (e.g.entertainment), which is also what thecategoryrank is measured within. - Made for kids (
madeForKids) — the "made for kids" audience flag as Social Blade reports it for a YouTube channel, passed through as a boolean (null where Social Blade has no value).
FAQ
Do I need a Social Blade account, login, or API key? No. The Actor calls the same public backend the Social Blade website uses, so there is no account, no premium subscription and no key to enter. The one exception is Instagram history and growth, which Social Blade itself serves only to logged-in premium accounts — those fields come back null and unbilled.
Can I schedule it to build a growth time-series? Yes — use Apify Schedules and it appends a fresh row per creator per run. A monthly schedule is enough to keep a continuous series, because one run already returns Social Blade's whole anonymous window (about 31 days) in a single call. Beyond that window, the scheduled runs are the archive: Social Blade does not serve older daily rows, so the series you keep is the one you collected.
What does one row contain? One creator per row for profile, user, history and growth: the summary fields as flat columns, the daily series under history and the per-metric deltas under growth. A search row instead holds a results array of matching accounts. Each mode emits only the columns it can fill, and the dataset carries one view per mode.
How is the cost bounded? Each event is charged only for a section actually delivered, so the worst case is three events per creator, in mode: "all"; a single-layer mode (profile, history or growth) charges one. Set Max total charge on the run and the Actor stops starting new queries once that cap is hit, and says in its status message how many queries it never attempted.
Why did search return nothing / only a handful? Social Blade's search returns its top matches — measured at 6 on YouTube and 5 on TikTok — and there is no paging, so it is a tool for finding an account's ID rather than for enumerating a niche. It also ignores very short or very common terms: measured 2026-10-21, a and the return nothing at all while vlog returns 6. An empty search is never charged, and the run's status message says which of the two happened.
Why do I get a Cloudflare challenge or a 403? Social Blade fingerprints the TLS handshake. The Actor already impersonates a real Chrome fingerprint and retries on a fresh IP up to maxRetries times, so the usual cause is the proxy: keep the default residential Apify Proxy, and lower maxConcurrency if challenges persist. Datacenter IPs work at low volume but get hard-blocked under concurrency.
What happens if one creator fails or does not exist? That row is written with an error field instead of data and the run carries on through the rest of the batch — one bad handle never aborts the job, and you are not charged for it.
Does it cover Facebook or Twitter/X? No. Social Blade dropped Twitter/X data entirely, and this Actor's platforms are YouTube, TikTok, Instagram and Twitch. If you need Facebook, use an Actor that lists it.
Can I get Social Blade's Top-100 lists or estimated earnings? No — this Actor is built for per-creator lookups by handle, ID or URL. Leaderboards and earnings estimates are not returned; another Social Blade Actor is the better fit for those.
Can I mix platforms in one run? Yes. Paste full profile URLs (https://tiktok.com/@khaby.lame, https://twitch.tv/pokimane) and the platform is detected per entry, overriding the platform field.
Tips and limits
- Use residential proxy (the default). Residential IPs reliably succeed across all platforms; datacenter IPs work for low volume but get hard-blocked under concurrency.
profileis the cheapest way to get everything — prefer it over runninguser+history+growthseparately.- Ask for the history you need.
historyLimitaccepts up to 365, but Social Blade serves about 31 days to anonymous callers, and fewer where it holds fewer — the run says so in its status message when it returns less than you asked for. - This Actor reads publicly available data from Social Blade. Respect Social Blade's terms and applicable laws; use the data responsibly.
How does it get past Cloudflare?
The Actor calls Social Blade's tRPC backend (https://socialblade.com/api/trpc) with GET requests —
the same endpoints the website itself uses. Cloudflare fingerprints the TLS handshake, so the Actor
uses curl_cffi to impersonate a real Chrome browser's TLS/HTTP2 fingerprint; this gets a normal JSON
response without the cost of a headless browser. When a challenge page is still returned instead of
JSON, the request is retried on a fresh proxy IP until it succeeds or maxRetries is exhausted.
n8n integration
Use the n8n-nodes-social-blade-lookup community node (source) to run this Actor directly from an n8n workflow.
Community research toolkit
Part of the Community research toolkit — research online communities and creators across forums, link-in-bio pages, and social platforms:
- Reddit Scraper — Posts, Comments, Subreddits & Users — Scrape Reddit posts, comments, search results, subreddits, and user profiles.
- Linktree Profile Scraper — Scrape profile info and all links from Linktree pages.
- Discourse Community Scraper — Generalised scraper for any Discourse-based community forum.
- phpBB Forum Scraper — Generic scraper for phpBB-powered forums.
- Hacker News Scraper — Scrape Hacker News by search, user, listing, or thread.
Did you find this useful?
Rate this actor on Apify! Your feedback helps other users find it and helps us keep improving it.