← Back to blogTutorial

How to Find Trending TikTok Creators and Hashtags in Your Niche

· 11 min read

For brand marketers running creator partnerships, and for creators planning where to plant their own content, the most valuable signal on TikTok is who is about to break out — not who already has. By the time a creator's rate card hits four figures per video, the window is closed. The window opens earlier: when a 10k–50k follower account starts posting videos that pull views well above their follower count, the algorithm is amplifying them and follower growth is about to catch up. The same logic applies to hashtags — usage spikes precede mainstream awareness by two to six weeks, and a hashtag growing 40% week-over-week is the leading edge of a trend.

This guide walks the full pipeline for detecting those signals in any niche. Search a niche keyword or hashtag, pull the top-performing posts and the creators behind them, deep-profile each creator to get the metrics that matter, and compare against a baseline. The output is a ranked shortlist of rising creators and trending hashtags — the kind of list that drives a media-buying decision or a content calendar.

Why View-to-Follower Ratio Is the Leading Indicator

The metrics most third-party creator-discovery platforms surface — follower count, total likes, "engagement rate" calculated as (likes + comments) / followers — are lagging. They tell you who was growing six to twelve weeks ago, which is when the platforms last refreshed their indices. By the time the rate card has been quoted to ten other brands, the collab price has tripled.

View-to-follower ratio is different. If a creator with 12,000 followers posts a video that gets 400,000 views, that is a ratio of 33×. TikTok's For You Page does not amplify videos like that by accident — it is the explicit signal that the algorithm has decided to push the creator into wider distribution. The follower count will catch up over the next two to four weeks. The collab rate will catch up after that.

The practical rule of thumb for a rising-creator filter:

  • Median view-to-follower ratio of the last 10 posts ≥ 5× — the median, not the maximum, so one fluke video does not pull a bad creator into the list.
  • Absolute view floor of 50,000 on the median post — protects against the "1,000-follower account with a 30× ratio because they get 30,000 views on each video" case, which is real but not media-buyable.
  • At least 8 posts in the last 30 days — excludes dormant or one-hit accounts.

Combine those three and you have a usable shortlist. Everything in this guide is plumbing for getting the raw numbers cheaply enough to evaluate hundreds of creators at once.

What TikTok Actually Returns Per Profile

The /api/v1/social/tiktok/deep_profile endpoint is the workhorse — one call returns the profile metadata plus the most recent posts in a single payload:

FieldExample
usernamejessbakeshome
nicknameJess Bakes
biosourdough + slow food in Portland
followers47823
following312
total_likes1840221
verifiedfalse
regionUS
posts[].id7384562910874523648
posts[].caption"easiest no-knead loaf you'll ever make"
posts[].views287400
posts[].likes18421
posts[].comments643
posts[].shares2104
posts[].created_at2026-05-19T14:22:08Z
posts[].duration_s47
posts[].hashtags["sourdough", "breadtok", "slowfood"]

The posts[] array gives you everything needed to compute view-to-follower ratio per post and a 30-day median in one pass. Crucially, every post carries its own hashtag list, which means deep-profiling one creator also gives you the hashtags they are riding — useful both for finding adjacent creators and for building the hashtag trend index covered later.

Step 1 — Search the Niche

Every pipeline starts with a niche keyword or hashtag. The /api/v1/social/tiktok/search endpoint takes a tagname and returns the posts TikTok currently ranks for it — which is also the implicit list of creators currently winning the topic:

curl -G "https://api.logposervices.com/api/v1/social/tiktok/search" \
  -H "X-API-Key: lp_xxxxxxx" \
  --data-urlencode "tagname=sourdough" \
  --data-urlencode "limit=50"
# → {"job_id": "tt_8a2c..."}

curl -H "X-API-Key: lp_xxxxxxx" \
  "https://api.logposervices.com/api/v1/jobs/tt_8a2c?wait=true&timeout=60"

curl -H "X-API-Key: lp_xxxxxxx" \
  https://api.logposervices.com/api/v1/jobs/tt_8a2c/result

The tagname accepts a hashtag (sourdough, breadtok) or a free-text niche term (home bakery). Hashtag results bias toward posts using that exact tag; free-text results bias toward TikTok's keyword-match against captions and creator bios. For a clean niche scan, run both and merge.

