TikTok Creator Discovery for Agencies via API
Discover TikTok creators by niche using user search, hashtag analysis, and follower graph exploration. Build influencer shortlists without manual browsing.
Agencies can discover TikTok creators by niche keyword via API at $0.005 per request, then filter by follower count, engagement rate, and content frequency. No TikTok Creator Marketplace access required, no manual scrolling through search results.
The Agency Discovery Problem
Finding creators for client campaigns means searching TikTok by niche, evaluating dozens of profiles, and building shortlists. TikTok Creator Marketplace is invite-only for many brands and only shows creators who opted in. The actual creator pool is much larger. API-based discovery finds creators the marketplace misses.
Batch Creator Discovery
import requests, os
API_KEY = os.environ["SCAVIO_API_KEY"]
BASE = "https://api.scavio.dev"
HEADERS = {"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"}
def discover_creators(keywords, min_followers=5000, max_followers=500000):
candidates = []
seen = set()
for kw in keywords:
cursor = "0"
for _ in range(3):
resp = requests.post(f"{BASE}/api/v1/tiktok/search/users",
headers=HEADERS,
json={"keyword": kw, "cursor": cursor, "count": 30})
data = resp.json()["data"]
for u in data.get("user_list", []):
info = u["user_info"]
uid = info["unique_id"]
if uid in seen:
continue
seen.add(uid)
fc = info.get("follower_count", 0)
if min_followers <= fc <= max_followers:
candidates.append({
"username": uid,
"nickname": info.get("nickname", ""),
"followers": fc,
"sec_uid": info["sec_uid"],
"bio": info.get("signature", ""),
"source_keyword": kw,
})
if not data.get("has_more"):
break
cursor = str(data.get("cursor", "0"))
return sorted(candidates, key=lambda x: x["followers"], reverse=True)
creators = discover_creators(
["fitness coach", "home workout", "gym motivation"],
min_followers=10000, max_followers=200000)
print(f"Found {len(creators)} creators in range")
for c in creators[:10]:
print(f" @{c['username']} | {c['followers']:,} | {c['source_keyword']}")Enriching with Engagement Data
def enrich_creator(creator):
resp = requests.post(f"{BASE}/api/v1/tiktok/user/posts",
headers=HEADERS,
json={"sec_user_id": creator["sec_uid"],
"count": 15, "sort_type": "0"})
posts = resp.json()["data"].get("aweme_list", [])
if not posts:
return {**creator, "avg_views": 0, "engagement_rate": 0,
"posts_per_week": 0}
views = [p["statistics"]["play_count"] for p in posts]
engagements = [p["statistics"]["digg_count"] +
p["statistics"]["comment_count"] +
p["statistics"]["share_count"] for p in posts]
avg_eng = sum(engagements) / len(engagements)
er = avg_eng / creator["followers"] * 100 if creator["followers"] > 0 else 0
timestamps = sorted(p["create_time"] for p in posts)
days = (timestamps[-1] - timestamps[0]) / 86400 if len(timestamps) > 1 else 7
ppw = len(posts) / (days / 7) if days > 0 else 0
return {**creator,
"avg_views": int(sum(views) / len(views)),
"engagement_rate": round(er, 2),
"posts_per_week": round(ppw, 1)}
# Enrich top candidates (2 credits each: profile already fetched + posts)
enriched = [enrich_creator(c) for c in creators[:20]]
# Filter for good engagement
qualified = [c for c in enriched if c["engagement_rate"] > 3.0
and c["posts_per_week"] >= 2]
print(f"{len(qualified)} creators with >3% ER and 2+ posts/week")Building a Client Shortlist
import csv
def export_shortlist(creators, filename="creator_shortlist.csv"):
with open(filename, "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=[
"username", "followers", "avg_views",
"engagement_rate", "posts_per_week", "bio"])
writer.writeheader()
for c in creators:
writer.writerow({
"username": f"@{c['username']}",
"followers": c["followers"],
"avg_views": c.get("avg_views", ""),
"engagement_rate": f"{c.get('engagement_rate', 0)}%",
"posts_per_week": c.get("posts_per_week", ""),
"bio": c.get("bio", "")[:100],
})
print(f"Exported {len(creators)} creators to {filename}")
export_shortlist(qualified)Cost for Agencies
Discovering and vetting 100 creators for one campaign costs roughly $2.50 (search pages + enrichment calls). Running discovery across 5 client niches monthly costs under $15. Compare this to influencer platforms like Upfluence ($478/month) or Grin ($2,500/month minimum). The tradeoff: API gives you raw data, not a managed platform with outreach tools built in.