Back to blog

TikTok Analytics API: The Complete Developer Guide

by Simon Balfe ·

TikTok generates massive amounts of analytics data: views, likes, shares, follower counts, engagement rates, trending hashtags. If you want to build dashboards, track campaigns, or benchmark creators, you need programmatic access to that data.

This guide covers everything you need to know about accessing TikTok analytics data through APIs, from what metrics are available to building a working analytics pipeline with real code.

What TikTok analytics data is available via API

TikTok surfaces several categories of analytics data that developers can access programmatically.

Profile analytics include follower counts, following counts, total likes received, bio information, verified status, and avatar URLs. These are the foundation for tracking creator growth over time.

Video performance analytics cover views, likes, comments, shares, play counts, and bookmark counts for individual videos. You can also pull video metadata like captions, hashtags, posting dates, and music used.

Engagement metrics are calculated from the raw numbers. Engagement rate (interactions divided by views), average views per video, posting frequency, and audience growth rate all come from combining profile and video data.

Hashtag analytics reveal usage counts, associated videos, and trending status. These help identify content themes and track campaign-specific hashtags.

Trending analytics surface what is popular right now: trending videos, rising creators, popular sounds, and viral content across categories.

Official vs third-party options

There are two paths to TikTok analytics data. Each comes with significant tradeoffs.

TikTok Research API

TikTok offers an official Research API, but the access requirements are restrictive:

  • Only available to academic researchers at approved US and EU non-profit institutions
  • Requires a formal application with a research proposal
  • Approval takes weeks to months
  • Limited to 1,000 requests per day
  • No access to real-time data
  • Restricted endpoint coverage

If you are building a commercial product, a marketing tool, or anything outside academic research, the official API is not an option.

TikTok Commercial Content API

TikTok also provides a Commercial Content API focused on advertising data. It requires a developer account, app review, and only exposes ad-related metrics. Not useful for general TikTok creator analytics.

Third-party TikTok analytics APIs

Third-party APIs like CreatorCrawl solve the access problem. They provide immediate access to TikTok analytics data with no approval process, broader endpoint coverage, and pay-per-use pricing.

The key advantages:

  • Instant access: Get an API key in seconds, not weeks
  • Full coverage: Profiles, videos, comments, trending, hashtags, search, sounds, and more
  • No rate limits: Scale as needed without artificial caps
  • Real-time data: Pull live data, never stale caches

The tradeoff is cost per request, though for most use cases the time saved and broader access make third-party APIs the practical choice.

Key TikTok analytics metrics you can extract

Let’s break down the specific TikTok analytics data available through the CreatorCrawl API and what you can do with it.

Profile analytics

The /tiktok/profile endpoint returns comprehensive creator data:

MetricDescription
FollowersTotal follower count
FollowingNumber of accounts followed
Total likesCumulative likes across all videos
Video countTotal number of posted videos
BioProfile description text
VerifiedWhether the account has a verification badge
NicknameDisplay name
AvatarProfile image URL

By polling this endpoint over time, you can track follower growth rate, identify viral moments that drive spikes, and monitor how a creator’s audience evolves.

Video analytics

The /tiktok/profile/videos endpoint returns video-level performance data:

MetricDescription
Views (play count)Total number of views
Likes (digg count)Number of likes
CommentsNumber of comments
SharesNumber of shares
Bookmarks (collect count)Number of bookmarks/saves
Create timeUnix timestamp of posting
DurationVideo length in seconds
CaptionVideo description text
HashtagsTags used in the video
MusicSong/sound information

This is where the real TikTok analytics data lives. Video-level metrics let you calculate engagement rates, identify top-performing content, and understand what drives results for a given creator.

Hashtag analytics

Search and hashtag endpoints reveal how specific tags are performing: how many videos use a hashtag, what the view counts look like, and whether usage is growing or declining.

The /tiktok/trending endpoint surfaces what is popular across TikTok right now. Filter by category to find trending videos, creators, and sounds in specific niches. This is essential for competitive intelligence and content strategy.

Building a TikTok analytics dashboard

Here is a practical Python example that pulls TikTok creator analytics data and calculates key metrics. This is the foundation for any analytics dashboard or monitoring tool.

Setup

import requests
from datetime import datetime

BASE_URL = "https://api.creatorcrawl.com/v1"
API_KEY = "your_api_key_here"

