🔍 TikTok Shadow Ban Checker | $10/1K | Instant Check
Pricing
from $10.00 / 1,000 results
🔍 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
Maintained by CommunityActor stats
0
Bookmarked
10
Total users
4
Monthly active users
4 hours ago
Last modified
Categories
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.
✨ 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 metrics — videoHealthScore (0-100), videoHealthStatus (healthy → shadowbanned), 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 —
accountmode. 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
| Signal | Description |
|---|---|
shadowbanned | Main ban flag — video hidden from FYP and search |
indexEnabled | TikTok's internal indexing flag |
forYouEligible | Eligible for For You Page |
searchVisible | Appears in search results |
divertedToPrivate | TikTok forced the video to private (strong ban signal) |
duetDisabled | Duet feature disabled |
stitchDisabled | Stitch feature disabled |
commentDisabled | Comments disabled |
downloadDisabled | Downloads disabled |
privateAccount | Account is private |
banReasonHints[] | Human-readable list of all detected restrictions |
restrictionCount | Total number of active restrictions |
📊 Computed metrics
| Metric | Description |
|---|---|
videoHealthScore | 0-100 composite signal from all ban indicators + engagement |
videoHealthStatus | healthy / slightly_restricted / restricted / heavily_restricted / shadowbanned |
engagementRate | (likes + comments + shares) / views × 100 (%) |
viralPotentialScore | 0-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
- Fetches TikTok video page HTML via residential proxy (or your own custom proxy)
- Tries multiple strategies in sequence: embed/v2 → embed → desktop UA → mobile UA → m.tiktok.com → Googlebot
- Extracts video data from embedded JSON:
webapp.video-detail.itemStruct,webapp.reflow.video.detail, orSIGI_STATE - Analyses all available restriction signals
- Computes health score, engagement rate, viral potential
- 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:porthttp://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.
🔗 Related Actors
- TikTok Profile Scraper — full profile data
- TikTok Shop Scraper — product data