The result includes the post-level engagement plus the username of the creator who posted it. That username list — typically 20–50 unique creators per search — is the input to step two.

Step 2 — Deep-Profile Each Creator

For each creator returned by the search, pull their full profile and recent posts. The endpoint is /api/v1/social/tiktok/deep_profile, which takes a username and a limit controlling how many recent posts to fetch:

curl -G "https://api.logposervices.com/api/v1/social/tiktok/deep_profile" \
  -H "X-API-Key: lp_xxxxxxx" \
  --data-urlencode "username=jessbakeshome" \
  --data-urlencode "limit=40"

limit=40 is the sweet spot for trend detection — it covers the last one to three months of activity on most active creators, which is where the view-to-follower signal lives. Going higher pulls in older posts that dilute the recent-trend median.

For lighter scans where you only need follower count and bio (e.g. to dedupe a candidate list before deep-profiling), /api/v1/social/tiktok/profileinfo is cheaper — pass the userid and get back the profile metadata only.

The Full Python Pipeline

This is the script most teams end up running on a weekly cron. It takes one niche keyword, finds the creators currently ranking for it, deep-profiles each, computes the rising-creator metrics, and writes a ranked CSV.

import os, time, csv, statistics, requests

API_KEY = os.environ["LOGPOSE_API_KEY"]
BASE = "https://api.logposervices.com/api/v1"
HEADERS = {"X-API-Key": API_KEY}


def submit_and_wait(path: str, params: dict, timeout_s: int = 180) -> dict:
    r = requests.get(f"{BASE}/{path}", params=params, headers=HEADERS, timeout=30)
    r.raise_for_status()
    job_id = r.json()["job_id"]
    deadline = time.time() + timeout_s
    while time.time() < deadline:
        s = requests.get(f"{BASE}/jobs/{job_id}", headers=HEADERS, timeout=15).json()
        if s["status"] == "completed":
            break
        if s["status"] == "failed":
            raise RuntimeError(s.get("error", "unknown failure"))
        time.sleep(3)
    else:
        raise TimeoutError(f"job {job_id} did not finish in {timeout_s}s")
    return requests.get(f"{BASE}/jobs/{job_id}/result", headers=HEADERS, timeout=15).json()


def search_niche(tagname: str, limit: int = 50) -> list[str]:
    data = submit_and_wait(
        "social/tiktok/search",
        {"tagname": tagname, "limit": limit},
    )
    seen, usernames = set(), []
    for post in data.get("posts", []):
        u = post.get("username")
        if u and u not in seen:
            seen.add(u)
            usernames.append(u)
    return usernames


def deep_profile(username: str, limit: int = 40) -> dict:
    return submit_and_wait(
        "social/tiktok/deep_profile",
        {"username": username, "limit": limit},
    )


def score_creator(profile: dict) -> dict:
    followers = max(profile.get("followers", 0), 1)
    posts = profile.get("posts", [])[:10]
    if len(posts) < 5:
        return {"score": 0, "median_views": 0, "ratio": 0, "post_count": len(posts)}
    views = [p.get("views", 0) for p in posts]
    median_views = statistics.median(views)
    ratio = median_views / followers
    return {
        "username": profile.get("username"),
        "followers": followers,
        "median_views": int(median_views),
        "ratio": round(ratio, 2),
        "post_count": len(posts),
        "score": round(ratio * (median_views / 50_000), 2),
    }


def run_pipeline(niche: str, out_path: str) -> int:
    usernames = search_niche(niche, limit=50)
    scored = []
    for u in usernames:
        try:
            profile = deep_profile(u, limit=40)
            row = score_creator(profile)
            if row["median_views"] >= 50_000 and row["ratio"] >= 5:
                scored.append(row)
        except Exception as e:
            print(f"skip {u}: {e}")
            continue

    scored.sort(key=lambda r: r["score"], reverse=True)
    with open(out_path, "w", newline="", encoding="utf-8") as f:
        w = csv.DictWriter(
            f,
            fieldnames=["username", "followers", "median_views", "ratio", "post_count", "score"],
            extrasaction="ignore",
        )
        w.writeheader()
        for r in scored:
            w.writerow(r)
    return len(scored)


if __name__ == "__main__":
    n = run_pipeline(niche="sourdough", out_path="rising_sourdough.csv")
    print(f"wrote {n} rising creators")

