StoriesFly logo
Analytics API

Instagram Shadow Ban Check

Analyze any public Instagram account for shadow ban signals. Returns a score from 0 (clean) to 100 (definitely shadowbanned), a verdict, 7 detailed signals with individual status, and actionable recommendations.

GET/api/analytics/shadowban
Auth: X-Api-Key header or Bearer JWTRate limits: Counted as aiAnalyses. Free: 0/day, Basic: 10/day, Pro: unlimited, Enterprise: unlimited.

Parameters

NameInTypeRequiredDescription
usernamequerystringYesInstagram username to analyze

Response

json
{
  "username": "example_account",
  "score": 35,
  "verdict": "possibly_limited",
  "signals": [
    {
      "name": "Engagement Rate",
      "status": "warning",
      "description": "Below average for account size",
      "weight": 20
    },
    {
      "name": "Hashtag Effectiveness",
      "status": "ok",
      "description": "Hashtags appear in search",
      "weight": 15
    },
    {
      "name": "Follower Ratio",
      "status": "ok",
      "description": "Healthy follower-to-following ratio",
      "weight": 10
    },
    {
      "name": "Engagement Trend",
      "status": "warning",
      "description": "Declining engagement over 30 days",
      "weight": 20
    },
    {
      "name": "Comment Quality",
      "status": "ok",
      "description": "Natural comment patterns",
      "weight": 10
    },
    {
      "name": "Growth Pattern",
      "status": "ok",
      "description": "Organic growth indicators",
      "weight": 15
    },
    {
      "name": "Content Reach",
      "status": "critical",
      "description": "Posts not appearing in explore",
      "weight": 10
    }
  ],
  "checkedAt": "2026-03-04T12:00:00Z",
  "recommendations": [
    "Avoid banned hashtags",
    "Post consistently 3-5 times per week",
    "Diversify content types"
  ]
}

Code Examples

cURL
curl "https://storiesfly.com/api/analytics/shadowban?username=example_account" \
  -H "X-Api-Key: sf_live_your_key_here"
JavaScript
const res = await fetch(
  "https://storiesfly.com/api/analytics/shadowban?username=example_account",
  { headers: { "X-Api-Key": "sf_live_your_key_here" } }
);
const result = await res.json();
console.log(`Score: ${result.score}/100 — ${result.verdict}`);
result.signals.forEach(s => console.log(`  ${s.name}: ${s.status}`));
Python
import requests

response = requests.get(
    "https://storiesfly.com/api/analytics/shadowban",
    params={"username": "example_account"},
    headers={"X-Api-Key": "sf_live_your_key_here"}
)
result = response.json()
print(f"Score: {result['score']}/100 — {result['verdict']}")
for signal in result["signals"]:
    print(f"  {signal['name']}: {signal['status']}")

FAQ

What signals does the shadow ban check analyze?
Seven signals: engagement rate, hashtag effectiveness, follower ratio, engagement trends, comment quality, growth patterns, and content reach. Each signal is weighted and contributes to the overall score.
How accurate is the shadow ban detection?
The check analyzes publicly available signals and provides an estimated score. Instagram does not officially confirm shadow bans, so the result is an informed assessment rather than a definitive answer.
How often should I check for shadow bans?
Check when you notice a sudden drop in engagement or reach. Routine checks every 1-2 weeks are sufficient for monitoring account health.

Related Endpoints

Ready to integrate?

Create a free API key and start making requests in minutes.

Last updated: March 4, 2026