tiktokcold-outreachaudience

TikTok Audience Analysis for Cold Outreach Targeting

Extract B2B prospect signals from TikTok creator audiences for cold outreach targeting.

8 min

TikTok creator audiences reveal buying signals that LinkedIn and email databases miss. By analyzing which creators your target prospects follow and engage with, you can build outreach lists with verified interest signals -- not just job titles.

The Cold Outreach Data Gap

Traditional cold outreach relies on firmographic data: company size, industry, job title. This tells you who someone is but not what they care about. A VP of Marketing at a SaaS company who actively comments on TikTok videos about AI-generated ad copy is a warmer lead for an AI marketing tool than a VP who has never engaged with that topic. TikTok engagement data fills this intent gap.

The Pipeline: Find, Analyze, Extract

Step one: find creators in your target niche via user search. Step two: analyze their follower demographics and engagement patterns. Step three: extract engaged commenters from relevant videos as potential prospects. Each API call costs $0.005.

Step 1: Find Niche Creators

Python
import requests, os

API_KEY = os.environ["SCAVIO_API_KEY"]
BASE = "https://api.scavio.dev"
HEADERS = {"Authorization": f"Bearer {API_KEY}",
           "Content-Type": "application/json"}

def find_niche_creators(keyword, min_followers=10000, count=20):
    resp = requests.post(f"{BASE}/api/v1/tiktok/search/users",
        headers=HEADERS,
        json={"keyword": keyword, "count": count})
    users = resp.json()["data"].get("user_list", [])
    return [
        {
            "username": u["user_info"]["unique_id"],
            "nickname": u["user_info"]["nickname"],
            "followers": u["user_info"]["follower_count"],
            "sec_uid": u["user_info"]["sec_uid"],
        }
        for u in users
        if u["user_info"]["follower_count"] >= min_followers
    ]

creators = find_niche_creators("b2b saas marketing")
for c in creators[:5]:
    print(f"@{c['username']} - {c['followers']:,} followers")

Step 2: Analyze Creator Audiences

Python
def get_creator_followers(sec_uid, max_pages=3):
    all_followers = []
    cursor = "0"
    for _ in range(max_pages):
        resp = requests.post(f"{BASE}/api/v1/tiktok/user/followers",
            headers=HEADERS,
            json={"sec_user_id": sec_uid, "count": 100,
                  "min_time": "0", "max_time": "0"})
        data = resp.json().get("data", {})
        followers = data.get("followers", [])
        all_followers.extend([{
            "username": f["unique_id"],
            "nickname": f["nickname"],
            "follower_count": f.get("follower_count", 0),
            "is_verified": f.get("custom_verify", "") != "",
        } for f in followers])
        if not data.get("has_more"):
            break
        cursor = str(data.get("min_time", "0"))
    return all_followers

# Analyze follower overlap between niche creators
from collections import Counter
follower_sets = {}
for creator in creators[:3]:
    followers = get_creator_followers(creator["sec_uid"])
    follower_sets[creator["username"]] = set(
        f["username"] for f in followers
    )
    print(f"@{creator['username']}: {len(followers)} followers sampled")

Step 3: Extract Engaged Commenters

Python
def get_engaged_prospects(creator_username, keyword_filter=None):
    # Get recent posts
    resp = requests.post(f"{BASE}/api/v1/tiktok/user/posts",
        headers=HEADERS,
        json={"username": creator_username, "count": 10,
              "cursor": "0"})
    posts = resp.json()["data"].get("aweme_list", [])

    prospects = []
    for post in posts[:5]:
        vid_id = post["aweme_id"]
        resp = requests.post(f"{BASE}/api/v1/tiktok/video/comments",
            headers=HEADERS,
            json={"video_id": vid_id, "count": 50, "cursor": "0"})
        comments = resp.json()["data"].get("comments", [])
        for c in comments:
            text = c["text"].lower()
            if keyword_filter and not any(k in text for k in keyword_filter):
                continue
            prospects.append({
                "username": c["user"]["unique_id"],
                "nickname": c["user"]["nickname"],
                "comment": c["text"][:200],
                "video_topic": post["desc"][:100],
                "engagement": c["digg_count"],
            })
    return prospects

# Find commenters who mention buying signals
buying_keywords = ["looking for", "recommend", "trying to find",
                   "anyone used", "budget", "pricing", "alternative"]
leads = get_engaged_prospects("target_creator", buying_keywords)
print(f"Found {len(leads)} prospects with buying signals")

Cost Breakdown

A full pipeline scanning 5 creators, 5 posts each, with follower sampling:

  • User search: 1 call = $0.005
  • Follower analysis: 5 creators x 3 pages = 15 calls = $0.075
  • Post retrieval: 5 calls = $0.025
  • Comment extraction: 25 calls = $0.125
  • Total: 46 calls = $0.23 per pipeline run

Run this weekly for 4 niches and you spend under $4/month. Compare to buying prospect lists from data vendors at $0.10-0.50 per contact with no engagement signal attached.