headers = {
    "x-api-key": API_KEY,
    "Content-Type": "application/json"
}

Pull profile analytics

def get_profile_analytics(handle):
    response = requests.get(
        f"{BASE_URL}/tiktok/profile",
        params={"handle": handle},
        headers=headers
    )
    data = response.json()
    user = data["userInfo"]["user"]
    stats = data["userInfo"]["stats"]

    return {
        "handle": user["uniqueId"],
        "nickname": user["nickname"],
        "verified": user.get("verified", False),
        "followers": stats["followerCount"],
        "following": stats["followingCount"],
        "total_likes": stats["heartCount"],
        "video_count": stats["videoCount"],
    }

Pull video performance data

def get_video_analytics(handle, count=30):
    response = requests.get(
        f"{BASE_URL}/tiktok/profile/videos",
        params={"handle": handle, "sort_by": "newest"},
        headers=headers
    )
    videos = response.json().get("videos", [])[:count]

    results = []
    for video in videos:
        stats = video.get("stats", {})
        results.append({
            "id": video["id"],
            "caption": video.get("desc", ""),
            "created": datetime.fromtimestamp(video["createTime"]),
            "views": stats.get("playCount", 0),
            "likes": stats.get("diggCount", 0),
            "comments": stats.get("commentCount", 0),
            "shares": stats.get("shareCount", 0),
            "bookmarks": stats.get("collectCount", 0),
            "duration": video.get("video", {}).get("duration", 0),
        })

    return results

Calculate engagement metrics

def calculate_engagement(profile, videos):
    if not videos:
        return {}

    total_views = sum(v["views"] for v in videos)
    total_interactions = sum(
        v["likes"] + v["comments"] + v["shares"] + v["bookmarks"]
        for v in videos
    )

    avg_views = total_views / len(videos)
    avg_likes = sum(v["likes"] for v in videos) / len(videos)
    avg_comments = sum(v["comments"] for v in videos) / len(videos)

    engagement_rate = (total_interactions / total_views * 100) if total_views > 0 else 0

    dates = sorted([v["created"] for v in videos])
    if len(dates) >= 2:
        span_days = (dates[-1] - dates[0]).days or 1
        posting_frequency = len(videos) / (span_days / 7)
    else:
        posting_frequency = 0

    return {
        "engagement_rate": round(engagement_rate, 2),
        "avg_views": round(avg_views),
        "avg_likes": round(avg_likes),
        "avg_comments": round(avg_comments),
        "posting_frequency_per_week": round(posting_frequency, 1),
        "total_views_last_n": total_views,
        "videos_analyzed": len(videos),
    }

Put it together

def analyze_creator(handle):
    profile = get_profile_analytics(handle)
    videos = get_video_analytics(handle, count=30)
    engagement = calculate_engagement(profile, videos)

    print(f"Creator: @{profile['handle']}")
    print(f"Followers: {profile['followers']:,}")
    print(f"Total Likes: {profile['total_likes']:,}")
    print(f"Videos Posted: {profile['video_count']}")
    print(f"Engagement Rate: {engagement['engagement_rate']}%")
    print(f"Avg Views: {engagement['avg_views']:,}")
    print(f"Avg Likes: {engagement['avg_likes']:,}")
    print(f"Posts/Week: {engagement['posting_frequency_per_week']}")

    return profile, videos, engagement

analyze_creator("charlidamelio")

This gives you a complete snapshot of any TikTok creator’s analytics. The engagement rate calculation uses views as the denominator, which is the standard approach for TikTok where not all followers see every video.

Tracking TikTok analytics over time

A single snapshot is useful, but the real value of TikTok analytics data comes from tracking changes over time. Here is how to build time-series tracking.

import json
from datetime import date

def store_snapshot(handle, profile, engagement, storage_path="snapshots.json"):
    try:
        with open(storage_path, "r") as f:
            snapshots = json.load(f)
    except FileNotFoundError:
        snapshots = {}

    if handle not in snapshots:
        snapshots[handle] = []

    snapshots[handle].append({
        "date": str(date.today()),
        "followers": profile["followers"],
        "total_likes": profile["total_likes"],
        "engagement_rate": engagement["engagement_rate"],
        "avg_views": engagement["avg_views"],
        "posting_frequency": engagement["posting_frequency_per_week"],
    })

    with open(storage_path, "w") as f:
        json.dump(snapshots, f, indent=2)

