ScavioScavio
ProductPricingDocs
Sign InGet Started
  1. Home
  2. Tutorials
  3. How to Build a TikTok Creator Scoring API Pipeline
Tutorial

How to Build a TikTok Creator Scoring API Pipeline

Score TikTok creators for brand partnerships using engagement rates, follower counts, and content quality signals from the Scavio TikTok API.

Get Free API KeyAPI Docs

Selecting the right TikTok creators for brand partnerships requires more than follower counts. Engagement rate, content consistency, audience fit, and growth trajectory all matter. This tutorial builds a scoring pipeline using the Scavio TikTok API that evaluates creators on multiple dimensions and produces a composite partnership score. Each creator evaluation costs 2-3 credits ($0.010-0.015).

Prerequisites

  • Python 3.9+ installed
  • requests library installed
  • A Scavio API key from scavio.dev
  • A list of TikTok creator usernames to evaluate

Walkthrough

Step 1: Fetch creator profile data

Pull profile information for each creator including follower count, following count, total likes, and bio. This gives baseline metrics.

Python
import requests, os

API_KEY = os.environ['SCAVIO_API_KEY']
TT_URL = 'https://api.scavio.dev/api/v1/tiktok'

def get_creator_profile(username: str) -> dict:
    resp = requests.post(f'{TT_URL}/user/info',
        headers={'Authorization': f'Bearer {API_KEY}',
                 'Content-Type': 'application/json'},
        json={'username': username})
    resp.raise_for_status()
    user = resp.json().get('data', {}).get('user', {})
    stats = resp.json().get('data', {}).get('stats', {})
    return {
        'username': username,
        'nickname': user.get('nickname', ''),
        'bio': user.get('signature', ''),
        'verified': user.get('verified', False),
        'followers': stats.get('followerCount', 0),
        'following': stats.get('followingCount', 0),
        'likes': stats.get('heartCount', 0),
        'videos': stats.get('videoCount', 0),
    }

# Test with a creator
profile = get_creator_profile('charlidamelio')
for key, val in profile.items():
    print(f'  {key}: {val}')

Step 2: Analyze recent content engagement

Search for the creator's recent videos and calculate engagement metrics. High engagement relative to followers signals an active, engaged audience.

Python
def analyze_engagement(username: str, video_count: int = 10) -> dict:
    resp = requests.post(f'{TT_URL}/search/videos',
        headers={'Authorization': f'Bearer {API_KEY}',
                 'Content-Type': 'application/json'},
        json={'keyword': f'@{username}', 'count': video_count, 'cursor': 0})
    videos = resp.json().get('data', {}).get('videos', [])
    if not videos:
        return {'engagement_rate': 0, 'avg_views': 0, 'videos_analyzed': 0}
    total_engagement = 0
    total_views = 0
    for v in videos:
        stats = v.get('stats', {})
        views = stats.get('playCount', 0)
        likes = stats.get('diggCount', 0)
        comments = stats.get('commentCount', 0)
        shares = stats.get('shareCount', 0)
        total_views += views
        total_engagement += likes + comments + shares
    avg_views = total_views / len(videos)
    engagement_rate = (total_engagement / total_views * 100) if total_views > 0 else 0
    return {
        'engagement_rate': round(engagement_rate, 2),
        'avg_views': int(avg_views),
        'total_engagement': total_engagement,
        'videos_analyzed': len(videos)
    }

engagement = analyze_engagement('charlidamelio')
for key, val in engagement.items():
    print(f'  {key}: {val}')

Step 3: Compute the composite creator score

Combine profile metrics and engagement data into a single 0-100 partnership score. Weight engagement rate most heavily since it predicts campaign performance.

Python
def score_creator(username: str) -> dict:
    profile = get_creator_profile(username)
    engagement = analyze_engagement(username)
    # Engagement rate score (0-40 points) - most important
    er = engagement['engagement_rate']
    if er >= 5:
        er_score = 40
    elif er >= 3:
        er_score = 30
    elif er >= 1:
        er_score = 20
    else:
        er_score = er * 20
    # Follower tier score (0-25 points)
    followers = profile['followers']
    if followers >= 1_000_000:
        follower_score = 25  # mega
    elif followers >= 100_000:
        follower_score = 22  # macro
    elif followers >= 10_000:
        follower_score = 20  # micro (often best ROI)
    elif followers >= 1_000:
        follower_score = 15  # nano
    else:
        follower_score = 5
    # Content volume score (0-20 points)
    videos = profile['videos']
    volume_score = min(videos / 50 * 20, 20)
    # Verified bonus (0-15 points)
    verified_score = 15 if profile['verified'] else 0
    total = round(er_score + follower_score + volume_score + verified_score, 1)
    return {
        'username': username,
        'score': total,
        'tier': 'mega' if followers >= 1_000_000 else 'macro' if followers >= 100_000 else 'micro' if followers >= 10_000 else 'nano',
        'engagement_rate': er,
        'followers': followers,
        'avg_views': engagement['avg_views'],
        'credits_used': 2
    }

Step 4: Score and rank a batch of creators

Evaluate multiple creators and rank them by score. Export the results for your brand partnership team.

Python
import time

def evaluate_creators(usernames: list) -> list:
    scored = []
    for username in usernames:
        try:
            result = score_creator(username)
            scored.append(result)
            print(f'  [{result["score"]:5.1f}] @{username} ({result["tier"]}) '
                  f'ER:{result["engagement_rate"]}% '
                  f'Followers:{result["followers"]:,}')
        except Exception as e:
            print(f'  [ERROR] @{username}: {e}')
        time.sleep(0.5)
    scored.sort(key=lambda x: -x['score'])
    total_credits = sum(c['credits_used'] for c in scored)
    print(f'\nEvaluated {len(scored)} creators')
    print(f'Credits used: {total_credits} (${total_credits * 0.005:.3f})')
    return scored

