The Problem
TikTok's native analytics only cover your own account. You cannot see competitor follower growth, engagement rates, or content performance through the platform. Agencies managing multiple brands need analytics across all competitors and industry creators, not just owned accounts. Third-party social analytics tools charge $100-500/month and still have gaps in TikTok data coverage.
The Scavio Solution
Build a custom analytics layer using Scavio's TikTok API endpoints to collect public data on any account. Profile endpoint gives follower counts, bio, and verification status. User/posts gives recent video performance. Video/comments gives audience sentiment. Search/videos finds competitor content by topic. Combine these into a dashboard that tracks any public TikTok account.
Before
Before the API layer, competitive TikTok analytics relied on expensive third-party tools ($200-500/month) that still had gaps. Agencies manually checked competitor profiles weekly and screenshotted metrics for client reports.
After
After building the API layer, the agency tracks 50 competitor accounts across 8 clients for under $30/month in API costs. Daily automated reports show follower growth trends, content performance, and engagement rate comparisons.
Who It Is For
Social media agencies needing competitive TikTok analytics across multiple client competitors. Brand managers who want to benchmark their TikTok performance against industry peers without expensive third-party subscriptions.
Key Benefits
- Track any public TikTok account, not just your own
- Daily follower count, engagement rate, and posting frequency tracking
- Content performance analysis across competitor accounts
- Comment sentiment extraction for brand perception monitoring
- 50 accounts tracked daily for under $30/month in API costs
Python Example
import requests
from datetime import datetime
API_KEY = "your_scavio_api_key"
TIKTOK_URL = "https://api.scavio.dev/api/v1/tiktok"
def get_account_analytics(username: str) -> dict:
# Get profile data
profile_res = requests.post(
f"{TIKTOK_URL}/profile",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"username": username},
timeout=15,
)
profile_res.raise_for_status()
profile = profile_res.json()
# Get recent posts
posts_res = requests.post(
f"{TIKTOK_URL}/user/posts",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"username": username},
timeout=15,
)
posts_res.raise_for_status()
videos = posts_res.json().get("videos", [])
# Calculate engagement metrics
total_views = sum(v.get("play_count", 0) for v in videos)
total_likes = sum(v.get("digg_count", 0) for v in videos)
avg_engagement = (total_likes / total_views * 100) if total_views > 0 else 0
return {
"username": username,
"followers": profile.get("followers", 0),
"following": profile.get("following", 0),
"total_likes": profile.get("total_likes", 0),
"recent_videos": len(videos),
"recent_total_views": total_views,
"avg_engagement_rate": round(avg_engagement, 2),
"top_video_views": max((v.get("play_count", 0) for v in videos), default=0),
"collected_at": datetime.utcnow().isoformat(),
}
# Track multiple accounts
accounts = ["competitor1", "competitor2", "competitor3"]
for acct in accounts:
analytics = get_account_analytics(acct)
print(f"@{analytics['username']}: {analytics['followers']:,} followers, {analytics['avg_engagement_rate']}% engagement, {analytics['recent_videos']} recent videos")JavaScript Example
const API_KEY = "your_scavio_api_key";
const TIKTOK_URL = "https://api.scavio.dev/api/v1/tiktok";
async function getAccountAnalytics(username) {
const [profileRes, postsRes] = await Promise.all([
fetch(`${TIKTOK_URL}/profile`, { method: "POST", headers: { Authorization: `Bearer ${API_KEY}`, "content-type": "application/json" }, body: JSON.stringify({ username }) }),
fetch(`${TIKTOK_URL}/user/posts`, { method: "POST", headers: { Authorization: `Bearer ${API_KEY}`, "content-type": "application/json" }, body: JSON.stringify({ username }) }),
]);
const profile = await profileRes.json();
const videos = (await postsRes.json()).videos ?? [];
const totalViews = videos.reduce((s, v) => s + (v.play_count ?? 0), 0);
const totalLikes = videos.reduce((s, v) => s + (v.digg_count ?? 0), 0);
return { username, followers: profile.followers ?? 0, engagement: totalViews > 0 ? (totalLikes / totalViews * 100).toFixed(2) : "0", recentVideos: videos.length };
}
for (const acct of ["competitor1", "competitor2"]) {
const a = await getAccountAnalytics(acct);
console.log(`@${a.username}: ${a.followers.toLocaleString()} followers, ${a.engagement}% engagement, ${a.recentVideos} videos`);
}Platforms Used
TikTok
Trending video, creator, and product discovery