🔍 TikTok Shadow Ban Checker | $10/1K | Instant Check avatar

🔍 TikTok Shadow Ban Checker | $10/1K | Instant Check

Pricing

from $10.00 / 1,000 results

Go to Apify Store
🔍 TikTok Shadow Ban Checker | $10/1K | Instant Check

🔍 TikTok Shadow Ban Checker | $10/1K | Instant Check

Check if TikTok videos are shadowbanned by analyzing the indexEnabled property. Supports batch URL checking with automatic proxy rotation.

Pricing

from $10.00 / 1,000 results

Rating

0.0

(0)

Developer

Apivault Labs

Apivault Labs

Maintained by Community

Actor stats

0

Bookmarked

10

Total users

4

Monthly active users

4 hours ago

Last modified

Share

TikTok Shadow Ban Checker | Multi-Signal Detection, Health Score, Recommendations

Detect TikTok shadow bans with 15+ signals — not just indexEnabled. Returns a composite health score (0-100), engagement rate, viral potential, a human-readable list of every active restriction and a list of actionable, plain-English recommendations for each video.

Apify Actor Python SDK Pricing


✨ What's new in v1.2 (May 2026)

🧠 Actionable recommendations on every video — instead of a wall of boolean flags, every result now includes a recommendations[] array with specific, plain-English advice based on the detected signals:

🟠 Restricted. Several signals flagged — consider re-uploading. 💬 Comments are disabled. Re-enable them in the … menu → Privacy settings — engagement loops drive FYP eligibility. 📉 Engagement rate 0.4% is well below average for 50,000 views — possible soft suppression. Hook the first 3 seconds harder...

📋 Paste-friendly URL textarea — new urlText field accepts a list of URLs separated by newlines, commas or any whitespace. Just copy a column out of your spreadsheet, paste, hit Run. Merged with the regular urls array, duplicates auto-removed.

🔍 Multi-signal detection — TikTok has been removing indexEnabled from public HTML throughout 2026. The actor aggregates 15+ signals (takeDown, secret, privateItem, forFriend, isReviewing, warnInfo, divertedToPrivate, plus 5 soft restrictions like duet/stitch/comment/download/share disabled). The verdict survives even when TikTok hides the legacy flag.

📊 Composite metricsvideoHealthScore (0-100), videoHealthStatus (healthyshadowbanned), engagementRate, viralPotentialScore.

🛡️ Anti-WAF resilience — multi-strategy fetcher (mobile UA → m.tiktok.com → desktop → Googlebot → embed → oEmbed), proxyCountry to pin residential proxy, customProxyUrls to bring your own.

🐍 Python SDK — drop-in client with check_one() and check_urls() methods: tiktok-shadow-ban-checker-python

Pricing unchanged: $0.01 per video. Full CHANGELOG.

Removed in v1.2 — account mode. TikTok stopped shipping user video lists in public HTML in 2026, so the mode could no longer return reliable results. Pass video URLs directly instead — the rest of the pipeline (15+ signals, health score, recommendations) is unchanged.


🚀 30-second example

Input — paste any number of URLs:

{
"urls": [
"https://www.tiktok.com/@username/video/1234567890",
"https://vm.tiktok.com/shortlink"
],
"includeRecommendations": true
}

Or use the paste-friendly textarea (one URL per line):

{
"urlText": "https://www.tiktok.com/@a/video/1\nhttps://www.tiktok.com/@b/video/2"
}

Output (per video — abridged):

{
"shadowbanned": false,
"videoHealthScore": 95,
"videoHealthStatus": "healthy",
"engagementRate": 4.23,
"viralPotentialScore": 72,
"banReasonHints": [],
"restrictionCount": 0,
"recommendations": [
"✅ Video looks healthy. No shadow-ban action needed.",
"🔥 Engagement rate 4.23% is excellent (industry avg 3-6%). Keep this format/topic in rotation — it converts."
]
}

Plus one batch-summary record:

{
"dataType": "batch_summary",
"totalChecked": 10,
"shadowbannedCount": 1,
"shadowbannedPct": 10.0,
"avgHealthScore": 82.4,
"avgEngagementRate": 3.21,
"recommendation": "\u26a0\ufe0f Some restrictions detected \u2014 monitor closely"
}

🔍 What it detects

SignalDescription
shadowbannedMain ban flag — video hidden from FYP and search
indexEnabledTikTok's internal indexing flag
forYouEligibleEligible for For You Page
searchVisibleAppears in search results
divertedToPrivateTikTok forced the video to private (strong ban signal)
duetDisabledDuet feature disabled
stitchDisabledStitch feature disabled
commentDisabledComments disabled
downloadDisabledDownloads disabled
privateAccountAccount is private
banReasonHints[]Human-readable list of all detected restrictions
restrictionCountTotal number of active restrictions