def calculate_growth(snapshots):
    if len(snapshots) < 2:
        return None

    latest = snapshots[-1]
    previous = snapshots[-2]

    follower_growth = latest["followers"] - previous["followers"]
    growth_rate = (follower_growth / previous["followers"] * 100) if previous["followers"] > 0 else 0

    return {
        "follower_growth": follower_growth,
        "growth_rate_pct": round(growth_rate, 2),
        "engagement_change": round(
            latest["engagement_rate"] - previous["engagement_rate"], 2
        ),
        "period": f"{previous['date']} to {latest['date']}",
    }

Run this daily or weekly with a cron job and you have a complete TikTok creator analytics history. This is the same approach used by professional social media monitoring tools.

Advanced analytics: Comparing creators

When evaluating multiple TikTok creators for partnerships or competitive analysis, you need side-by-side comparisons. The search endpoint makes it easy to find creators in a niche, then compare their analytics.

def compare_creators(handles):
    results = []

    for handle in handles:
        profile = get_profile_analytics(handle)
        videos = get_video_analytics(handle, count=30)
        engagement = calculate_engagement(profile, videos)

        results.append({
            "handle": handle,
            "followers": profile["followers"],
            "engagement_rate": engagement["engagement_rate"],
            "avg_views": engagement["avg_views"],
            "posting_frequency": engagement["posting_frequency_per_week"],
        })

    results.sort(key=lambda x: x["engagement_rate"], reverse=True)

    print(f"{'Handle':<20} {'Followers':>12} {'Eng Rate':>10} {'Avg Views':>12} {'Posts/Wk':>10}")
    print("-" * 66)
    for r in results:
        print(
            f"@{r['handle']:<19} {r['followers']:>12,} "
            f"{r['engagement_rate']:>9.2f}% {r['avg_views']:>12,} "
            f"{r['posting_frequency']:>10.1f}"
        )

    return results

compare_creators(["charlidamelio", "khaby.lame", "bellapoarch"])

This comparison reveals which creators drive the most engagement relative to their audience size. A creator with 500K followers and a 12% engagement rate often delivers better ROI than one with 5M followers and a 2% rate.

Benchmarking engagement rates

TikTok engagement rates vary significantly by niche and audience size. Here are typical benchmarks based on TikTok analytics data:

Follower RangeAverage Engagement Rate
Under 10K8-12%
10K to 100K5-9%
100K to 1M3-6%
1M to 10M2-4%
Over 10M1-3%

These benchmarks help contextualize the TikTok creator analytics data you pull. A 4% engagement rate for a creator with 2M followers is above average and signals strong audience loyalty.

Use cases for TikTok analytics APIs

Brand monitoring

Track mentions of your brand across TikTok by searching for relevant hashtags and monitoring video captions. Pull engagement data on videos that mention your brand to measure organic reach.

Competitor analysis

Monitor competitor accounts and their content performance. Identify which content formats and topics drive the most engagement in your space. Track their follower growth to benchmark against your own.

Campaign measurement

Before and after a campaign, snapshot the analytics for participating creators. Measure the lift in views, engagement, and follower growth that your campaign generated. Calculate cost-per-engagement and cost-per-view for each creator.

Influencer discovery

Use the /tiktok/search/users endpoint to find creators by keyword, then analyze their TikTok analytics data to identify the best partners. Filter by engagement rate, posting frequency, and audience size to find creators that match your criteria.

Content strategy

Analyze top-performing videos in your niche to understand what works. Track which video lengths, posting times, hashtags, and content themes drive the most engagement. Use the /tiktok/trending endpoint to stay ahead of trends.

Academic research

Researchers studying social media behavior, content virality, or platform dynamics can use TikTok analytics APIs to gather structured data at scale. The API approach is more reliable and reproducible than manual data collection.

Getting started

The fastest way to start pulling TikTok analytics data is through CreatorCrawl:

  1. Create a free account to get 250 API credits
  2. Grab your API key from the dashboard
  3. Use the code examples above to pull your first TikTok creator analytics
  4. Explore the full endpoint list at /endpoints/get-user-info

Every API call costs one credit. Credits never expire. No monthly subscriptions, no rate limits.

For a broader comparison of available TikTok data APIs, see our guide to the best TikTok APIs.

You can also try the free TikTok profile analyzer to see the kind of data available before writing any code.

Explore CreatorCrawl

More from the Blog