The Problem
Manual influencer vetting on TikTok requires checking each creator's profile, recent posts, and engagement rate individually. Vetting 50 creators takes a full workday and the data goes stale by the time decisions are made.
The Scavio Solution
A two-step API workflow resolves username to sec_uid, fetches the last 30 posts, calculates engagement rate, and scores the creator — all in under 10 seconds per creator. Process 50 creators in under 10 minutes.
Before
Marketing coordinator opens TikTok for each of 50 creators, manually counts recent posts, estimates engagement from likes and views, records in a spreadsheet. Process takes 6-8 hours. Data is already a day old.
After
Python script reads a CSV of usernames, calls the Scavio TikTok API for each, computes engagement rate and tier (A/B/C/D), and outputs a ranked CSV in under 10 minutes. Coordinator reviews the pre-ranked shortlist.
Who It Is For
Influencer marketing managers and agencies who vet TikTok creators at scale and need objective engagement data without manual TikTok browsing.
Key Benefits
- 50 creators vetted in under 10 minutes versus 6-8 hours manually
- Objective engagement rate scoring eliminates bias
- sec_uid-based flow unlocks posts, followers, and followings data
- Outputs a ranked CSV ready for decision-making
Python Example
import requests
API_KEY = "your-scavio-api-key"
def vet_creator(username: str) -> dict:
# Step 1: Get sec_uid
r1 = requests.post("https://api.scavio.dev/api/v1/tiktok/user/profile",
json={"username": username},
headers={"Authorization": f"Bearer {API_KEY}"}, timeout=15)
r1.raise_for_status()
profile = r1.json()
sec_uid = profile.get("sec_uid")
if not sec_uid:
return {"username": username, "error": "not found"}
# Step 2: Get posts
r2 = requests.post("https://api.scavio.dev/api/v1/tiktok/user/posts",
json={"sec_uid": sec_uid, "count": 30, "max_cursor": 0},
headers={"Authorization": f"Bearer {API_KEY}"}, timeout=20)
r2.raise_for_status()
posts = r2.json().get("videos", [])
rates = [(p.get("stats",{}).get("diggCount",0) + p.get("stats",{}).get("commentCount",0)) / p.get("stats",{}).get("playCount",1)
for p in posts if p.get("stats",{}).get("playCount",0) > 0]
er = round(sum(rates) / len(rates) * 100, 2) if rates else 0
tier = "A" if er >= 5 else "B" if er >= 2 else "C" if er >= 0.5 else "D"
return {"username": username, "followers": profile.get("follower_count",0), "er_pct": er, "tier": tier}
print(vet_creator("creator_username"))JavaScript Example
const API_KEY = 'your-scavio-api-key';
async function vetCreator(username) {
const p = await (await fetch('https://api.scavio.dev/api/v1/tiktok/user/profile', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${API_KEY}` },
body: JSON.stringify({ username })
})).json();
if (!p.sec_uid) return { username, error: 'not found' };
const d = await (await fetch('https://api.scavio.dev/api/v1/tiktok/user/posts', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${API_KEY}` },
body: JSON.stringify({ sec_uid: p.sec_uid, count: 30, max_cursor: 0 })
})).json();
const posts = d.videos ?? [];
const rates = posts.filter(v => v.stats?.playCount).map(v => (v.stats.diggCount + v.stats.commentCount) / v.stats.playCount);
const er = rates.length ? rates.reduce((a, b) => a + b) / rates.length * 100 : 0;
return { username, followers: p.follower_count, er_pct: er.toFixed(2), tier: er >= 5 ? 'A' : er >= 2 ? 'B' : 'C' };
}Platforms Used
TikTok
Trending video, creator, and product discovery