📊 Computed metrics

MetricDescription
videoHealthScore0-100 composite signal from all ban indicators + engagement
videoHealthStatushealthy / slightly_restricted / restricted / heavily_restricted / shadowbanned
engagementRate(likes + comments + shares) / views × 100 (%)
viralPotentialScore0-100 based on views velocity + engagement

📦 Two modes

Mode 1: Video URLs (default)

{
"mode": "urls",
"urls": [
"https://www.tiktok.com/@username/video/1234567890",
"https://vm.tiktok.com/shortlink"
]
}

Mode 2: Account check ⭐

Check the last N videos from any TikTok account:

{
"mode": "account",
"username": "tiktok",
"accountLimit": 10
}

📖 Sample output

{
"url": "https://www.tiktok.com/@username/video/1234567890",
"videoId": "1234567890",
"success": true,
"shadowbanned": false,
"indexEnabled": true,
"forYouEligible": true,
"searchVisible": true,
"divertedToPrivate": false,
"duetDisabled": false,
"stitchDisabled": false,
"commentDisabled": false,
"downloadDisabled": false,
"privateAccount": false,
"banReasonHints": [],
"restrictionCount": 0,
"videoHealthScore": 95,
"videoHealthStatus": "healthy",
"engagementRate": 4.23,
"viralPotentialScore": 72,
"description": "Video description #hashtag",
"locationCreated": "US",
"createDate": "2024-03-15",
"createTime": 1710460800,
"duration": 30,
"author": {
"nickname": "Display Name",
"uniqueId": "username",
"verified": false,
"followerCount": 12500,
"followingCount": 340,
"heartCount": 89000,
"videoCount": 156
},
"stats": {
"views": 45230,
"likes": 1823,
"comments": 94,
"shares": 231,
"saves": 567
},
"music": {
"title": "original sound",
"authorName": "username",
"original": true
},
"hashtags": ["hashtag1", "hashtag2"]
}

📊 Batch summary (when includeSummary: true)

When checking multiple videos, an extra summary record is added:

{
"dataType": "batch_summary",
"totalChecked": 10,
"shadowbannedCount": 2,
"shadowbannedPct": 20.0,
"healthyCount": 7,
"restrictedCount": 3,
"avgHealthScore": 74.5,
"avgEngagementRate": 3.21,
"mostCommonRestrictions": [
["indexEnabled=false (main shadow ban signal)", 2],
["comments disabled", 1]
],
"recommendation": "⚠️ Some restrictions detected — monitor closely"
}

💼 Use cases

  • Content creators — monitor your own videos for shadow ban status
  • Agencies — bulk check client videos and generate health reports
  • Account audits — check all recent videos from an account at once
  • Competitor research — check if competitor videos are restricted
  • Automation — integrate into content workflows via API

💰 Pricing

$0.01 per video check ($10 per 1,000)

🔧 How it works

  1. Fetches TikTok video page HTML via residential proxy (or your own custom proxy)
  2. Tries multiple strategies in sequence: embed/v2 → embed → desktop UA → mobile UA → m.tiktok.com → Googlebot
  3. Extracts video data from embedded JSON: webapp.video-detail.itemStruct, webapp.reflow.video.detail, or SIGI_STATE
  4. Analyses all available restriction signals
  5. Computes health score, engagement rate, viral potential
  6. On total HTML failure, falls back to oEmbed metadata so you still get title, author and thumbnail

🌐 Custom proxy support

By default the actor uses Apify Residential proxies pinned to US. If you have your own proxies, supply them via customProxyUrls in any of these formats:

  • host:port:user:pass (e.g. 74.81.81.81:823:user:pass)
  • user:pass@host:port
  • http://user:pass@host:port (full URL)

Multiple URLs rotate round-robin. Custom proxies override Apify proxy entirely.

❓ FAQ

Q: What does videoHealthScore mean? A: 0-100 composite score. 80+ = healthy, 60-79 = slightly restricted, 40-59 = restricted, 20-39 = heavily restricted, <20 = shadowbanned.

Q: What is engagementRate? A: (likes + comments + shares) / views × 100. Industry benchmark: 3-6% is good. Unusually low engagement (<0.5%) can indicate suppression.

Q: What is divertedToPrivate? A: TikTok sometimes forces a video to private without notifying the creator. This is a strong shadow ban signal.

Q: Does account mode work on private accounts? A: No — private accounts require login. Account mode only works on public profiles.

Q: How accurate is the shadow ban detection? A: indexEnabled=false is the most reliable signal — it's TikTok's own internal flag. Other signals (forYou, search) are less consistently exposed in the HTML.