ScavioScavio
ProductPricingDocs
Sign InGet Started
  1. Home
  2. Tutorials
  3. How to Vet TikTok Creators Before Sponsorship with an API Checklist
Tutorial

How to Vet TikTok Creators Before Sponsorship with an API Checklist

Vet TikTok creators before sponsorship deals using API data to check engagement rates, follower quality, content consistency, and posting cadence.

Get Free API KeyAPI Docs

Vetting TikTok creators before sponsorship using an API checklist lets you programmatically evaluate engagement rates, follower counts, content consistency, and posting frequency instead of relying on screenshots or self-reported metrics. This tutorial shows you how to pull a creator profile via the Scavio TikTok API, compute key trust signals, and score creators against a pass/fail rubric so you can confidently allocate your influencer budget.

Prerequisites

  • Scavio API key with TikTok access (free 250 credits/mo at scavio.dev)
  • Python 3.9+ or Node.js 18+
  • A list of TikTok creator usernames to evaluate

Walkthrough

Step 1: Fetch creator profile data

Use the Scavio TikTok user info endpoint to pull the creator profile including follower count, following count, total likes, video count, and bio. This gives you the raw numbers you need for your vetting rubric.

Python
import requests

API_KEY = 'your_scavio_api_key'

def get_creator_profile(username):
    resp = requests.post(
        'https://api.scavio.dev/api/v1/tiktok/user/info',
        headers={'Authorization': f'Bearer {API_KEY}'},
        json={'username': username}
    )
    resp.raise_for_status()
    return resp.json()

profile = get_creator_profile('target_creator')
print(f'Followers: {profile.get("follower_count", 0):,}')
print(f'Total likes: {profile.get("total_likes", 0):,}')
print(f'Videos: {profile.get("video_count", 0)}')

Step 2: Pull recent videos for engagement analysis

Fetch the creator recent posts to calculate real engagement metrics. Self-reported averages are unreliable. You need per-video data to spot trends and outliers.

Python
def get_recent_videos(username, count=20):
    resp = requests.post(
        'https://api.scavio.dev/api/v1/tiktok/user/posts',
        headers={'Authorization': f'Bearer {API_KEY}'},
        json={'username': username, 'count': count}
    )
    resp.raise_for_status()
    return resp.json().get('posts', [])

videos = get_recent_videos('target_creator', count=20)

Step 3: Compute engagement rate and consistency score

Calculate the median engagement rate (likes + comments + shares divided by views) across recent videos. Use median instead of mean to avoid skew from one viral outlier. Also compute the coefficient of variation to measure how consistent their performance is.

Python
import statistics

def compute_engagement_metrics(videos):
    rates = []
    for v in videos:
        views = v.get('views', 0)
        if views < 100:
            continue
        engagement = v.get('likes', 0) + v.get('comments', 0) + v.get('shares', 0)
        rates.append(engagement / views)

    if not rates:
        return {'median_rate': 0, 'consistency': 0, 'sample_size': 0}

    median_rate = statistics.median(rates)
    mean_rate = statistics.mean(rates)
    stdev = statistics.stdev(rates) if len(rates) > 1 else 0
    cv = stdev / mean_rate if mean_rate > 0 else 0

    return {
        'median_rate': round(median_rate * 100, 2),
        'consistency': round((1 - min(cv, 1)) * 100, 1),
        'sample_size': len(rates),
    }

metrics = compute_engagement_metrics(videos)
print(f'Median engagement: {metrics["median_rate"]}%')
print(f'Consistency score: {metrics["consistency"]}%')

Step 4: Run the vetting checklist

Score the creator against a pass/fail rubric covering minimum follower count, engagement rate floor, consistency threshold, and minimum posting frequency. Each check returns pass or fail with the actual value so you can make informed decisions.

Python
def vet_creator(profile, metrics, videos):
    checks = []
    follower_count = profile.get('follower_count', 0)
    checks.append({
        'check': 'Min 10K followers',
        'pass': follower_count >= 10000,
        'value': f'{follower_count:,}',
    })
    checks.append({
        'check': 'Engagement rate >= 3%',
        'pass': metrics['median_rate'] >= 3.0,
        'value': f'{metrics["median_rate"]}%',
    })
    checks.append({
        'check': 'Consistency score >= 60%',
        'pass': metrics['consistency'] >= 60,
        'value': f'{metrics["consistency"]}%',
    })
    checks.append({
        'check': 'At least 2 posts/week',
        'pass': len(videos) >= 8,
        'value': f'{len(videos)} posts in sample',
    })
    passed = sum(1 for c in checks if c['pass'])
    return {'checks': checks, 'passed': passed, 'total': len(checks)}

result = vet_creator(profile, metrics, videos)
for c in result['checks']:
    status = 'PASS' if c['pass'] else 'FAIL'
    print(f'[{status}] {c["check"]}: {c["value"]}')
print(f'\nScore: {result["passed"]}/{result["total"]}')

Python Example

Python
import requests
import statistics

API_KEY = 'your_scavio_api_key'

