Social Blade API: Get Instagram account stats
Looks up public Instagram account totals, engagement and grade on Social Blade by handle or profile link. Daily history and 30-day follower change need a Social Blade sign-in, so they are not returned.
Unofficial. Not affiliated with or endorsed by Social Blade.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Username, required
username Instagram handle or profile link, for example @natgeo or https://www.instagram.com/natgeo/.
https://www.instagram.com/cristiano/
Input as JSON
{ "username": "https://www.instagram.com/cristiano/" }Output
{ "grade": "A+", "posts": 4146, "username": "cristiano", "followers": 679836142, "following": 638, "daily_stats": [], "display_name": "Cristiano Ronaldo", "social_blade_link": "https://socialblade.com/instagram/user/cristiano" , "average_likes_per_post": 7252948.75, "engagement_rate_percent": 1.09, "average_comments_per_post": 142851.5625, "follower_change_last_30_days": null}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"socialblade.com/get_instagram_stats","input":{"username":"https://www.instagram.com/cristiano/"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "socialblade.com/get_instagram_stats" , "input": { "username": "https://www.instagram.com/cristiano/" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "socialblade.com/get_instagram_stats" , "input": { "username": "https://www.instagram.com/cristiano/" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run socialblade.com/get_instagram_stats# with {"username":"https://www.instagram.com/cristiano/"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "username" ], "properties": { "username": { "type": "string", "description": "Instagram handle or profile link, for example @natgeo or https://www.instagram.com/natgeo/." } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "username", "display_name", "grade", "followers", "following", "posts", "engagement_rate_percent", "average_likes_per_post", "average_comments_per_post", "follower_change_last_30_days", "daily_stats", "social_blade_link" ], "properties": { "grade": { "type": [ "string", "null" ], "description": "Social Blade grade, when shown." }, "posts": { "type": [ "integer", "null" ], "description": "Current posts (media) count." }, "username": { "type": "string", "description": "Instagram handle without @." }, "followers": { "type": [ "integer", "null" ], "description": "Current followers." }, "following": { "type": [ "integer", "null" ], "description": "Current following count." }, "daily_stats": { "type": "array", "items": { "type": "object", "required": [ "date", "followers", "following", "posts" ], "properties": { "date": { "type": "string", "format": "date" }, "posts": { "type": [ "integer", "null" ] }, "followers": { "type": [ "integer", "null" ] }, "following": { "type": [ "integer", "null" ] } }, "additionalProperties": false }, "description": "Up to 14 daily records; empty when public history is restricted." }, "display_name": { "type": [ "string", "null" ], "description": "Account display name." }, "social_blade_link": { "type": "string", "description": "Social Blade account page link." }, "average_likes_per_post": { "type": [ "number", "null" ], "description": "Average likes per post, when shown." }, "engagement_rate_percent": { "type": [ "number", "null" ], "description": "Engagement rate in percent." }, "average_comments_per_post": { "type": [ "number", "null" ], "description": "Average comments per post, when shown." }, "follower_change_last_30_days": { "type": [ "integer", "null" ], "description": "Follower change over the last 30 days; null when public history is restricted." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
socialblade.com/get_instagram_stats- Returns
- username, display name, grade, followers, following, posts, engagement and average likes/comments
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method socialblade.com/get_instagram_stats with the inputs above.
Ask your agent
- What's the current follower count and engagement rate for the Instagram account @natgeo?
- Can you pull the grade and average likes per post for https://www.instagram.com/nasa/?
- How many followers and posts does the public Instagram profile @bbcnews have right now?
- Check the engagement and average comments on the Instagram handle @chefsteps on Social Blade.
- Give me the display name, following count, and overall grade for the Instagram account @garyvee.
See more
All Social Blade methodsGets 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, from a TikTok handle or a TikTok or Social Blade profile link. Counts reflect Social Blade's recorded and sometimes rounded figures.
socialblade.com/get_tiktok_statsLooks up a YouTube channel on Social Blade by name, @handle, YouTube link or Social Blade link and returns its profile, 30-day growth, earnings estimates and the last 14 daily statistics.
socialblade.com/get_youtube_channel_statsGets an Instagram account's follower count plus its posting and engagement over the last 30 days: posts published, average views of its videos and reels, and average likes and comments per post, from a username or profile link.
instagram.com/get_engagement_stats_2Gets an Instagram account's public profile from its username, @name or profile link: name, bio, exact follower, following and post counts, verified and private flags, first bio link, profile picture and account ID.
instagram.com/get_profileLooks up a public Bluesky profile by handle or profile link, including bio, audience counts and join date. A bare name first checks its .bsky.social handle, then the top relevant people-search result.
bsky.app/get_profileGets a TikTok creator's public profile and totals (followers, following, likes, videos) from a username, @handle or profile link. Profiles not visible to public visitors cannot be returned.
tiktok.com/get_profileLists the latest publicly embeddable posts and reels from an Instagram account, newest first. Without login Instagram may show fewer posts than requested. View counts that are not available are null.
instagram.com/list_recent_postsGets a public Mastodon profile by handle or profile link, with its bio, counts, dates and profile fields. Major servers are read directly. Other servers are looked up through mastodon.social, and their home-server account ID is not available.
mastodon.social/get_profile