ScavioScavio
ProductPricingDocs
Sign InGet Started
  1. Home
  2. Tutorials
  3. How to Find Why Your TikTok Videos Flop (Viral Pattern Research via API)
Tutorial

How to Find Why Your TikTok Videos Flop (Viral Pattern Research via API)

Posted 5 videos, got 3,300 views, zero conversions? Pull top-performing videos in your niche via the TikTok API and reverse-engineer what actually works.

Get Free API KeyAPI Docs

If your TikToks get a few hundred views and no conversions, the fix is not 'post more memes', it is studying what already works in your exact niche and copying the structure. A game developer posted in r/gameDevMarketing that 5 meme-style videos over a month pulled about 3,364 views across TikTok, Reels, and Shorts with flat wishlist growth. The honest reply in the thread: view-to-conversion from short-form is brutally low unless you go properly viral, and meme views rarely convert. So stop guessing. The TikTok API lets you pull the top videos for your niche hashtags, read their real play, like, comment, and share counts, and reverse-engineer the hook, length, and format that actually earn engagement. Each Scavio TikTok call is 1 credit ($0.005).

Prerequisites

  • A Scavio API key (50 free credits at signup)
  • Python 3.9+ or Node 18+
  • 3-5 hashtags your target audience actually watches (not just your game's name)

Walkthrough

Step 1: Resolve your niche hashtags

Start with the hashtag endpoint to confirm a tag exists and see its scale (view_count, video_count). A tag with millions of views but few recent breakouts is saturated; a mid-size tag with fresh viral videos is where a small creator can land.

Python
import os, requests
H = {"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}", "Content-Type": "application/json"}

tag = requests.post("https://api.scavio.dev/api/v1/tiktok/hashtag",
    headers=H, json={"hashtag": "indiegame"}).json()
print(tag["data"])   # challenge_id, view_count, video_count

Step 2: Pull the top videos under each hashtag

The hashtag/videos endpoint returns videos with author info and full statistics. This is your training set: the videos your audience is actually watching and engaging with.

Python
vids = requests.post("https://api.scavio.dev/api/v1/tiktok/hashtag/videos",
    headers=H, json={"hashtag": "indiegame", "count": 30}).json()

Step 3: Rank by engagement rate, not raw views

Raw views mislead. Compute engagement rate = (digg + comment + share) / play. A video with 40k views and 5% engagement beats one with 400k views and 0.3%. This ratio is what separates content that converts from content that just gets shown.

Python
def eng_rate(v):
    s = v["statistics"]
    plays = max(s["play_count"], 1)
    return (s["digg_count"] + s["comment_count"] + s["share_count"]) / plays

ranked = sorted(vids["data"]["videos"], key=eng_rate, reverse=True)
for v in ranked[:10]:
    print(round(eng_rate(v)*100, 1), "%", v["desc"][:60])

Step 4: Read the hooks on the winners

Pull the description and first-comment patterns on the top-engagement videos. Look for the shared structure: a question hook, a before/after, a 3-second payoff. This is the format to copy, adapted to your game.

Python
top = ranked[0]
detail = requests.post("https://api.scavio.dev/api/v1/tiktok/video",
    headers=H, json={"video_id": top["id"]}).json()
comments = requests.post("https://api.scavio.dev/api/v1/tiktok/video/comments",
    headers=H, json={"video_id": top["id"], "count": 20}).json()

Step 5: Find and study the creators, not just the videos

Search creators in your niche, pull their recent posts, and see which formats they repeat. Consistency across a creator's top videos is a stronger signal than any single viral hit.

Python
users = requests.post("https://api.scavio.dev/api/v1/tiktok/search/users",
    headers=H, json={"query": "indie game dev", "count": 10}).json()
prof = requests.post("https://api.scavio.dev/api/v1/tiktok/profile",
    headers=H, json={"username": users["data"]["users"][0]["unique_id"]}).json()
posts = requests.post("https://api.scavio.dev/api/v1/tiktok/user/posts",
    headers=H, json={"sec_user_id": prof["data"]["user"]["sec_uid"], "count": 20}).json()

Python Example

Python
import os, requests
H = {"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}", "Content-Type": "application/json"}

def top_by_engagement(hashtag, n=10):
    vids = requests.post("https://api.scavio.dev/api/v1/tiktok/hashtag/videos",
        headers=H, json={"hashtag": hashtag, "count": 50}).json()
    def rate(v):
        s = v["statistics"]; plays = max(s["play_count"], 1)
        return (s["digg_count"] + s["comment_count"] + s["share_count"]) / plays
    return sorted(vids["data"]["videos"], key=rate, reverse=True)[:n]

for v in top_by_engagement("indiegame"):
    print(v["desc"][:70])

JavaScript Example

JavaScript
import { Scavio } from "scavio";
const client = new Scavio({ apiKey: process.env.SCAVIO_API_KEY });

async function topByEngagement(hashtag, n = 10) {
  const vids = await client.tiktok.hashtagVideos({ hashtag, count: 50 });
  const rate = v => {
    const s = v.statistics, plays = Math.max(s.play_count, 1);
    return (s.digg_count + s.comment_count + s.share_count) / plays;
  };
  return vids.data.videos.sort((a, b) => rate(b) - rate(a)).slice(0, n);
}
console.log((await topByEngagement("indiegame")).map(v => v.desc.slice(0, 70)));

Expected Output

JSON
POV: you shipped your first game and nobody downloaded it...
day 47 of making a game about a sentient toaster...
i spent 2 years on this boss fight, was it worth it?...

Related Tutorials

    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.

    A Scavio API key (50 free credits at signup). Python 3.9+ or Node 18+. 3-5 hashtags your target audience actually watches (not just your game's name). 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 Search API for Content Research in 2026

    Read more
    Best Of

    Best TikTok Hashtag Analytics APIs (2026)

    Read more
    Use Case

    TikTok Video Search for Content Research

    Read more
    Use Case

    TikTok Content Optimization via API Data

    Read more
    Glossary

    TikTok Unofficial API

    Read more
    Glossary

    TikTok Content Performance via API

    Read more

    Start Building

    Posted 5 videos, got 3,300 views, zero conversions? Pull top-performing videos in your niche via the TikTok API and reverse-engineer what actually works.

    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