# Social Blade Scraper — Subscribers, Earnings & Ranks (`khadinakbar/socialblade-scraper`) Actor

Scrape Social Blade creator stats across YouTube, Twitch, Twitter, Instagram, TikTok, Dailymotion & Trovo. MCP/API-ready.

- **URL**: https://apify.com/khadinakbar/socialblade-scraper.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** Social media, Lead generation, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 profile scrapeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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 — Subscribers, Earnings, Ranks & Grade

Look up public **Social Blade** creator statistics by handle or profile URL and get structured JSON back. It supports **7 platforms**: YouTube, Twitch, Twitter/X, Instagram, TikTok, Dailymotion, and Trovo.

Built for influencer-marketing agencies, sponsorship teams, and AI agents that need a creator's audience size and **estimated earnings** before reaching out — without a Social Blade account or API key.

### What you get per profile

| Field | Description |
|---|---|
| `platform`, `username`, `profileUrl` | What was looked up + canonical Social Blade URL |
| `displayName`, `avatar`, `country`, `userCreated` | Channel identity + account age |
| `grade` | Social Blade letter grade (A+ … F) |
| `subscribers` / `followers` / `audience` | Audience size (numeric; `audience` is the unified value) |
| `views` | Total views |
| `uploads` | Uploads / videos / tweets / posts |
| `sbRank`, `subscriberRank`, `viewRank`, `countryRank`, `categoryRank` | Social Blade rankings |
| `category` | Channel type / category |
| `earningsMonthlyMin` / `Max` / `Raw` | Estimated monthly earnings range |
| `earningsYearlyMin` / `Max` / `Raw` | Estimated yearly earnings range |
| `found`, `retrievalMethod`, `scrapedAt` | Whether the Social Blade profile exists, how it was retrieved, and ISO 8601 timestamp |

Every run also writes `OUTPUT` and `RUN_SUMMARY` to the default key-value store. They provide the terminal outcome (`COMPLETE`, `PARTIAL`, `VALID_EMPTY`, `INVALID_INPUT`, `UPSTREAM_FAILED`, or `CONFIG_ERROR`), row counts, and the billed-record count.

### When to use it

- **Sponsorship sizing** — pull audience + earnings estimates for a shortlist of creators before outreach.
- **Influencer discovery pipelines** — enrich a list of handles with rank + grade signals.
- **Competitive tracking** — snapshot a creator's subscribers/followers and rank over time.
- **AI agents / MCP** — pass a handle, get back a flat JSON record an LLM can reason over.

**Not for:** native platform scraping (use the dedicated YouTube/TikTok/Instagram scrapers for raw platform data). This actor returns **Social Blade's** aggregated stats and estimates.

### Input

Provide `profiles`, `startUrls`, or both.

```json
{
  "profiles": ["youtube/mrbeast", "twitch/ninja", "tiktok/khaby.lame", "instagram/cristiano"],
  "defaultPlatform": "youtube",
  "maxResults": 10
}
```

Each `profiles` item can be:

- `platform/username` — `youtube/mrbeast`, `twitch/ninja`, `tiktok/khaby.lame`
- a full Social Blade URL — `https://socialblade.com/youtube/handle/mrbeast`
- a bare username / `@handle` — uses `defaultPlatform`

For YouTube, a bare handle such as `youtube/mrbeast` maps to Social Blade's `/youtube/handle/` route. To preserve a legacy user, channel ID, or custom route, use its full Social Blade URL.

Supported platforms: `youtube`, `twitch`, `twitter`, `instagram`, `tiktok`, `dailymotion`, `trovo`.

### Output sample

```json
{
  "platform": "youtube",
  "username": "mrbeast",
  "profileUrl": "https://socialblade.com/youtube/handle/mrbeast",
  "displayName": "MrBeast",
  "country": "United States",
  "grade": "A++",
  "subscribers": 1234567,
  "audience": 1234567,
  "views": 987654321,
  "uploads": 123,
  "sbRank": 1234,
  "countryRank": 345,
  "earningsMonthlyMin": 1200,
  "earningsMonthlyMax": 19200,
  "earningsMonthlyRaw": "$1.2K - $19.2K",
  "earningsYearlyRaw": "$14.4K - $230.4K",
  "found": true,
  "retrievalMethod": "socialblade-browser",
  "scrapedAt": "2026-07-27T00:00:00.000Z"
}
```

### Pricing — Pay Per Event

| Event | Price |
|---|---|
| Actor start | $0.00005 |
| Profile scraped | **$0.01** per profile |

