# Social Blade API

> Social Blade returns social media stats, channel growth and creator earnings as a workflow and API.

Social Blade (SB) returns public YouTube channel stats, 30-day growth, earnings estimates and daily figures; provide a channel name, handle or link. Its Instagram method returns public account totals, engagement and grade from a username or profile link; daily history may be unavailable. Its TikTok method returns creator totals, grade when shown, 30-day changes and daily figures; provide a username or profile link.

- Page: https://fous.com/tools/social-blade
- Handle: `@social-blade`
- Category: [Marketing](https://fous.com/tools/category/marketing)
- Source website: https://socialblade.com
- Last verified: Sep 30, 2026

## Methods

### Get instagram stats

Operation `get_instagram_stats`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get public Instagram account totals, engagement and grade from Social Blade using a handle or profile link. Daily history and 30-day follower change require sign-in on Social Blade, so those fields are unavailable for public visitors.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `username` | string | yes | `"@natgeo"` | Instagram handle or profile link, for example @natgeo or https://www.instagram.com/natgeo/. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "username"
  ],
  "properties": {
    "username": {
      "type": "string",
      "description": "Instagram handle or profile link, for example @natgeo or https://www.instagram.com/natgeo/.",
      "examples": [
        "@natgeo",
        "https://www.instagram.com/cristiano/"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "username": "@natgeo"
    },
    {
      "username": "https://www.instagram.com/cristiano/"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `grade` | string or null | `"B+"` | Social Blade grade, when shown. |
| `posts` | integer or null | `32047` | Current posts (media) count. |
| `username` | string | `"natgeo"` | Instagram handle without @. |
| `followers` | integer or null | `268509154` | Current followers. |
| `following` | integer or null | `194` | Current following count. |
| `daily_stats` | array |  | Up to 14 daily records; empty when public history is restricted. |
| `daily_stats[].date` | string |  |  |
| `daily_stats[].posts` | integer or null |  |  |
| `daily_stats[].followers` | integer or null |  |  |
| `daily_stats[].following` | integer or null |  |  |
| `display_name` | string or null | `"National Geographic"` | Account display name. |
| `social_blade_link` | string | `"https://socialblade.com/instagram/user/natgeo"` | Social Blade account page link. |
| `average_likes_per_post` | number or null | `48506.9375` | Average likes per post, when shown. |
| `engagement_rate_percent` | number or null | `0.02` | Engagement rate in percent. |
| `average_comments_per_post` | number or null | `185.5` | Average comments per post, when shown. |
| `follower_change_last_30_days` | integer or null |  | Follower change over the last 30 days; null when public history is restricted. |

**Example input**

```json
{
  "username": "@natgeo"
}
```

**Example output**

```json
{
  "grade": "B+",
  "posts": 32047,
  "username": "natgeo",
  "followers": 268509154,
  "following": 194,
  "daily_stats": [],
  "display_name": "National Geographic",
  "social_blade_link": "https://socialblade.com/instagram/user/natgeo",
  "average_likes_per_post": 48506.9375,
  "engagement_rate_percent": 0.02,
  "average_comments_per_post": 185.5,
  "follower_change_last_30_days": null
}
```

### Get TikTok stats

Operation `get_tiktok_stats`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get a TikTok creator’s Social Blade profile totals, grade when shown, 30-day follower and like changes, and up to 14 days of daily totals. Counts reflect Social Blade’s recorded and sometimes rounded TikTok figures.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `username` | string | yes | `"@charlidamelio"` | TikTok @handle or TikTok or Social Blade profile link, for example @khaby.lame. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "username"
  ],
  "properties": {
    "username": {
      "type": "string",
      "description": "TikTok @handle or TikTok or Social Blade profile link, for example @khaby.lame.",
      "examples": [
        "@charlidamelio",
        "@bellapoarch"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "username": "@charlidamelio"
    },
    {
      "username": "@bellapoarch"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `videos` | integer or null | `3277` |  |
| `username` | string | `"charlidamelio"` |  |
| `followers` | integer or null | `160300000` |  |
| `following` | integer or null | `1442` |  |
| `total_likes` | integer or null | `12400000000` |  |
| `display_name` | string or null | `"charli d’amelio"` |  |
| `daily_history` | array |  |  |
| `daily_history[].date` | string | `"2026-09-16"` |  |
| `daily_history[].likes` | integer or null | `12300000000` |  |
| `daily_history[].videos` | integer or null | `3257` |  |
| `daily_history[].followers` | integer or null | `159800000` |  |
| `social_blade_link` | string | `"https://socialblade.com/tiktok/user/charlidamelio"` |  |
| `social_blade_grade` | string or null | `"A++"` |  |
| `like_change_30_days` | integer or null | `100000000` |  |
| `follower_change_30_days` | integer or null | `1100000` |  |

**Example input**

```json
{
  "username": "@charlidamelio"
}
```

**Example output**

```json
{
  "videos": 3277,
  "username": "charlidamelio",
  "followers": 160300000,
  "following": 1442,
  "total_likes": 12400000000,
  "display_name": "charli d’amelio",
  "daily_history": [
    {
      "date": "2026-09-16",
      "likes": 12300000000,
      "videos": 3257,
      "followers": 159800000
    },
    {
      "date": "2026-09-17",
      "likes": 12300000000,
      "videos": 3259,
      "followers": 159900000
    },
    {
      "date": "2026-09-18",
      "likes": 12300000000,
      "videos": 3260,
      "followers": 160000000
    }
  ],
  "social_blade_link": "https://socialblade.com/tiktok/user/charlidamelio",
  "social_blade_grade": "A++",
  "like_change_30_days": 100000000,
  "follower_change_30_days": 1100000
}
```

### Get YouTube channel stats

Operation `get_youtube_channel_stats`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get a YouTube channel’s public Social Blade profile, 30-day growth, earnings estimates and daily statistics for the last 14 days. Earnings are estimates rounded as displayed; some channels may not show every metric.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `channel` | string | yes | `"MrBeast"` | Channel name, @handle, YouTube link, or Social Blade link, such as MrBeast or @mkbhd. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "channel"
  ],
  "properties": {
    "channel": {
      "type": "string",
      "description": "Channel name, @handle, YouTube link, or Social Blade link, such as MrBeast or @mkbhd.",
      "examples": [
        "MrBeast",
        "@mkbhd",
        "https://www.youtube.com/@MrBeast"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "channel": "MrBeast"
    },
    {
      "channel": "@mkbhd"
    },
    {
      "channel": "https://www.youtube.com/@MrBeast"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `handle` | string or null | `"@mrbeast"` |  |
| `daily_stats` | array |  |  |
| `daily_stats[].date` | string | `"2026-09-16"` |  |
| `daily_stats[].views` | integer or null | `140112555446` |  |
| `daily_stats[].subscribers` | integer or null | `517000000` |  |
| `subscribers` | integer or null | `518000000` |  |
| `channel_name` | string | `"MrBeast"` |  |
| `channel_type` | string or null | `"Entertainment"` |  |
| `created_date` | string or null | `"2012-02-20"` |  |
| `subscriber_rank` | integer or null | `1` |  |
| `number_of_videos` | integer or null | `1004` |  |
| `earnings_currency` | string | `"USD"` |  |
| `social_blade_link` | string | `"https://socialblade.com/youtube/channel/UCX6OQ3DkcsbYNE6H8uQQuVA"` |  |
| `total_video_views` | integer or null | `141012089272` |  |
| `social_blade_grade` | string or null | `"A++"` |  |
| `views_gained_last_30_days` | integer or null | `2673882462` |  |
| `estimated_yearly_earnings_range` | string or null | `"$11M - $180M"` |  |
| `subscribers_gained_last_30_days` | integer or null | `3000000` |  |
| `estimated_monthly_earnings_range` | string or null | `"$668K - $11M"` |  |
| `estimated_yearly_earnings_low_usd` | number or null | `11000000` |  |
| `estimated_monthly_earnings_low_usd` | number or null | `668000` |  |
| `estimated_yearly_earnings_high_usd` | number or null | `180000000` |  |
| `estimated_monthly_earnings_high_usd` | number or null | `11000000` |  |

**Example input**

```json
{
  "channel": "MrBeast"
}
```

**Example output**

```json
{
  "handle": "@mrbeast",
  "daily_stats": [
    {
      "date": "2026-09-16",
      "views": 140112555446,
      "subscribers": 517000000
    },
    {
      "date": "2026-09-17",
      "views": 140182244380,
      "subscribers": 517000000
    },
    {
      "date": "2026-09-18",
      "views": 140247283042,
      "subscribers": 517000000
    }
  ],
  "subscribers": 518000000,
  "channel_name": "MrBeast",
  "channel_type": "Entertainment",
  "created_date": "2012-02-20",
  "subscriber_rank": 1,
  "number_of_videos": 1004,
  "earnings_currency": "USD",
  "social_blade_link": "https://socialblade.com/youtube/channel/UCX6OQ3DkcsbYNE6H8uQQuVA",
  "total_video_views": 141012089272,
  "social_blade_grade": "A++",
  "views_gained_last_30_days": 2673882462,
  "estimated_yearly_earnings_range": "$11M - $180M",
  "subscribers_gained_last_30_days": 3000000,
  "estimated_monthly_earnings_range": "$668K - $11M",
  "estimated_yearly_earnings_low_usd": 11000000,
  "estimated_monthly_earnings_low_usd": 668000,
  "estimated_yearly_earnings_high_usd": 180000000,
  "estimated_monthly_earnings_high_usd": 11000000
}
```

## Quick start

Replace `YOUR_API_KEY` with a Fous API key. To create one, open Developers at the bottom of Fous Studio, turn on Developer mode, then go to API keys (https://app.fous.com/keys). Change the values in `input` to run the same tool on new data.

```bash
curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 180 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@social-blade",
  "visibility": "public",
  "operation": "get_instagram_stats",
  "version": 1,
  "input": {
    "username": "@natgeo"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
import json
import urllib.error
import urllib.request

api_key = "YOUR_API_KEY"

body = json.loads("{\n  \"api\": \"@social-blade\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_instagram_stats\",\n  \"version\": 1,\n  \"input\": {\n    \"username\": \"@natgeo\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=180) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
const apiKey = "YOUR_API_KEY";

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(180_000),
  body: JSON.stringify({
  "api": "@social-blade",
  "visibility": "public",
  "operation": "get_instagram_stats",
  "version": 1,
  "input": {
    "username": "@natgeo"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

## Use from an AI assistant

Connect this tool to Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client as its own MCP server. Each method is a typed tool whose arguments are the method’s input.

- Server URL: `https://api.fous.com/mcp/tools/social-blade`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `get_instagram_stats`: Get instagram stats. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `get_tiktok_stats`: Get TikTok stats. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `get_youtube_channel_stats`: Get YouTube channel stats. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `fous_get_run`: the result of a run that was still going, by its `request_id`. Free.

Claude Code:

```bash
claude mcp add --scope user --transport http fous-social-blade https://api.fous.com/mcp/tools/social-blade --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"
```

To give the assistant every tool, connect `https://api.fous.com/mcp`: it finds one with `fous_search_tools` and runs it with `fous_run_tool`. Setup for other clients: https://fous.com/llms-full.txt.

## Use cases

- Compare YouTube channel growth and estimated earnings.
- Track daily changes in YouTube views and subscribers.
- Review Instagram follower counts and engagement.
- Monitor TikTok follower and like changes.
- Compare daily TikTok creator totals.

## FAQ

### Can I run it with my own inputs?

Yes. Change the inputs in Studio and press Run, or send new inputs from your code, or ask a connected AI assistant.

### Can I call this Social Blade tool as an API?

Yes. Send a POST request to /v1/query with your Fous API key and the inputs, and get JSON back.

### How much does it cost?

Each completed run costs 1 credit. Failed runs without a completed receipt are free; completed work can remain charged if delivery is interrupted. With pay as you go, a credit costs 1¢. Monthly plans cost less per credit.

### Do I need a Social Blade account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from socialblade.com when you run it. Some results are reused for up to 24 hours, and results that use your account or key are never reused. It was last verified on Sep 30, 2026.

### How many subscribers did a YouTube channel gain recently?

Get youtube channel stats returns subscriber growth over the last 30 days and daily subscriber figures for the last 14 days.

### What are a YouTube channel’s estimated earnings?

Get youtube channel stats returns estimated monthly and yearly earnings ranges.

### What is an Instagram account’s engagement rate?

Get instagram stats returns the engagement rate when shown, along with public account totals.

## Related

- [TikTok API](https://fous.com/tools/tiktok.md): TikTok returns public profiles and totals, recent pinned-first videos, and public video details and engagement; private content unavailable, and feeds may be incomplete or empty.
- [YouTube API](https://fous.com/tools/youtube.md): YouTube returns public video, caption, comment and channel details, company channels, and the latest weekly Top Songs chart; inferred dates and some counts may be approximate.
- [Instagram API](https://fous.com/tools/instagram.md): Instagram provides public photos, videos, profiles, exact headline counts, bio links, and profile pictures, plus recent public posts and reels; some profiles or posts require login, and view counts may be unavailable.
- [Bluesky API](https://fous.com/tools/bluesky.md): Bluesky provides public profile details and latest posts, plus searches of up to 100 matching public posts; search results may lag behind new posts.
- [Twitch API](https://fous.com/tools/twitch.md): Twitch returns channel profiles, live status, up to 10 broadcasts, top streams, viewer-ranked categories, up to 100 public videos/clips, and 1–30-day schedules; counts change.
- [Mastodon API](https://fous.com/tools/mastodon.md): Mastodon provides public profiles and recent public posts, including hashtag posts, but excludes private and unlisted posts and may limit visibility to accounts known to mastodon.social or a selected server.
- [Telegram API](https://fous.com/tools/telegram.md): Telegram provides public channel details and the latest posts visible in public previews, with media and view totals that may be rounded or approximate.
- [Kworb API](https://fous.com/tools/kworb.md): Kworb provides published Spotify and YouTube music charts and tracked artist streaming totals; chart dates may lag, and daily streams or some views may be unavailable.
- [All Marketing tools](https://fous.com/tools/category/marketing)