Run it once and the output is a ranked shortlist of creators in the niche who are currently being amplified by the algorithm beyond their follower count. Run it weekly and the rank changes are the trend.

Step 3 — Building the Hashtag Trend Index

The same deep-profile data feeds a hashtag trend index. Every post carries a hashtags[] array, so aggregating across all the deep-profiles in a niche gives you a usage frequency per hashtag. Compare this week's index to last week's snapshot and the rising tags surface themselves:

from collections import Counter
from datetime import datetime, timedelta, timezone

def hashtag_index(usernames: list[str], days: int = 7) -> Counter:
    cutoff = datetime.now(timezone.utc) - timedelta(days=days)
    counter = Counter()
    for u in usernames:
        try:
            profile = deep_profile(u, limit=40)
        except Exception:
            continue
        for post in profile.get("posts", []):
            try:
                ts = datetime.fromisoformat(post["created_at"].replace("Z", "+00:00"))
            except (KeyError, ValueError):
                continue
            if ts < cutoff:
                continue
            for tag in post.get("hashtags", []) or []:
                counter[tag.lower()] += 1
    return counter

# Compare week-over-week
this_week = hashtag_index(usernames, days=7)
last_week = hashtag_index(usernames, days=14)  # then subtract this_week
# rising = tags where this_week / max(last_week - this_week, 1) >= 1.4

The hashtags growing 40% week-over-week are typically two to six weeks ahead of when they show up in TikTok's official "Trending" tab — which is the window where they are still useful for organic content placement.

Two refinements make the hashtag index more reliable. First, exclude evergreen tags from the comparison — fyp, foryou, viral, tiktok, and the niche's own anchor tag (sourdough if the niche is sourdough) will dominate every snapshot and add no signal. Maintain a blocklist of those generic tags and skip them at aggregation time. Second, weight each hashtag occurrence by the post's view count, not just count of posts. A tag appearing on three posts that each pulled 500k views is more meaningful than a tag appearing on twelve posts that each pulled 8k views. The view-weighted index surfaces the tags actually being amplified, not just the tags being typed into captions.

For creators planning their own content calendar rather than running brand-marketing audits, the hashtag index is the half of the pipeline that matters most. Identify the three to five rising tags in the niche each week, work them into the next round of content, and the algorithmic amplification effect compounds — TikTok's For You ranking treats hashtag usage as a topic signal, and posting against a tag while it is rising puts the content in front of an audience that is being actively grown.

Step 4 — Single-Post Spot Checks

When a specific video looks interesting — a competitor's launch post, a viral clip in the niche — pull metrics on it directly with /api/v1/social/tiktok/postinfo, which takes the post's mediaid:

curl -G "https://api.logposervices.com/api/v1/social/tiktok/postinfo" \
  -H "X-API-Key: lp_xxxxxxx" \
  --data-urlencode "mediaid=7384562910874523648"

For deeper qualitative analysis — what audiences are actually saying about a video — /api/v1/social/tiktok/comments pulls the comment thread keyed on the same mediaid:

curl -G "https://api.logposervices.com/api/v1/social/tiktok/comments" \
  -H "X-API-Key: lp_xxxxxxx" \
  --data-urlencode "mediaid=7384562910874523648" \
  --data-urlencode "limit=100"

Comments are the field where brand sentiment actually shows up. A creator whose comments are heavily questions about "where did you get that?" is one who converts on product mentions; a creator whose comments are heavily commentary about the creator themselves converts less well. The signal is qualitative but consistent across categories — pull 100 comments on five of a creator's recent posts, scan for "link?", "where from?", "what brand?", and the comment-to-product-query ratio is a usable predictor of how a paid collab will perform before any contract is signed.

Cleaning the Output for Brand Use

A 50-creator deep-profile run typically produces 8–15 creators passing the rising filter. Three quality steps make the shortlist actually usable:

import pandas as pd

df = pd.read_csv("rising_sourdough.csv")

# 1. Cap the upper follower band — collab rates above 200k followers
#    are usually outside indie-brand budgets
df = df[df["followers"] <= 200_000]

# 2. Floor the lower band — too small to move product
df = df[df["followers"] >= 5_000]

# 3. Sort by score (ratio weighted by absolute reach) descending
df = df.sort_values("score", ascending=False)

df.to_csv("rising_sourdough_clean.csv", index=False)

