TikTok UGC Brand Monitoring via API
Track user-generated content mentioning your brand on TikTok. Video search, hashtag monitoring, comment sentiment, viral alerts at 1 credit/request.
Tracking user-generated content mentioning your brand on TikTok requires systematic API monitoring: search videos by brand name, monitor hashtag campaigns, collect comment sentiment, and alert on viral mentions. The Scavio TikTok endpoints handle all of this at 1 credit per request ($0.005), giving you real-time UGC visibility without manual scrolling or expensive social listening tools.
Why UGC monitoring matters
A single viral TikTok mentioning your brand can drive thousands of visits in hours. Without monitoring, you miss the window to engage: reply to the creator, share the video, offer a collaboration. You also miss negative viral content that needs immediate response. The brands that win on TikTok in 2026 have automated monitoring pipelines, not interns scrolling feeds.
Building the monitoring pipeline
import requests, os, json
from datetime import datetime
BASE = "https://api.scavio.dev/api/v1/tiktok"
AUTH = {"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}"}
def search_brand_mentions(brand_name: str, count: int = 20) -> list[dict]:
"""Search for videos mentioning your brand. 1 credit/request."""
resp = requests.post(f"{BASE}/search/videos",
headers=AUTH,
json={"query": brand_name, "count": count},
timeout=10)
return resp.json().get("videos", [])
def get_hashtag_stats(hashtag: str) -> dict:
"""Get view count and video count for a branded hashtag."""
resp = requests.post(f"{BASE}/hashtag/info",
headers=AUTH,
json={"hashtag": hashtag},
timeout=10)
return resp.json()
def get_hashtag_videos(hashtag: str, count: int = 20) -> list[dict]:
"""Get videos using your branded hashtag."""
resp = requests.post(f"{BASE}/hashtag/videos",
headers=AUTH,
json={"hashtag": hashtag, "count": count},
timeout=10)
return resp.json().get("videos", [])Detecting viral mentions
def check_for_viral(brand_name: str, viral_threshold: int = 100000) -> list[dict]:
"""Alert on videos mentioning brand that are going viral."""
videos = search_brand_mentions(brand_name, count=30)
viral = []
for v in videos:
views = v.get("view_count", 0)
if views >= viral_threshold:
viral.append({
"video_id": v.get("id"),
"author": v.get("author", {}).get("username"),
"views": views,
"likes": v.get("like_count", 0),
"description": v.get("description", "")[:200],
"created": v.get("create_time"),
"alert_level": "high" if views > viral_threshold * 5 else "medium"
})
return sorted(viral, key=lambda x: x["views"], reverse=True)Comment sentiment collection
def analyze_video_comments(video_id: str) -> dict:
"""Collect comments for sentiment overview. 1 credit/request."""
resp = requests.post(f"{BASE}/video/comments",
headers=AUTH,
json={"video_id": video_id, "count": 50},
timeout=10)
comments = resp.json().get("comments", [])
# Simple keyword-based sentiment (replace with ML for production)
positive_words = ["love", "amazing", "best", "great", "perfect", "recommend"]
negative_words = ["bad", "worst", "scam", "terrible", "hate", "avoid"]
positive = 0
negative = 0
neutral = 0
for c in comments:
text = c.get("text", "").lower()
if any(w in text for w in positive_words):
positive += 1
elif any(w in text for w in negative_words):
negative += 1
else:
neutral += 1
return {
"video_id": video_id,
"total_comments": len(comments),
"positive": positive,
"negative": negative,
"neutral": neutral,
"sentiment_ratio": positive / max(positive + negative, 1)
}Daily monitoring pipeline
def daily_brand_monitor(brand_name: str, hashtags: list[str]) -> dict:
"""Run full daily monitoring check. ~5-10 credits total."""
report = {
"date": datetime.now().strftime("%Y-%m-%d"),
"brand": brand_name,
"mentions": [],
"hashtag_stats": [],
"viral_alerts": []
}
# Check brand mentions
mentions = search_brand_mentions(brand_name)
report["mentions"] = [{
"author": v.get("author", {}).get("username"),
"views": v.get("view_count", 0),
"description": v.get("description", "")[:100]
} for v in mentions]
# Check branded hashtags
for tag in hashtags:
stats = get_hashtag_stats(tag)
report["hashtag_stats"].append({
"hashtag": tag,
"view_count": stats.get("view_count", 0),
"video_count": stats.get("video_count", 0)
})
# Check for viral content
report["viral_alerts"] = check_for_viral(brand_name)
return report
# Run daily via cron
# Cost: ~6 API calls = 6 credits = $0.03/day = ~$0.90/monthResponding to UGC
When you detect a mention, the response playbook depends on the content type. Positive review: comment thanking them, consider reaching out for a collaboration. Negative experience: respond publicly with support contact, resolve quickly. Viral unboxing: share to your brand account, amplify the creator. The monitoring pipeline gives you the data; your response speed determines whether you capitalize on organic brand moments or miss them entirely.
Comparison to traditional tools
Brandwatch or Sprout Social charge $200-500/month for social listening that includes TikTok. They provide dashboards and reports. The API approach costs under $1/month for daily monitoring and gives you raw data you can pipe into Slack alerts, dashboards, or automated response workflows. The tradeoff: you build the alerting yourself, but you own the pipeline and can customize triggers to exactly what matters for your brand.