Workflow

Social Analytics Weekly Scan

Pull weekly TikTok profile stats for tracked accounts. Monitor follower growth, engagement rates, and content performance trends.

Overview

This workflow pulls TikTok profile stats for a list of tracked accounts every week to build longitudinal analytics dashboards. For each account, it captures follower count, total likes, and recent post engagement to compute week-over-week growth rates. Social media managers use this to spot accounts gaining or losing momentum without paying for expensive social listening platforms.

Trigger

Cron schedule (every Monday at 10:00 AM UTC)

Schedule

Runs every Monday at 10:00 AM UTC

Workflow Steps

1

Load tracked accounts list

Read the list of TikTok usernames being tracked from configuration or database.

2

Pull profile stats for each account

Call Scavio TikTok /profile endpoint for each username to get current follower count and total likes.

3

Compare against previous week

Load last week's stats and compute follower growth rate and engagement changes.

4

Flag notable changes

Identify accounts with growth rates above or below thresholds that warrant attention.

5

Save weekly snapshot

Store this week's stats for future comparisons and append to the historical trend dataset.

Python Implementation

Python
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"

TRACKED_ACCOUNTS = ["account1", "account2", "account3", "account4", "account5"]
GROWTH_THRESHOLD = 0.05  # 5% weekly growth flags attention

def get_profile_stats(username: str) -> dict:
    res = requests.post(
        f"{TIKTOK_URL}/profile",
        headers={"Authorization": f"Bearer {API_KEY}"},
        json={"username": username},
        timeout=15,
    )
    res.raise_for_status()
    data = res.json()
    return {
        "username": username,
        "followers": data.get("followers", 0),
        "following": data.get("following", 0),
        "total_likes": data.get("likes", 0),
        "bio": data.get("bio", ""),
    }

def run():
    date = datetime.utcnow().strftime("%Y-%m-%d")
    snapshots_dir = Path("tiktok_analytics")
    snapshots_dir.mkdir(exist_ok=True)

    # Load previous week
    prev_files = sorted(snapshots_dir.glob("snapshot_*.json"))
    previous = {}
    if prev_files:
        prev_data = json.loads(prev_files[-1].read_text())
        previous = {a["username"]: a for a in prev_data.get("accounts", [])}

    accounts = []
    notable = []
    for username in TRACKED_ACCOUNTS:
        stats = get_profile_stats(username)
        prev = previous.get(username, {})
        prev_followers = prev.get("followers", 0)

        if prev_followers > 0:
            growth = (stats["followers"] - prev_followers) / prev_followers
            stats["follower_growth_pct"] = round(growth * 100, 2)
            stats["follower_delta"] = stats["followers"] - prev_followers
            if abs(growth) >= GROWTH_THRESHOLD:
                notable.append(username)
        else:
            stats["follower_growth_pct"] = None
            stats["follower_delta"] = None

        accounts.append(stats)

    snapshot = {"date": date, "accounts": accounts, "notable_changes": notable}
    snapshots_dir.joinpath(f"snapshot_{date}.json").write_text(json.dumps(snapshot, indent=2))

    print(f"TikTok Analytics {date}: {len(accounts)} accounts tracked")
    for a in accounts:
        growth_str = f"{a['follower_growth_pct']:+.1f}%" if a["follower_growth_pct"] is not None else "new"
        flag = " ***" if a["username"] in notable else ""
        print(f"  @{a['username']}: {a['followers']:,} followers ({growth_str}){flag}")

if __name__ == "__main__":
    run()

JavaScript Implementation

JavaScript
const API_KEY = "your_scavio_api_key";
const TIKTOK_URL = "https://api.scavio.dev/api/v1/tiktok";
const ACCOUNTS = ["account1", "account2", "account3"];

async function getProfile(username) {
  const res = await fetch(`${TIKTOK_URL}/profile`, {
    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 data = await res.json();
  return { username, followers: data.followers ?? 0, totalLikes: data.likes ?? 0 };
}

const stats = [];
for (const u of ACCOUNTS) stats.push(await getProfile(u));
stats.sort((a, b) => b.followers - a.followers);
for (const s of stats) console.log(`@${s.username}: ${s.followers.toLocaleString()} followers, ${s.totalLikes.toLocaleString()} likes`);

Platforms Used

TikTok

Trending video, creator, and product discovery

Frequently Asked Questions

This workflow pulls TikTok profile stats for a list of tracked accounts every week to build longitudinal analytics dashboards. For each account, it captures follower count, total likes, and recent post engagement to compute week-over-week growth rates. Social media managers use this to spot accounts gaining or losing momentum without paying for expensive social listening platforms.

This workflow uses a cron schedule (every monday at 10:00 am utc). Runs every Monday at 10:00 AM UTC.

This workflow uses the following Scavio platforms: tiktok. Each platform is called via the same unified API endpoint.

Yes. Scavio's free tier includes 250 credits per month with no credit card required. That is enough to test and validate this workflow before scaling it.

Social Analytics Weekly Scan

Pull weekly TikTok profile stats for tracked accounts. Monitor follower growth, engagement rates, and content performance trends.