def get_creator_profile(username):
    resp = requests.post(
        'https://api.scavio.dev/api/v1/tiktok/user/info',
        headers={'Authorization': f'Bearer {API_KEY}'},
        json={'username': username}
    )
    resp.raise_for_status()
    return resp.json()

def get_recent_videos(username, count=20):
    resp = requests.post(
        'https://api.scavio.dev/api/v1/tiktok/user/posts',
        headers={'Authorization': f'Bearer {API_KEY}'},
        json={'username': username, 'count': count}
    )
    resp.raise_for_status()
    return resp.json().get('posts', [])

def compute_engagement(videos):
    rates = []
    for v in videos:
        views = v.get('views', 0)
        if views < 100:
            continue
        eng = v.get('likes', 0) + v.get('comments', 0) + v.get('shares', 0)
        rates.append(eng / views)
    if not rates:
        return {'median_rate': 0, 'consistency': 0}
    median_rate = statistics.median(rates)
    mean_rate = statistics.mean(rates)
    stdev = statistics.stdev(rates) if len(rates) > 1 else 0
    cv = stdev / mean_rate if mean_rate > 0 else 0
    return {
        'median_rate': round(median_rate * 100, 2),
        'consistency': round((1 - min(cv, 1)) * 100, 1),
    }

def vet_creator(username):
    profile = get_creator_profile(username)
    videos = get_recent_videos(username, count=20)
    metrics = compute_engagement(videos)
    checks = [
        ('Min 10K followers', profile.get('follower_count', 0) >= 10000),
        ('Engagement >= 3%', metrics['median_rate'] >= 3.0),
        ('Consistency >= 60%', metrics['consistency'] >= 60),
        ('2+ posts/week', len(videos) >= 8),
    ]
    for label, passed in checks:
        print(f'[{"PASS" if passed else "FAIL"}] {label}')
    print(f'Score: {sum(p for _, p in checks)}/{len(checks)}')

vet_creator('target_creator')

JavaScript Example

JavaScript
const API_KEY = 'your_scavio_api_key';

async function getProfile(username) {
  const resp = await fetch('https://api.scavio.dev/api/v1/tiktok/user/info', {
    method: 'POST',
    headers: { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json' },
    body: JSON.stringify({ username }),
  });
  return resp.json();
}

async function getRecentVideos(username, count = 20) {
  const resp = 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, count }),
  });
  const data = await resp.json();
  return data.posts || [];
}

function computeEngagement(videos) {
  const rates = videos
    .filter(v => (v.views || 0) >= 100)
    .map(v => ((v.likes || 0) + (v.comments || 0) + (v.shares || 0)) / v.views);
  if (!rates.length) return { medianRate: 0, consistency: 0 };
  const sorted = [...rates].sort((a, b) => a - b);
  const median = sorted[Math.floor(sorted.length / 2)];
  const mean = rates.reduce((a, b) => a + b, 0) / rates.length;
  const stdev = Math.sqrt(rates.reduce((s, r) => s + (r - mean) ** 2, 0) / rates.length);
  const cv = mean > 0 ? stdev / mean : 0;
  return {
    medianRate: Math.round(median * 10000) / 100,
    consistency: Math.round((1 - Math.min(cv, 1)) * 1000) / 10,
  };
}

async function vetCreator(username) {
  const profile = await getProfile(username);
  const videos = await getRecentVideos(username, 20);
  const metrics = computeEngagement(videos);
  const checks = [
    ['Min 10K followers', (profile.follower_count || 0) >= 10000],
    ['Engagement >= 3%', metrics.medianRate >= 3.0],
    ['Consistency >= 60%', metrics.consistency >= 60],
    ['2+ posts/week', videos.length >= 8],
  ];
  for (const [label, passed] of checks) {
    console.log(`[${passed ? 'PASS' : 'FAIL'}] ${label}`);
  }
  console.log(`Score: ${checks.filter(c => c[1]).length}/${checks.length}`);
}

vetCreator('target_creator');

Expected Output

JSON
[PASS] Min 10K followers
[PASS] Engagement >= 3%
[FAIL] Consistency >= 60%
[PASS] 2+ posts/week
Score: 3/4

Related Tutorials

  • How to Analyze TikTok Comment Sentiment with API + LLM
  • How to Build a TikTok Ecommerce Trend Tracker
  • How to Calculate SERP API Effective Cost Per Query

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.

Scavio API key with TikTok access (free 250 credits/mo at scavio.dev). Python 3.9+ or Node.js 18+. 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

Use Case

TikTok Creator Brand Safety Audit

Read more
Glossary

TikTok Creator Vetting API Pattern

Read more
Best Of

Best TikTok Influencer Vetting APIs (2026)

Read more
Comparison

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

Read more
Use Case

TikTok Brand Safety Creator Vetting

Read more
Comparison

Manual TikTok Vetting vs API-Driven Creator Vetting

Read more

Start Building

Vet TikTok creators before sponsorship deals using API data to check engagement rates, follower quality, content consistency, and posting cadence.

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