You are billed **only when a validated profile record is durably written to the dataset**. A not-found row is explicitly non-billable, and a blocked run produces no profile charge. This actor is configured for **Pay Per Event with platform usage paid by the user**, so Apify compute and proxy usage are passed through as configured by the platform. A 100-profile run has up to **$1.00** in profile events, plus platform usage.

### How it works

Social Blade is behind a sitewide **Cloudflare** managed challenge. This actor uses a **Camoufox** (Firefox anti-detect) browser on **Apify Residential** proxies to clear the challenge, then parses the server-rendered stats. Datacenter proxies are blocked by Cloudflare, so residential is the default and recommended setting.

Reliability features:

- Per-profile session rotation + one automatic retry on a Cloudflare block.
- Fresh browser session and one automatic retry when Cloudflare blocks a profile.
- Timeout buffer so the actor can save terminal diagnostics before the platform limit.
- **Honest failure**: if every requested profile is blocked, the run is marked `UPSTREAM_FAILED` instead of silently returning an empty success.
- Invalid input returns a successful `INVALID_INPUT` terminal outcome with a clear correction path.

### MCP / AI agents

This actor is designed for the Apify MCP connector. Pass a handle or Social Blade URL, then inspect the dataset plus `OUTPUT` for an agent-safe terminal result. Use it when an agent needs creator audience size, ranks, grades, or directional earnings estimates.

### FAQ

**Are the earnings real?** No — they are **Social Blade's estimates** (a wide projected range based on view counts and generic CPM assumptions). Treat them as directional, not actual revenue.

**Do I need a Social Blade login or API key?** No.

**Which username do I use?** The same one that appears in the Social Blade URL for that creator. For YouTube you can pass a username, channel ID, custom URL, or handle inside a full `socialblade.com/youtube/...` URL.

**A profile returned `found: false`.** That handle has no Social Blade page (wrong spelling, wrong platform, or not tracked). It was not billed.

**The run says `UPSTREAM_FAILED`.** Social Blade's anti-bot protection blocked every attempted profile. No profile data or profile event was produced; retry later with the default residential configuration.

### Legal

This actor scrapes publicly available data displayed on Social Blade. You are responsible for complying with Social Blade's Terms of Service and all applicable laws. Earnings figures are third-party estimates, not financial facts. Use the data responsibly and do not use it to harass, defame, or unlawfully profile individuals. This actor is not affiliated with or endorsed by Social Blade.

# Actor input Schema

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

Creators to look up on Social Blade. Use platform/username (for example youtube/mrbeast or twitch/ninja), a full Social Blade profile URL, or a bare username/@handle using Default platform. Bare YouTube handles use Social Blade's /youtube/handle/ route. Supported: youtube, twitch, twitter, instagram, tiktok, dailymotion, trovo. Do not use native YouTube/TikTok URLs.

## `startUrls` (type: `array`):

Optional full Social Blade profile URLs, merged with Profiles. Example: https://socialblade.com/youtube/handle/mrbeast or https://socialblade.com/twitch/user/ninja. Do not use native creator-platform URLs.

## `defaultPlatform` (type: `string`):

Platform assumed for bare usernames in Profiles that have no 'platform/' prefix. Defaults to 'youtube'. Ignored for items that already specify a platform or a full URL. One of: youtube, twitch, twitter, instagram, tiktok, dailymotion, trovo.

## `maxResults` (type: `integer`):

Hard cap on unique profiles processed and billed after de-duplication. Defaults to 10. Range 1–2000. Set this deliberately for large lists to control your Pay-Per-Event budget.

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

Proxy settings. Defaults to Apify Residential (US) which is REQUIRED to clear Social Blade's Cloudflare — datacenter proxies are blocked. Override only if you have your own residential proxies. Leave at default for best results.

## Actor input object example

```json
{
  "profiles": [
    "youtube/mrbeast",
    "instagram/cristiano"
  ],
  "startUrls": [
    "https://socialblade.com/twitch/user/ninja"
  ],
  "defaultPlatform": "youtube",
  "maxResults": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `profiles` (type: `string`):

One record per creator profile scraped from Social Blade.

## `output` (type: `string`):

Machine-readable outcome and dataset pointer.

## `runSummary` (type: `string`):

Counts of accepted, processed, found, blocked, written and billed profiles.

# 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": [
        "https://socialblade.com/youtube/handle/mrbeast"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/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": ["https://socialblade.com/youtube/handle/mrbeast"] }

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

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": [
    "https://socialblade.com/youtube/handle/mrbeast"
  ]
}' |
apify call khadinakbar/socialblade-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=khadinakbar/socialblade-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/qO7gPBhk0dBdvWSDc/builds/olVz5WUF727rHTPkz/openapi.json
