tiktokinfluencerdiscovery

TikTok Influencer Discovery API Workflow

Discover and vet TikTok influencers for $0.15/creator via API instead of $1,000+/mo influencer platforms.

8 min

Discovering TikTok influencers via API costs $0.15-0.50 per vetted creator compared to $100-500 per creator through influencer marketing platforms like Grin or CreatorIQ. The workflow: search TikTok for niche content, extract creator profiles, calculate engagement metrics, filter by audience quality, and output a ranked shortlist -- all automated.

Step 1: Search for niche content

Python
import os, requests, json
from collections import defaultdict

TOKEN = os.environ["SCAVIO_API_KEY"]
AUTH = {"Authorization": f"Bearer {TOKEN}"}
BASE = "https://api.scavio.dev/api/v1/tiktok"

def discover_creators(niche_queries: list, min_plays: int = 10000) -> dict:
    """Find creators posting about a niche. Cost: 1 credit per query."""
    creators = defaultdict(lambda: {"videos": [], "total_plays": 0})

    for query in niche_queries:
        resp = requests.post(f"{BASE}/search", headers=AUTH,
            json={"query": query, "count": 20})
        videos = resp.json().get("videos", [])

        for v in videos:
            plays = v.get("stats", {}).get("playCount", 0)
            if plays < min_plays:
                continue
            username = v.get("author", {}).get("uniqueId", "")
            if not username:
                continue
            creators[username]["videos"].append({
                "desc": v.get("desc", "")[:80],
                "plays": plays,
                "likes": v.get("stats", {}).get("diggCount", 0),
                "shares": v.get("stats", {}).get("shareCount", 0),
            })
            creators[username]["total_plays"] += plays

    return dict(creators)

# 5 queries = 5 credits = $0.025
creators = discover_creators([
    "skincare routine 2026",
    "best moisturizer dry skin",
    "dermatologist approved skincare",
    "affordable skincare products",
    "skincare over 30",
])

Step 2: Profile enrichment

Python
def enrich_creators(creators: dict, top_n: int = 20) -> list:
    """Get full profiles for top creators. Cost: 1 credit each."""
    # Sort by total plays
    sorted_creators = sorted(
        creators.items(), key=lambda x: x[1]["total_plays"], reverse=True
    )[:top_n]

    enriched = []
    for username, data in sorted_creators:
        resp = requests.post(f"{BASE}/user/info", headers=AUTH,
            json={"username": username})
        profile = resp.json()
        user = profile.get("user", {})
        stats = profile.get("stats", {})

        enriched.append({
            "username": username,
            "nickname": user.get("nickname", ""),
            "verified": user.get("verified", False),
            "followers": stats.get("followerCount", 0),
            "following": stats.get("followingCount", 0),
            "total_likes": stats.get("heartCount", 0),
            "video_count": stats.get("videoCount", 0),
            "niche_plays": data["total_plays"],
            "niche_videos": len(data["videos"]),
            "bio": user.get("signature", ""),
        })
    return enriched

# 20 profile lookups = 20 credits = $0.10
profiles = enrich_creators(creators)

Step 3: Engagement scoring

Python
def score_creators(profiles: list) -> list:
    """Score and rank creators for campaign fit."""
    for p in profiles:
        # Engagement rate: likes / followers
        p["engagement_rate"] = (
            p["total_likes"] / max(p["followers"], 1) * 100
        )
        # Content frequency: videos per month estimate
        p["est_monthly_posts"] = min(p["video_count"], 30)

        # Composite score
        score = 0
        if 1000 <= p["followers"] <= 500000:  # micro to mid-tier
            score += 2
        if p["engagement_rate"] > 3:
            score += 2
        if p["niche_videos"] >= 3:  # consistent niche content
            score += 2
        if p["verified"]:
            score += 1

        p["fit_score"] = score

    return sorted(profiles, key=lambda x: x["fit_score"], reverse=True)

ranked = score_creators(profiles)

print("Top 5 creators for skincare campaign:")
for c in ranked[:5]:
    print(f"  @{c['username']} | {c['followers']:,} followers | "
          f"{c['engagement_rate']:.1f}% engagement | Score: {c['fit_score']}")

Total workflow cost

  • Discovery search: 5 credits ($0.025)
  • Profile enrichment (top 20): 20 credits ($0.10)
  • Deep dive on top 5 (video history): 5 credits ($0.025)
  • Total: 30 credits = $0.15 per campaign discovery round
  • Compare: Grin platform starts at $1,000+/month
  • Compare: CreatorIQ enterprise pricing only
  • Compare: TikAPI at $49/month flat

Automating weekly discovery

Python
from datetime import datetime

def weekly_discovery_report(brand: str, niche_queries: list) -> dict:
    """Full weekly creator discovery pipeline."""
    creators = discover_creators(niche_queries)
    profiles = enrich_creators(creators, top_n=15)
    ranked = score_creators(profiles)

    return {
        "brand": brand,
        "date": datetime.utcnow().strftime("%Y-%m-%d"),
        "creators_found": len(creators),
        "profiles_enriched": len(profiles),
        "top_recommendations": [
            {"username": c["username"], "followers": c["followers"],
             "engagement": f"{c['engagement_rate']:.1f}%",
             "score": c["fit_score"]}
            for c in ranked[:10]
        ],
        "total_credits_used": len(niche_queries) + len(profiles),
    }

report = weekly_discovery_report("Skincare Brand X", [
    "skincare routine", "moisturizer review", "sunscreen recommendation"
])
print(json.dumps(report, indent=2))

Key takeaway

Influencer discovery does not require a $1,000/month platform. Search TikTok for niche content, extract creators from results, enrich profiles, and score for fit. The entire pipeline costs under $1 per discovery round and produces the same ranked shortlist that expensive platforms deliver through a dashboard.