# Social Blade Scraper API - YouTube, TikTok, Twitch Stats (`dami_studio/socialblade-scraper`) Actor

YouTube shows today's count. Social Blade kept the daily record. JSON for YouTube, TikTok, Twitch, Instagram, Facebook: subscribers, followers, views, likes, grade, ranks, 3-365 day growth, daily history, top-100 leaderboards and its earnings estimate. $1.00 per 1,000 profiles.

- **URL**: https://apify.com/dami\_studio/socialblade-scraper.md
- **Developed by:** [Dami's Studio](https://apify.com/dami_studio) (community)
- **Categories:** Social media, Lead generation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Social Blade Scraper API - creator stats for YouTube, TikTok, Twitch, Instagram and Facebook

A YouTube channel page tells you how many subscribers it has right now. It tells you nothing about
what it had last month. [Social Blade](https://socialblade.com) has been writing that number down
day after day, which is the only reason a 30-day or 365-day delta exists to be read at all.

This actor hands those records back as JSON: subscriber and follower counts, total views, likes,
upload counts, the Social Blade **grade**, the **rank** block, growth deltas from 3 to 365 days, the
daily history table, and Social Blade's own estimated-earnings range for YouTube.

It reads Social Blade's **leaderboards** too, so a single run can pull the top 100 YouTube channels
in India, the top 100 music channels worldwide, or the top 100 Twitch streamers without you
supplying a single handle.

You don't need a Social Blade account, an API key or a proxy. Do read the earnings section before
you use those numbers for anything, though.

***

### What you get

Three ways to ask for data, and you can mix all three in one run.

**1. Named profiles** — paste Social Blade URLs or `platform:identifier` shorthands:

```json
{
  "profiles": [
    "https://socialblade.com/youtube/channel/UCX6OQ3DkcsbYNE6H8uQQuVA",
    "youtube:@MrBeast",
    "tiktok:khaby.lame",
    "twitch:xqc",
    "instagram:cristiano",
    "facebook:Cristiano"
  ]
}
```

YouTube handles, legacy usernames and channel IDs all work. Handles are resolved through Social
Blade's own search, because Social Blade's channel endpoint only accepts `UC…` IDs.

**2. Search** — when you have a name but not a handle:

```json
{ "platform": "tiktok", "searchQueries": ["khaby", "charli"], "resultsPerQuery": 5 }
```

**3. Leaderboards** — `platform`, `platform/field`, `platform/field/COUNTRY`, or
`platform/field/COUNTRY/category`:

```json
{ "topLists": ["youtube/subscribers", "youtube/views/IN", "youtube/subscribers/NONE/music", "tiktok/followers", "twitch/followers"] }
```

| Platform | Rankable fields | Country lists | Category lists |
|---|---|---|---|
| youtube | `subscribers`, `views`, `videos` | yes (263 codes) | yes (16) |
| tiktok | `followers`, `likes` | no | no |
| twitch | `followers` | no | no |
| instagram | `followers` | no | no |
| facebook | `likes`, `talking_about` | no | no |

YouTube categories: games, entertainment, people, animals, film, music, sports, tech, howto, news,
education, comedy, nonprofit, autos, travel, shows.

***

### Sample output

One row per creator. Trimmed for length:

```json
{
  "platform": "youtube",
  "url": "https://socialblade.com/youtube/channel/UCX6OQ3DkcsbYNE6H8uQQuVA",
  "id": "UCX6OQ3DkcsbYNE6H8uQQuVA",
  "username": "mrbeast",
  "displayName": "MrBeast",
  "country": "US",
  "channelType": "entertainment",
  "createdAt": "2012-02-20T00:00:00.000Z",
  "grade": "A++",
  "subscribers": 512000000,
  "views": 136164217161,
  "videos": 996,
  "ranks": { "sb": 8, "subscribers": 1, "views": 6, "country": 1, "category": 1 },
  "socials": ["https://instagram.com/mrbeast", "https://twitter.com/MrBeast"],
  "growth": {
    "subscribers": { "3d": 0, "7d": 1000000, "30d": 4000000, "365d": 91000000 },
    "views": { "3d": 320744345, "7d": 829119503, "30d": 3332509053, "365d": 43319701788 },
    "videos": { "3d": 0, "7d": 0, "30d": 4, "365d": 103 }
  },
  "estimatedMonthlyEarningsUsd": { "low": 833127, "high": 13330036 },
  "estimatedYearlyEarningsUsd": { "low": 10829925, "high": 173278807 },
  "earningsNote": "ESTIMATE ONLY. Social Blade's own model: views in the window / 1,000 x $0.25-$4 RPM. Not reported revenue.",
  "listRank": null,
  "scrapedAt": "2026-08-08T20:33:36.159Z"
}
```

Other real values from the same day: `twitch:xqc` → grade `B+`, 12,534,003 followers, Social Blade
rank 715. `tiktok:khaby.lame` → grade `A`, 162,600,000 followers, 2,700,000,000 likes, rank 1 by
followers. `facebook:Cristiano` → grade `A+`, 174,448,238 likes, 3,193,612 talking about.
`instagram:cristiano` → grade `A++`, 678,422,211 followers, 2.17% engagement rate, Social Blade
rank 9.

Duplicate creators are removed by platform ID, so asking for `youtube/subscribers` and
`youtube/views/IN` in the same run returned 178 rows rather than 200. The 22 channels on both lists
were written once and charged once.

***

### About the earnings figures — read this before you use them

`estimatedMonthlyEarningsUsd` and `estimatedYearlyEarningsUsd` are **Social Blade's own guesses**,
not reported revenue, and not anything the creator has disclosed. Social Blade computes them from a
flat RPM band: views in the window ÷ 1,000 × $0.25 to $4.00. Those two numbers are Social Blade's
published defaults, and the range they produce is wide enough to be close to useless for a single
channel. MrBeast's monthly estimate spans $833K to $13.3M.

Every row that carries them also carries `earningsNote` saying exactly that. They are reproduced
here because people ask for the Social Blade number; treat them as a rough order of magnitude, not
as revenue data. If you need real revenue, this is not the tool.

There is no per-category or per-country RPM adjustment. Social Blade does not do one, so neither
does this actor.

***

### Field coverage

Counted over the real top-100 leaderboard of each platform on 2026-08-08, so 500 creators in total,
all 500 of which returned a full profile:

| Field | YouTube | TikTok | Twitch | Instagram | Facebook |
|---|---|---|---|---|---|
| `grade` | 100% | 100% | 100% | 100% | 100% |
| `ranks` | 100% | 100% | 100% | 100% | 100% |
| `growth` (3–365d) | 100% | 100% | 100% | **0%** | 100% |
| `createdAt` | 100% | 86% | 100% | 0% | 0% |
| `description` | 96% | 0% | 0% | 0% | 0% |
| `country` | 87% | 0% | 0% | 0% | 0% |
| `website` | 0% | 0% | 0% | 74% | 88% |
| `socials` | 30% | 0% | 0% | 0% | 0% |
| `verified` | 0% | 100% | 100% | 0% | 99% |
| `estimated earnings` | 100% (estimate) | n/a | n/a | n/a | n/a |

A `0%` means Social Blade doesn't store that field for that platform. It isn't a scraping failure,
and the key is still present in the row holding a `null`, so your schema stays stable.

Instagram growth and Instagram daily history are `0%` because Social Blade puts them behind its own
paid plan and answers `401` to everyone else. The actor reports this instead of guessing.

***

### What this does NOT do

- **No Twitter/X.** Social Blade removed its Twitter section. `socialblade.com/twitter/user/<handle>`
  returns 404 today and the API has no `twitter` procedure at all. There is no Twitter data on Social Blade
  to read. Ask for `twitter:elonmusk` and you get an uncharged row explaining that, not an invented
  number.
- **No Instagram growth or Instagram history** — Social Blade's paid tier, 401 for everyone else.
- **No YouTube per-video data** (`youtube.videos`, Shorts view share) — also paid tier, 401.
- **Daily history is about 30 days.** Ask for 365 and Social Blade still returns ~31 rows. The row
  reports `historyDays` with the true count.
- **Leaderboards top out at 100 creators per list.** Social Blade's API accepts `limit=5000` and
  silently returns 100. Combine several lists (different fields, countries, categories) if you need
  more.
- **It does not use Social Blade's paid Business API.** No key of yours is used or needed.
- **It only knows creators Social Blade has already indexed.** A brand-new channel that nobody has
  ever looked up on Social Blade will come back `NOT_FOUND`.

***

### Billing

**$1.00 per 1,000 profiles**, plus a $0.001 run start fee. It's a flat rate, the same number on the
free plan as on any paid one.

You are charged for genuine profile rows only. Errors, blocks, not-found entries and the empty-input
sample row are written to the dataset marked `charged: false` and cost nothing.

***

### FAQ

**Is there a free Social Blade API?**
Social Blade's own API is a paid Business product with a separate contract. This actor does not use
it and does not need a key from you. It reads the same public JSON that socialblade.com's own web
pages read.

**How do I get a YouTube channel's subscriber count and rank?**
Put `youtube:@handle` or the channel URL into `profiles`. The row comes back with `subscribers`,
`views`, `videos`, `grade` and a `ranks` object holding the Social Blade rank, subscriber rank, view
rank, country rank and category rank.

**Can I get the top 100 YouTube channels in a country?**
Yes: `"topLists": ["youtube/subscribers/IN"]` for India, `"youtube/views/BR"` for Brazil by views.
263 country codes are accepted, plus `NONE` for worldwide.

**Are the Social Blade earnings estimates accurate?**
No, and Social Blade does not claim they are. They are a flat $0.25–$4.00 per 1,000 views band with
no adjustment for niche, country or sponsorship. Use them as a rough bracket, nothing more. See the
earnings section above.

**Does it work for Twitter/X?**
No. Social Blade shut that section down; there is no Twitter data to read.

**How fast is it?**
Measured on the Apify platform at 1 GB: 300 creators across three leaderboards, each with grade,
ranks and full growth — **7.9 seconds**. 178 creators with 30 days of daily history each — 6.4
seconds. A single leaderboard request returns 100 creators in roughly 120 ms.

**Do I need a proxy?**
No. The actor reaches Social Blade directly from the Apify container. There is a proxy input if your
account requires one, but leaving it off is both cheaper and, in testing, more reliable.

**What happens if a handle does not exist?**
You get an uncharged diagnostic row with `errorCode: "NOT_FOUND"` and a hint, and the run carries on
with the rest of your list.

**Can I track a channel over time?**
Yes. Schedule the actor and each run appends a dated snapshot. `growth` gives you 3/7/14/30/60/90/180/365-day
deltas immediately, and `includeHistory` adds Social Blade's own daily table for the last ~30 days.

**Which platforms are supported?**
YouTube, TikTok, Twitch, Instagram and Facebook. Those are the five Social Blade currently
publishes.

# Actor input Schema

## `profiles` (type: `array`):

Social Blade profile URLs, or "platform:identifier" entries. Examples: https://socialblade.com/youtube/channel/UCX6OQ3DkcsbYNE6H8uQQuVA, youtube:@MrBeast, tiktok:khaby.lame, twitch:xqc, instagram:cristiano, facebook:Cristiano. A bare handle uses the Platform field below.

## `searchQueries` (type: `array`):

Creator names to search on Social Blade. Each query returns up to "Results per query" profiles on the selected platform.

## `topLists` (type: `array`):

Social Blade leaderboards. Format: "platform", "platform/field", "platform/field/COUNTRY" or "platform/field/COUNTRY/category". Fields: youtube = subscribers|views|videos, tiktok = followers|likes, twitch = followers, instagram = followers, facebook = likes|talking\_about. COUNTRY and category are YouTube-only. Examples: youtube/subscribers, youtube/views/IN, youtube/subscribers/NONE/music, tiktok/followers, twitch/followers.

## `platform` (type: `string`):

Used for bare handles in "Profiles" and for every entry in "Search queries".

## `maxItems` (type: `integer`):

Hard cap on charged rows for the whole run.

## `topListSize` (type: `integer`):

How many creators to take from each leaderboard. Social Blade's free leaderboard tops out at 100 per list, so anything higher is capped at 100.

## `resultsPerQuery` (type: `integer`):

How many matches to keep for each entry in "Search queries".

## `includeGrowth` (type: `boolean`):

Adds subscriber/follower/view/like deltas over 3, 7, 14, 30, 60, 90, 180 and 365 days. YouTube earnings estimates are derived from this, so turning it off also removes them. Not available for Instagram (Social Blade puts Instagram growth behind its own paid plan).

## `includeHistory` (type: `boolean`):

Adds the day-by-day stat table. Social Blade serves the last 30 days to unauthenticated visitors. Not available for Instagram.

## `historyDays` (type: `integer`):

How many days of daily history to request. Social Blade returns at most 30 for free.

## `enrichTopLists` (type: `boolean`):

Leaderboard payloads omit Social Blade's grade and rank block. Leave this on to fetch the full profile for every creator on a top list. Turn it off for a faster, lighter run that keeps only the leaderboard fields.

## `proxyConfiguration` (type: `object`):

Optional. This actor reaches Social Blade directly and does not need a proxy; supply your own only if your account requires one.

## Actor input object example

```json
{
  "profiles": [
    "youtube:@MrBeast",
    "tiktok:khaby.lame",
    "twitch:xqc"
  ],
  "searchQueries": [],
  "topLists": [],
  "platform": "youtube",
  "maxItems": 100,
  "topListSize": 100,
  "resultsPerQuery": 5,
  "includeGrowth": true,
  "includeHistory": false,
  "historyDays": 30,
  "enrichTopLists": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

One row per creator in the default dataset: subscribers, followers, views, likes, grade, ranks, 3-365 day growth, daily history and the Social Blade earnings estimate. Empty or blocked runs return a single uncharged row instead.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "profiles": [
        "youtube:@MrBeast",
        "tiktok:khaby.lame",
        "twitch:xqc"
    ],
    "searchQueries": [],
    "topLists": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("dami_studio/socialblade-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "profiles": [
        "youtube:@MrBeast",
        "tiktok:khaby.lame",
        "twitch:xqc",
    ],
    "searchQueries": [],
    "topLists": [],
}

# Run the Actor and wait for it to finish
run = client.actor("dami_studio/socialblade-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "profiles": [
    "youtube:@MrBeast",
    "tiktok:khaby.lame",
    "twitch:xqc"
  ],
  "searchQueries": [],
  "topLists": []
}' |
apify call dami_studio/socialblade-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/socialblade-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/fu1kALvmlC8PhsWKh/builds/Qc5w4RmtKre3xFjhv/openapi.json
