Build a TikTok Analytics Dashboard with API Data
Build a TikTok analytics dashboard pulling real data from 11 API endpoints. Profile stats, post performance, comment sentiment, and hashtag trends in one view.
Build a TikTok analytics dashboard by pulling profile stats, video performance, and hashtag data from Scavio TikTok API endpoints. Each request costs 1 credit ($0.005). The data comes back as structured JSON ready for charting libraries or spreadsheet export.
Dashboard Data Sources
A useful TikTok dashboard tracks three layers: account-level metrics (followers, total likes over time), content-level metrics (per-video views, engagement), and discovery metrics (hashtag performance, search visibility). Scavio endpoints cover all three.
Account Metrics Collector
import requests, os, json
from datetime import date
API_KEY = os.environ["SCAVIO_API_KEY"]
BASE = "https://api.scavio.dev"
HEADERS = {"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"}
def collect_account_metrics(usernames):
metrics = []
for username in usernames:
resp = requests.post(f"{BASE}/api/v1/tiktok/profile",
headers=HEADERS, json={"username": username})
user = resp.json()["data"]["user"]
metrics.append({
"date": str(date.today()),
"username": user["unique_id"],
"followers": user["follower_count"],
"following": user["following_count"],
"videos": user["aweme_count"],
"total_likes": user["total_favorited"],
})
return metrics
accounts = ["yourbrand", "competitor_a", "competitor_b"]
today_metrics = collect_account_metrics(accounts)
for m in today_metrics:
print(f"@{m['username']}: {m['followers']:,} followers")Content Performance Tracker
def collect_video_metrics(username, video_count=30):
resp = requests.post(f"{BASE}/api/v1/tiktok/profile",
headers=HEADERS, json={"username": username})
sec_uid = resp.json()["data"]["user"]["sec_uid"]
all_videos = []
cursor = "0"
while len(all_videos) < video_count:
resp = requests.post(f"{BASE}/api/v1/tiktok/user/posts",
headers=HEADERS,
json={"sec_user_id": sec_uid, "count": 20, "cursor": cursor})
data = resp.json()["data"]
for v in data.get("aweme_list", []):
all_videos.append({
"video_id": v["aweme_id"],
"desc": v["desc"][:80],
"created": v["create_time"],
"views": v["statistics"]["play_count"],
"likes": v["statistics"]["digg_count"],
"comments": v["statistics"]["comment_count"],
"shares": v["statistics"]["share_count"],
"bookmarks": v["statistics"]["collect_count"],
})
if not data.get("has_more"):
break
cursor = str(data.get("max_cursor", "0"))
return all_videos[:video_count]Hashtag Tracker
def track_hashtags(hashtag_names):
results = []
for name in hashtag_names:
resp = requests.post(f"{BASE}/api/v1/tiktok/hashtag",
headers=HEADERS, json={"hashtag_name": name})
info = resp.json()["data"]["challengeInfo"]
results.append({
"date": str(date.today()),
"hashtag": info["challenge"]["title"],
"videos": info["stats"]["videoCount"],
"views": info["stats"]["viewCount"],
})
return results
brand_hashtags = ["yourbrand", "yourbrandchallenge", "yourbrandreview"]
hashtag_data = track_hashtags(brand_hashtags)Daily Snapshot Pipeline
def daily_snapshot(accounts, hashtags, output_dir="dashboard_data"):
os.makedirs(output_dir, exist_ok=True)
snapshot = {
"date": str(date.today()),
"accounts": collect_account_metrics(accounts),
"hashtags": track_hashtags(hashtags),
}
# Add video metrics for primary account
if accounts:
snapshot["videos"] = collect_video_metrics(accounts[0], 20)
filepath = f"{output_dir}/{date.today()}.json"
with open(filepath, "w") as f:
json.dump(snapshot, f, indent=2)
print(f"Snapshot saved: {filepath}")
return snapshot
# Run daily via cron: python dashboard.py
daily_snapshot(
accounts=["yourbrand", "competitor_a"],
hashtags=["yourbrand", "yourbrandchallenge"])Visualization
The JSON snapshots feed into any dashboard tool. For quick charts, load them into Pandas and plot with Matplotlib. For team dashboards, push to a database and connect Metabase, Grafana, or Google Sheets via a simple sync script. The structured JSON format means no parsing or transformation step.
Cost Estimate
Daily dashboard for 3 accounts + 3 hashtags + 20 video metrics: roughly 8 credits ($0.04) per day, or $1.20/month. Weekly deep reports with 100 video metrics add about $0.50/week. Total monthly cost for a comprehensive dashboard: under $4.