The 5k–200k follower band is where most brand-creator collab programs operate. Below 5k the absolute reach is too low to justify the operational overhead per collab; above 200k the rate card crosses the threshold where most performance-marketing teams move budget to paid ads instead.

One nuance worth knowing: the ratio threshold should shift with the niche. Fashion and beauty creators typically run lower median view-to-follower ratios (2–4×) because the audience density on those topics is enormous and TikTok distributes views thinly across many creators. Niche verticals — sourdough, woodworking, indie tabletop games, vintage cars — run higher ratios (8–20×) because the algorithm has fewer creators competing for the same audience pool, so when it picks a winner the amplification is sharper. Calibrate the ratio >= 5 threshold against the niche's own baseline: pull the median ratio for the top 30 creators in the niche, set the rising-creator floor at 1.5× that baseline, and the filter adapts to the category dynamics automatically.

Scaling Beyond a Single Niche

One niche keyword scan gives you a category snapshot. To run a multi-niche program — say a beverage brand tracking "smoothies", "matcha", "mocktails", and "kombucha" in parallel — submit the searches as a bulk job and let the platform schedule across the proxy pool:

requests.post(
    "https://api.logposervices.com/api/v1/social/tiktok/search/bulk",
    headers={"X-API-Key": os.environ["LOGPOSE_API_KEY"]},
    json={
        "targets": [
            {"tagname": "smoothies", "limit": 50},
            {"tagname": "matcha", "limit": 50},
            {"tagname": "mocktails", "limit": 50},
            {"tagname": "kombucha", "limit": 50},
        ],
    },
).raise_for_status()

The deep-profile step is also bulk-capable on /api/v1/social/tiktok/deep_profile/bulk — feed in the deduped username list from all four searches in one call, and the parallel execution cuts what would be a 30-minute sequential sweep down to two or three minutes wall-clock.

For a recurring weekly index — re-running the same niche pipeline and surfacing only the deltas — store the previous run's CSV and diff on username plus score. A rising creator with a 40% week-over-week jump in their score is the alert that goes to the brand-partnerships team. Full walkthrough of the diff-loop pattern in the web scraping API guide, which covers the same logic generalized across platforms. For the equivalent workflow on Instagram (rising creators by reels view-to-follower), see the Instagram scraping guide — the metrics and thresholds are slightly different but the pipeline shape is identical.

Legality and Ethics

TikTok profile and post metrics are public and unauthenticated. Scraping them for internal market research, creator discovery, and trend analysis is on the same legal footing as scraping any other public web data. The risk surface for a brand-marketing program is downstream of the scrape — running paid ads featuring a creator's likeness without a license, screenshotting a creator's video in a marketing deck without permission, or storing personal data of users who left comments on a post in a way that triggers GDPR. The aggregate metrics in this guide (follower counts, view counts, hashtag frequencies) are not personal data and do not trigger those regimes. The cold-DM outreach to creators that often follows is the part that needs the actual compliance review.

Common Mistakes

  • Using the wrong identifier parameter. TikTok endpoints use username (profile and posts), tagname (search), mediaid (single post and comments), and userid (lightweight profile lookup). Confusing mediaid with a post URL is the most common 400-error cause — extract the numeric ID from the URL (/video/73845629108745236487384562910874523648).
  • Filtering on follower count alone. This is the lagging-indicator trap discussed at the top — every creator-discovery platform makes this mistake, which is exactly why a custom pipeline outperforms them.
  • Comparing absolute view counts across creators. A 100k-view video on a 5k-follower account is a different signal from a 100k-view video on a 5M-follower account. Always normalize on view-to-follower ratio, not raw views.
  • Treating one post as a signal. Algorithm amplification is real, but so are flukes. Use the median of the last 10 posts as the floor, not the maximum.
  • Ignoring the Cloudflare 100-second edge timeout. api.logposervices.com sits behind Cloudflare, so a job that takes 100+ seconds returns a 524 to your client even though the job continues server-side. Always poll for status; never expect a synchronous response on a deep-profile sweep across 50 creators.
  • Sampling a niche only once before drawing conclusions. One snapshot of the top creators in a niche is a noisy signal — TikTok's For You ranking shuffles which posts surface for any given search at different times of day and across geographies. Run the niche scan three times across a week and merge the candidate username lists; the creators who appear in all three are the ones reliably ranking, not the ones who happened to be amplified during a single five-minute scrape.
  • Scraping too aggressively from a single IP. Even with the managed API's residential rotation handling the public-endpoint pacing, the upstream creator audit pattern is to space deep-profile calls across the bulk endpoint rather than firing them back-to-back from a tight Python loop. The bulk submission also returns a single parent job_id you can poll once, instead of tracking 50 individual jobs by hand — operationally cleaner and the same wall-clock time.

