The Problem
Brands running UGC campaigns on TikTok need to collect all creator-submitted content for review, reporting, and repurposing. Manual collection (visiting each creator's profile, downloading videos, recording metrics) takes hours for campaigns with 20+ creators. Missing a creator's post means incomplete campaign reporting.
The Scavio Solution
Use Scavio TikTok API to automatically collect UGC from all campaign creators. Query each creator's recent posts, filter for campaign-related content using hashtag matching, and aggregate metrics. One script replaces hours of manual collection.
Before
Before automation, the social media manager spent 4 hours after each campaign manually checking 30 creator profiles, screenshotting metrics, and compiling a spreadsheet. 2-3 creator posts were routinely missed.
After
After automation, all 30 creators' content is collected in 3 minutes for $0.15 (30 queries at $0.005). Every post with the campaign hashtag is captured. Metrics are aggregated automatically. The manager reviews the report instead of building it.
Who It Is For
Social media managers running TikTok UGC campaigns. Marketing agencies managing influencer content collection. D2C brands scaling TikTok creator partnerships.
Key Benefits
- Collect all UGC from 30+ creators in minutes vs hours
- Campaign hashtag matching ensures no posts are missed
- Automated metrics aggregation: views, likes, comments per creator
- Cost: $0.005/creator query vs hours of manual collection
- Repeatable process for every campaign
Python Example
import requests
import json
from datetime import datetime
API_KEY = "your_scavio_api_key"
CAMPAIGN_HASHTAG = "YourCampaign"
def collect_ugc(creators: list[str]) -> dict:
all_ugc = []
for creator in creators:
res = requests.post(
"https://api.scavio.dev/api/v1/tiktok/user/posts",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"username": creator},
timeout=15,
)
if not res.ok:
continue
posts = res.json().get("posts", [])
campaign_posts = [p for p in posts if CAMPAIGN_HASHTAG.lower() in " ".join(p.get("hashtags", [])).lower()]
for p in campaign_posts:
all_ugc.append({
"creator": creator,
"video_id": p.get("id"),
"description": p.get("description", ""),
"views": p.get("views", 0),
"likes": p.get("likes", 0),
"comments": p.get("comments", 0),
})
total_views = sum(u["views"] for u in all_ugc)
return {"campaign": CAMPAIGN_HASHTAG, "creators_checked": len(creators), "ugc_found": len(all_ugc), "total_views": total_views, "posts": all_ugc}
report = collect_ugc(["creator_a", "creator_b", "creator_c"])
print(f"UGC collected: {report['ugc_found']} posts, {report['total_views']} total views")JavaScript Example
const API_KEY = "your_scavio_api_key";
const CAMPAIGN_HASHTAG = "YourCampaign";
async function collectUGC(creators) {
const ugc = [];
for (const creator of creators) {
const res = await fetch("https://api.scavio.dev/api/v1/tiktok/user/posts", {
method: "POST",
headers: { Authorization: `Bearer ${API_KEY}`, "content-type": "application/json" },
body: JSON.stringify({ username: creator }),
});
if (!res.ok) continue;
const posts = (await res.json()).posts ?? [];
for (const p of posts) {
if ((p.hashtags ?? []).some((h) => h.toLowerCase().includes(CAMPAIGN_HASHTAG.toLowerCase()))) {
ugc.push({ creator, videoId: p.id, views: p.views ?? 0, likes: p.likes ?? 0 });
}
}
}
return ugc;
}
const ugc = await collectUGC(["creator_a", "creator_b"]);
console.log(`Collected ${ugc.length} UGC posts`);Platforms Used
TikTok
Trending video, creator, and product discovery