A follower count of 100k that gets almost nobody into a live stream usually means a lot of those followers are inactive or bought, and you can estimate how many by sampling the follower graph. This walks through pulling a sample of your own followers with the TikTok API, scoring each on a few authenticity signals, and getting a rough percentage of low-quality accounts. It is the seller's version of the vetting brands run on creators before a deal. Two honest caveats. This is a sampled estimate, not a certified audit; TikTok does not expose every follower, and a low score is a signal, not proof. And no single signal is decisive, an empty profile can be a lurker. Score on several signals together. Each TikTok endpoint is 1 credit on Scavio ($0.005).
Prerequisites
- A Scavio API key (TikTok endpoints are 1 credit each)
- Python 3.10+ with requests
- The username of the account you want to audit
Walkthrough
Step 1: Resolve the username to a sec_uid
Every follower and posts call keys off sec_uid, not the username. Pull the profile first; it also gives you the follower_count you will sample against.
import os, requests
BASE = "https://api.scavio.dev"
H = {"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}", "Content-Type": "application/json"}
# step 1: username -> sec_uid
prof = requests.post(f"{BASE}/api/v1/tiktok/profile", headers=H, json={"username": "yourshop"}).json()
user = prof["data"]["user"]
sec_uid = user["sec_uid"]
print(user["follower_count"], user["heart_count"], user["video_count"])Step 2: Page through a sample of followers
The followers endpoint uses page_token plus min_time paging: both values come back in the response and both must be passed together on the next call. Pull a few pages for a representative sample rather than the whole graph.
followers, page_token, min_time = [], None, None
for _ in range(5): # 5 pages is a reasonable sample
body = {"sec_user_id": sec_uid, "count": 50}
if page_token: body["page_token"] = page_token
if min_time: body["min_time"] = min_time
res = requests.post(f"{BASE}/api/v1/tiktok/user/followers", headers=H, json=body).json()
data = res["data"]
followers += data["followers"]
if not data.get("has_more"): break
page_token, min_time = data["next_page_token"], data["min_time"]Step 3: Score each sampled follower
Flag the cheap signals of a throwaway or bought account: no avatar, empty bio, zero posts, and a following count wildly higher than followers. None is decisive alone; two or more together is a strong low-quality signal.
def low_quality(u):
signals = 0
if not u.get("avatar"): signals += 1
if not u.get("signature"): signals += 1 # empty bio
if u.get("video_count", 0) == 0: signals += 1
if u.get("following_count", 0) > 20 * max(u.get("follower_count", 0), 1): signals += 1
return signals >= 2
flagged = [u for u in followers if low_quality(u)]
pct = round(100 * len(flagged) / max(len(followers), 1), 1)
print(f"Sampled {len(followers)} followers; {pct}% look inactive or fake")Python Example
import os, requests
BASE = "https://api.scavio.dev"
H = {"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}", "Content-Type": "application/json"}
# step 1: username -> sec_uid
prof = requests.post(f"{BASE}/api/v1/tiktok/profile", headers=H, json={"username": "yourshop"}).json()
user = prof["data"]["user"]
sec_uid = user["sec_uid"]
print(user["follower_count"], user["heart_count"], user["video_count"])JavaScript Example
const H = { Authorization: `Bearer ${process.env.SCAVIO_API_KEY}`, "Content-Type": "application/json" };
const base = "https://api.scavio.dev";
const prof = await (await fetch(`${base}/api/v1/tiktok/profile`, {
method: "POST", headers: H, body: JSON.stringify({ username: "yourshop" }),
})).json();
const secUid = prof.data.user.sec_uid;
// then page /api/v1/tiktok/user/followers with next_page_token + min_timeExpected Output
The profile call returns follower_count and sec_uid. Each followers page returns up to 50 follower objects plus next_page_token and min_time. The scoring step prints an estimated percentage of low-quality accounts across your sample, a directional read on why reach and live viewership lag your follower count.