Get Started

  1. Sign up at logposervices.com and generate an API key under Tool → API Keys.
  2. export LOGPOSE_API_KEY=lp_xxxxxxx
  3. Pick a niche keyword and run the Python pipeline above against it.

Related reading: the Instagram scraping guide for the equivalent creator-discovery workflow on Instagram, and the web scraping API guide for the broader DIY-vs-managed comparison and the recurring-refresh diff pattern that turns this one-shot script into a weekly trend index.

External: TikTok, hiQ Labs v. LinkedIn.

Frequently asked questions

Is it legal to scrape TikTok?
TikTok profiles, posts, view counts, and hashtag pages are public — visible without authentication to anyone with the URL. Scraping public web data is settled US law under the hiQ Labs v. LinkedIn line of cases (9th Cir. 2022), where the CFAA was found not to apply to public, unauthenticated content. TikTok's Terms of Service prohibit unauthorized use of the underlying private APIs and scraped data resale, but the act of reading public profile and post counts for internal market research is not where enforcement happens. The actual risk surface for a brand-marketing program sits downstream — using a creator's likeness in paid ads without a license, or storing personal data of users who commented on a post. Read counts and follower counts are aggregate metrics, and well outside that risk.
What's the right rising-creator signal — followers, engagement, or view-to-follower ratio?
Follower count alone is a lagging indicator and biases toward creators who already cost too much to collab with. Raw engagement (likes + comments) scales with follower count, so it picks the same accounts. The leading indicator is view-to-follower ratio on recent posts — when a 12k-follower account drops a video that pulls 400k views, the algorithm is amplifying them and follower growth is two to four weeks behind. Filter for creators where the median of the last 10 posts exceeds 5× their follower count, and you will catch most rising-tier accounts inside the window where collab rates are still negotiable. Backstop that with absolute view floor (50k+ on the median post) so you exclude tiny accounts with one fluke video.
How recent does TikTok let me pull posts from a creator?
TikTok's public profile feed is reverse-chronological and returns all posts a creator has not deleted, going back to account creation. The `/api/v1/social/tiktok/posts` endpoint pulls up to 100 most-recent posts in one call, which on an active creator is roughly the last 2–6 months of activity. For a rising-creator audit, the recent 30–50 are what matters — older posts predate whatever algorithmic moment is driving current growth, and including them dilutes the view-to-follower median. If you need historical data beyond 100 posts, page through with sequential calls — but for trend detection, recent-only is the cleaner signal.
What's the realistic update lag on follower counts and post views?
TikTok updates follower counts on profile pages within minutes of the change being recorded server-side, and view counts on posts within seconds. The lag you actually see in a scraped data set comes from how often you re-run the scrape — once a day is enough for a brand-marketing trend program, since week-over-week is the comparison timeframe that matters. Pull daily for two weeks, store the snapshots, and the view-to-follower ratio trendline will be more accurate than what any third-party creator-discovery platform shows, because those platforms update on weekly cycles and miss the inflection points entirely.
How do I avoid rate-limiting when scraping many creators?
TikTok rate-limits aggressively on the unauthenticated web endpoints, which is why a DIY scraping script that works for ten accounts breaks at fifty. The mitigation is a residential proxy pool with per-request IP rotation, a session-cookie pool warmed against real geographic IPs, and 3–6 second jitter between requests so the traffic pattern does not look like a script. All three are handled inside the managed API in this guide — submit jobs, poll for completion, and the rotation happens server-side. For a 100-creator audit, that means one bulk submission instead of 100 carefully-paced individual calls, and the platform handles the pacing automatically.

Related posts

Tutorial

How to Monitor Amazon BuyBox Changes (and Get Alerted When You Lose It)

9 min read
Tutorial

How to Track Amazon Competitor Prices Daily (Export to CSV and Google Sheets)

10 min read
Tutorial

How to Enrich Business Leads with Emails, Phones, and Socials

12 min read