The Problem
Brands spend thousands on TikTok influencer campaigns without verifying whether the engagement is real. Fake followers, engagement pods, and bot comments inflate metrics that look legitimate at a glance. A creator with 500K followers might have 90% bot accounts. The official TikTok API provides no fraud detection signals, and manual verification of comment quality and follower patterns does not scale. Brands discover the fraud only after the campaign runs and the ROI is zero.
The Scavio Solution
Scavio's TikTok endpoint surfaces engagement metrics, comment patterns, and follower signals that let you build fraud detection heuristics. You check engagement rates against benchmarks, look for comment repetition patterns, and compare video-to-video consistency. A legitimate creator has natural variance in engagement; a fraudulent one has suspiciously uniform metrics. The structured data feeds into scoring models that flag high-risk creators before you sign a contract.
Before
Before Scavio, brands relied on self-reported influencer metrics and discovered fraud only after paying for campaigns that produced zero ROI.
After
After Scavio, a pre-campaign vetting script scores creators on engagement authenticity. Brands catch inflated metrics before signing contracts and redirect budget to genuine creators.
Who It Is For
Brand marketers and influencer campaign managers who need to vet TikTok creators before signing contracts. Anyone who has spent budget on influencers with fake engagement and wants a data-driven vetting process.
Key Benefits
- Engagement metrics with view-to-like ratios for fraud detection
- Comment pattern analysis reveals bot activity and engagement pods
- Video-to-video consistency scoring flags artificially inflated accounts
- Pre-campaign vetting prevents wasted influencer budget
- Structured data feeds into custom scoring models
Python Example
import requests
import statistics
API_KEY = "your_scavio_api_key"
BASE_URL = "https://api.scavio.dev/api/v1/tiktok"
def vet_creator(username: str) -> dict:
res = requests.post(
f"{BASE_URL}/user",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"username": username},
timeout=15,
)
res.raise_for_status()
data = res.json()
videos = data.get("videos", [])
if not videos:
return {"username": username, "risk": "no_data"}
engagement_rates = []
for v in videos:
views = v.get("views", 0)
likes = v.get("likes", 0)
if views > 0:
engagement_rates.append(likes / views)
if not engagement_rates:
return {"username": username, "risk": "no_engagement_data"}
avg_er = statistics.mean(engagement_rates)
er_variance = statistics.variance(engagement_rates) if len(engagement_rates) > 1 else 0
# Fraud signals
risk_flags = []
if avg_er > 0.15: # Suspiciously high engagement
risk_flags.append("engagement_too_high")
if er_variance < 0.001 and len(engagement_rates) > 5: # Too uniform
risk_flags.append("suspiciously_uniform")
if data.get("followers", 0) > 100000 and avg_er < 0.01:
risk_flags.append("high_followers_low_engagement")
return {
"username": username,
"followers": data.get("followers", 0),
"avg_engagement_rate": round(avg_er, 4),
"engagement_variance": round(er_variance, 6),
"videos_analyzed": len(engagement_rates),
"risk_flags": risk_flags,
"risk_level": "high" if len(risk_flags) >= 2 else "medium" if risk_flags else "low",
}
result = vet_creator("example_influencer")
print(f"{result['username']}: {result['risk_level']} risk")
for flag in result.get("risk_flags", []):
print(f" - {flag}")JavaScript Example
const API_KEY = "your_scavio_api_key";
const BASE_URL = "https://api.scavio.dev/api/v1/tiktok";
async function vetCreator(username) {
const res = await fetch(`${BASE_URL}/user`, {
method: "POST",
headers: { Authorization: `Bearer ${API_KEY}`, "content-type": "application/json" },
body: JSON.stringify({ username }),
});
if (!res.ok) throw new Error(`scavio ${res.status}`);
const data = await res.json();
const videos = data.videos ?? [];
if (!videos.length) return { username, risk: "no_data" };
const engagementRates = videos
.filter((v) => (v.views ?? 0) > 0)
.map((v) => (v.likes ?? 0) / v.views);
if (!engagementRates.length) return { username, risk: "no_engagement_data" };
const avgEr = engagementRates.reduce((a, b) => a + b, 0) / engagementRates.length;
const variance = engagementRates.reduce((sum, er) => sum + (er - avgEr) ** 2, 0) / engagementRates.length;
const riskFlags = [];
if (avgEr > 0.15) riskFlags.push("engagement_too_high");
if (variance < 0.001 && engagementRates.length > 5) riskFlags.push("suspiciously_uniform");
if ((data.followers ?? 0) > 100000 && avgEr < 0.01) riskFlags.push("high_followers_low_engagement");
return {
username,
followers: data.followers ?? 0,
avgEngagementRate: Math.round(avgEr * 10000) / 10000,
engagementVariance: Math.round(variance * 1000000) / 1000000,
videosAnalyzed: engagementRates.length,
riskFlags,
riskLevel: riskFlags.length >= 2 ? "high" : riskFlags.length ? "medium" : "low",
};
}
const result = await vetCreator("example_influencer");
console.log(`${result.username}: ${result.riskLevel} risk`);
for (const flag of result.riskFlags ?? []) console.log(` - ${flag}`);Platforms Used
TikTok
Trending video, creator, and product discovery