creators = ['charlidamelio', 'khaby.lame', 'addisonre']
results = evaluate_creators(creators)

Python Example

Python
import requests, os, time

API_KEY = os.environ['SCAVIO_API_KEY']
TT = 'https://api.scavio.dev/api/v1/tiktok'

def score_creator(username):
    profile = requests.post(f'{TT}/user/info',
        headers={'Authorization': f'Bearer {API_KEY}', 'Content-Type': 'application/json'},
        json={'username': username}).json().get('data', {})
    stats = profile.get('stats', {})
    followers = stats.get('followerCount', 0)
    videos_resp = requests.post(f'{TT}/search/videos',
        headers={'Authorization': f'Bearer {API_KEY}', 'Content-Type': 'application/json'},
        json={'keyword': f'@{username}', 'count': 10, 'cursor': 0})
    videos = videos_resp.json().get('data', {}).get('videos', [])
    total_eng = sum(v.get('stats', {}).get('diggCount', 0) + v.get('stats', {}).get('commentCount', 0)
                    for v in videos)
    total_views = sum(v.get('stats', {}).get('playCount', 0) for v in videos)
    er = (total_eng / total_views * 100) if total_views > 0 else 0
    return {'username': username, 'followers': followers, 'engagement_rate': round(er, 2)}

for u in ['charlidamelio', 'khaby.lame']:
    r = score_creator(u)
    print(f'@{r["username"]}: {r["followers"]:,} followers, {r["engagement_rate"]}% ER')
    time.sleep(0.5)

JavaScript Example

JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
const TT = 'https://api.scavio.dev/api/v1/tiktok';

async function scoreCreator(username) {
  const profile = await fetch(`${TT}/user/info`, {
    method: 'POST',
    headers: { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json' },
    body: JSON.stringify({ username })
  }).then(r => r.json());
  const stats = profile.data?.stats || {};
  const videos = await fetch(`${TT}/search/videos`, {
    method: 'POST',
    headers: { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json' },
    body: JSON.stringify({ keyword: `@${username}`, count: 10, cursor: 0 })
  }).then(r => r.json());
  const vids = videos.data?.videos || [];
  const views = vids.reduce((s, v) => s + (v.stats?.playCount || 0), 0);
  const eng = vids.reduce((s, v) => s + (v.stats?.diggCount || 0) + (v.stats?.commentCount || 0), 0);
  return { username, followers: stats.followerCount || 0, er: views ? (eng/views*100).toFixed(2) : 0 };
}

scoreCreator('charlidamelio').then(r => console.log(`@${r.username}: ${r.followers} followers, ${r.er}% ER`));

Expected Output

JSON
  username: charlidamelio
  followers: 155000000
  engagement_rate: 3.45
  avg_views: 12500000
  videos_analyzed: 10

  [ 85.0] @charlidamelio (mega) ER:3.45% Followers:155,000,000
  [ 78.2] @khaby.lame (mega) ER:2.80% Followers:162,000,000
  [ 72.5] @addisonre (mega) ER:2.10% Followers:88,000,000

Evaluated 3 creators
Credits used: 6 ($0.030)

Related Tutorials

  • How to Monitor TikTok Brand Mentions on the Cheap
  • How to Build a YouTube Influencer Discovery Pipeline
  • How to Build a TikTok Product Trend Detector

Frequently Asked Questions

Most developers complete this tutorial in 15 to 30 minutes. You will need a Scavio API key (free tier works) and a working Python or JavaScript environment.

Python 3.9+ installed. requests library installed. A Scavio API key from scavio.dev. A list of TikTok creator usernames to evaluate. A Scavio API key gives you 50 free credits on signup.

Yes. The free tier includes 50 credits on signup, which is more than enough to complete this tutorial and prototype a working solution.

Scavio has a native LangChain package (langchain-scavio), an MCP server, and a plain REST API that works with any HTTP client. This tutorial uses the raw REST API, but you can adapt to your framework of choice.

Related Resources

Best Of

Best TikTok Influencer Vetting APIs (2026)

Read more
Best Of

Best TikTok Creator Discovery API in 2026

Read more
Solution

Score TikTok Influencers Before Campaign Spend

Read more
Workflow

TikTok Creator Discovery and Scoring Workflow

Read more
Comparison

Manual Vetting vs API-Driven Vetting (via Scavio or TikAPI)

Read more
Solution

Automate TikTok Creator Vetting for Brand Partnerships

Read more

Start Building

Score TikTok creators for brand partnerships using engagement rates, follower counts, and content quality signals from the Scavio TikTok API.

Get Free API KeyRead the Docs
ScavioScavio

Real-time search API for AI agents. Search every platform, not just Google.

Product

  • Features
  • Pricing
  • Dashboard
  • Affiliates

Developers

  • Documentation
  • API Reference
  • Quickstart
  • MCP Integration
  • Python SDK

Alternatives

  • Tavily Alternative
  • SerpAPI Alternative
  • Firecrawl Alternative
  • Exa Alternative

Tools

  • JSON Formatter
  • cURL to Code
  • Token Counter
  • All Tools

© 2026 Scavio. All rights reserved.

Featured on TAAFT
Terms of ServicePrivacy Policy