The Problem
Competitors post TikTok content, collaborate with creators, and launch viral campaigns without your knowledge until weeks later. Manual competitor monitoring means checking each competitor's TikTok profile daily, scrolling through search results, and hoping to catch new content before it fades. With 5-10 competitors each posting 3-5 times per week, this is 30-50 videos to find and review weekly with no automated tracking or alerting.
The Scavio Solution
Build an alert pipeline that monitors competitor TikTok activity via Scavio API endpoints. The pipeline tracks competitor profiles for new posts, searches for competitor brand mentions in UGC, monitors engagement metrics on competitor content, and sends Slack/email alerts when competitor videos exceed engagement thresholds or when new competitor UGC appears.
Before
Before the alert system, competitor TikTok activity was reviewed in ad-hoc weekly meetings where someone manually checked profiles. Viral competitor campaigns were often discovered days after peak engagement, too late to respond or counter-position.
After
After deploying alerts, competitor video posts are detected within 24 hours. Videos exceeding 100K views trigger immediate Slack alerts. Weekly reports compare competitor engagement trends, identifying which content strategies are working for rivals.
Who It Is For
Brand marketing teams monitoring competitor TikTok strategy. Social media managers who need to know when competitors launch viral campaigns. Agencies managing competitive intelligence for clients with TikTok presence.
Key Benefits
- 24-hour detection of new competitor TikTok content
- Engagement threshold alerts for viral competitor videos
- UGC monitoring for competitor brand mentions
- Weekly competitive engagement trend reports
- Total monitoring cost under $10/month for 10 competitors
Python Example
import requests
import json
from pathlib import Path
from datetime import datetime
API_KEY = "your_scavio_api_key"
TIKTOK_URL = "https://api.scavio.dev/api/v1/tiktok"
VIRAL_THRESHOLD = 100_000
def check_competitor(username: str) -> dict:
res = requests.post(
f"{TIKTOK_URL}/user/posts",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"username": username},
timeout=15,
)
res.raise_for_status()
videos = res.json().get("videos", [])
viral = [v for v in videos if v.get("play_count", 0) > VIRAL_THRESHOLD]
return {
"username": username,
"total_recent_videos": len(videos),
"viral_videos": len(viral),
"top_video_views": max((v.get("play_count", 0) for v in videos), default=0),
"videos": [{"title": v.get("title", "")[:80], "views": v.get("play_count", 0), "likes": v.get("digg_count", 0)} for v in videos[:5]],
}
def daily_competitive_scan(competitors: list[str]) -> dict:
results = [check_competitor(c) for c in competitors]
alerts = [r for r in results if r["viral_videos"] > 0]
report = {
"date": datetime.utcnow().strftime("%Y-%m-%d"),
"competitors_checked": len(competitors),
"alerts": len(alerts),
"results": results,
}
if alerts:
for a in alerts:
print(f"ALERT: @{a['username']} has {a['viral_videos']} viral videos (top: {a['top_video_views']:,} views)")
Path(f"competitor_tiktok_{report['date']}.json").write_text(json.dumps(report, indent=2))
return report
report = daily_competitive_scan(["competitor1", "competitor2", "competitor3"])
print(f"Checked {report['competitors_checked']} competitors, {report['alerts']} alerts")JavaScript Example
const API_KEY = "your_scavio_api_key";
const TIKTOK_URL = "https://api.scavio.dev/api/v1/tiktok";
const VIRAL_THRESHOLD = 100_000;
async function checkCompetitor(username) {
const res = await fetch(`${TIKTOK_URL}/user/posts`, {
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 videos = (await res.json()).videos ?? [];
const viral = videos.filter((v) => (v.play_count ?? 0) > VIRAL_THRESHOLD);
return { username, totalVideos: videos.length, viralCount: viral.length, topViews: Math.max(...videos.map((v) => v.play_count ?? 0), 0) };
}
const competitors = ["competitor1", "competitor2", "competitor3"];
for (const c of competitors) {
const result = await checkCompetitor(c);
if (result.viralCount > 0) console.log(`ALERT: @${result.username} has ${result.viralCount} viral videos (top: ${result.topViews.toLocaleString()} views)`);
else console.log(`@${result.username}: ${result.totalVideos} recent videos, no viral`);
}Platforms Used
TikTok
Trending video, creator, and product discovery