Tiktok Trend Discovery Scraper avatar

Tiktok Trend Discovery Scraper

Pricing

from $1.60 / 1,000 video records

Go to Apify Store
Tiktok Trend Discovery Scraper

Tiktok Trend Discovery Scraper

TikTok Trend & Discovery Scraper extracts trending TikTok videos, hashtags, creators, and discovery data. Use it to monitor trends, find viral content early, analyze momentum, and power research, alerts, analytics, and AI workflows.

Pricing

from $1.60 / 1,000 video records

Rating

0.0

(0)

Developer

Delowar Munna

Delowar Munna

Maintained by Community

Actor stats

0

Bookmarked

38

Total users

8

Monthly active users

12 hours ago

Last modified

Share

TikTok Trend & Discovery Scraper

Discover what's trending on TikTok — scrape hashtags, topics, and viral videos into structured datasets for research, content planning, and AI analysis.

TikTok Trend & Discovery Scraper

What does this actor do?

TikTok Trend & Discovery Scraper is an Apify Actor that helps you discover trending content on TikTok by scraping search results and hashtag pages. It collects structured, analytics-ready data you can use for trend monitoring, content ideation, competitive research, and AI-powered workflows.

It extracts two types of records:

  • Video records — video metadata, engagement metrics (plays, likes, comments, shares, saves), author info, hashtags, and computed scores
  • Hashtag records — hashtag entity data with view counts, video counts, and descriptions

Every record is tagged with the input query that produced it, making it easy to compare results across keywords and hashtags.

Why use this actor?

  • Trend intelligence, not just scraping — discover what's trending across keywords, hashtags, and topics in a single run
  • Normalized output — consistent schema across all discovery modes, ready for CSV, JSON, or API consumption
  • Engagement scoring — computed fields like engagementTotal, engagementRateProxy, and discoveryScore help you identify viral content instantly
  • Multi-source discovery — combine keyword searches and hashtag pages in one run
  • AI-ready datasets — feed results into clustering, summarization, trend scoring, and reporting pipelines
  • Part of a suite — pairs with TikTok Video Scraper and TikTok Comment Scraper for a full discovery-to-analysis workflow

Input

ParameterTypeDefaultDescription
resultTypestring"videos"What the run outputs: videos, hashtags, sounds, creators, or a global sound chart (musicChartViral50 / musicChartTop50). See Result types
searchQueriesstring[]Keywords or topics to discover trending content for
hashtagsstring[]Hashtags to inspect (with or without #)
startUrlsobject[][]Direct URLs — optional TikTok URLs to scrape directly: keyword search (/search?q=), hashtag (/tag/<name>), or a single video (/@user/video/<id>, returned as one video record)
resultsPerQueryinteger50Maximum results per keyword or hashtag (1–500). A ceiling, not a guarantee — see Limits
sortBystring"default"Requested sort for keyword searches: default, relevance, latest, popular. Best-effort — TikTok may ignore it
enrichAuthorStatsbooleanfalseFetch each creator's full profile — followers, likes, bio, business email, TikTok Shop status. The only setting that adds a charge — see Pricing

No proxy setting, and none needed. This actor talks to TikTok through a hosted API rather than driving a browser, so there is nothing to configure — no proxy, no account, no cookies. Just enter what you want to discover and run it.

Result types

A run returns one kind of record, so the dataset is a clean table that exports straight to CSV or Google Sheets. Pick the one you want with resultType:

resultTypeYou getUse it for
videos (default)The trending videos themselves — engagement, author, music, computed scoresTrend monitoring, viral content research
hashtagsFor each keyword, the hashtags TikTok ranks for it, with real view and video counts. For each hashtag you list, its entity recordHashtag research, campaign planning, finding the right tags before you post
soundsThe sounds driving your keywords and hashtags, ranked by how many of the discovered videos use themFinding the audio behind a niche trend before it saturates
creatorsThe creators driving your keywords and hashtags, ranked by the engagement they pulled within that trend — with full profiles (followers, bio, links, business email, TikTok Shop status)Influencer discovery, outreach, finding who is actually moving a topic
musicChartViral50TikTok's own global Viral 50 sound chart (breakout — sounds gaining fast), with rank movementCatching mainstream sounds before they peak. ⚠️ A fixed global chart — it ignores your keywords and hashtags
musicChartTop50TikTok's own global Top 50 sound chart (most used), with rank movementTracking the biggest mainstream sounds. ⚠️ A fixed global chart — it ignores your keywords and hashtags

Both charts are fixed global leaderboards capped at 50 sounds; set resultsPerQuery below 50 to return fewer.

sounds and creators are derived from the videos your query finds, so they answer "what's driving this trend" — not "what's big on TikTok globally". That's a question the global-chart scrapers can't answer. Raise resultsPerQuery to widen the sample they're built from.

Tip for sounds: most videos carry the creator's own audio, so the list is dominated by one-use "original sound" entries. Filter on isOriginalSound: false to see only reusable tracks — the ones you can actually make a video with.

Each record type has its own per-record price (see Pricing) — a hashtag row costs less than a video, a creator row more (it includes a full profile) — and you're only charged for records actually collected. Creator enrichment is the only setting that adds a charge.

You are only charged for what you ask for. searchQueries and hashtags have no default values — supply either one, or both, and only those are scraped. The form starts with trending as an example keyword; clear it if you only want to scrape hashtags, or it will be scraped (and charged) alongside them.

Sample input: Keyword discovery

Discover trending content around specific topics.

{
"searchQueries": ["ai tools", "productivity hacks", "skincare routine"],
"resultsPerQuery": 30,
"sortBy": "popular"
}

Sample input: Hashtag + keyword mixed discovery

Combine hashtag and keyword discovery in a single run to compare trends across topics.

{
"searchQueries": ["electric vehicles", "sustainable energy"],
"hashtags": ["tesla", "rivian", "evlife"],
"resultsPerQuery": 50,
"sortBy": "default"
}

Sample input: Hashtag research

Find the hashtags TikTok ranks for your topics, with their real view and video counts.

{
"resultType": "hashtags",
"searchQueries": ["ai tools", "productivity hacks"],
"hashtags": ["booktok"]
}

Sample input: Creators behind a trend

Find who is actually driving a topic — ranked by the engagement they pulled within it, with full profiles and public contact details.

{
"resultType": "creators",
"searchQueries": ["skincare routine"],
"resultsPerQuery": 100
}

Sample input: Sounds in your niche

Find the audio behind a trend. Filter the output on isOriginalSound: false for reusable tracks.

{
"resultType": "sounds",
"hashtags": ["dancetrend"],
"resultsPerQuery": 100
}

Sample input: TikTok's global Viral 50 chart

Breakout sounds, TikTok-wide. Needs no keywords — it's a fixed chart.

{
"resultType": "musicChartViral50"
}

Output

A run outputs one record type, selected by resultType, so the dataset is always a clean table with no blank columns — it exports straight to CSV, Excel, or Google Sheets. Every record carries a recordType field (video, hashtag, sound, or creator).

Five dataset views are available:

  • Videos — full video details with engagement and author data
  • Hashtags — hashtag entity records with view and video counts
  • Engagement — video engagement metrics and computed scores
  • Sounds — sounds driving your trend (or a global chart), ranked by usage/performance
  • Creators — creators driving your trend, with profile and in-trend engagement

TikTok Trend & Discovery Scraper — Output Overview Table View

Video record example

Real record from a resultType: "videos" run for skin care. The author… profile block at the end (from authorFollowingCount onward) appears only when enrichAuthorStats is enabled; long image URLs are trimmed here for readability.

{
"recordType": "video",
"inputType": "searchQuery",
"inputValue": "skin care",
"position": 1,
"collectedAt": "2026-07-15T01:12:21.758Z",
"sourceUrl": "https://www.tiktok.com/search/video?q=skin%20care",
"sourceType": "search",
"videoId": "7656661163404528910",
"videoUrl": "https://www.tiktok.com/@smilegirlyp0p/video/7656661163404528910",
"description": "skincare routine 😅🫶🫧🧴#skincareroutine #skincare #skincareproducts #glassskin @rhode skin @AquaphorUS @LaRochePosayUS @GARNIER @Kiehl's Since 1851 ",
"createTime": "2026-06-29T03:56:11.000Z",
"duration": 187,
"region": "US",
"language": "en",
"musicId": "7656661236507052814",
"musicTitle": "original sound - smilegirlyp0p",
"musicAuthorName": "B",
"musicIsOriginal": true,
"authorId": "7608740457904309262",
"authorUniqueId": "smilegirlyp0p",
"authorNickname": "B",
"authorProfileUrl": "https://www.tiktok.com/@smilegirlyp0p",
"authorAvatarUrl": "https://...",
"authorVerified": false,
"authorFollowerCount": 26420,
"authorHeartCount": 3709693,
"authorVideoCount": 468,
"likeCount": 82031,
"commentCount": 264,
"shareCount": 1567,
"playCount": 488991,
"saveCount": 19532,
"repostCount": 0,
"hashtags": ["skincareroutine", "skincare", "skincareproducts", "glassskin"],
"mentions": ["rhode", "AquaphorUS", "LaRochePosayUS", "GARNIER", "Kiehl"],
"thumbnailUrl": "https://...",
"coverUrl": "https://...",
"isAd": false,
"isPinned": false,
"isSponsored": false,
"engagementTotal": 103394,
"engagementRateProxy": 0.211444,
"discoveryScore": 25.81,
"authorFollowingCount": 8,
"authorSignature": "👋💗\nbanned at 4 gazillion\n💌: smilegirlypop@gmail.com\nig | brelizjohns",
"authorBioUrl": null,
"authorBioEmail": null,
"authorCategory": null,
"authorSecUid": "MS4wLjABAAAAnrwhlfkfHqD42pyNBp9Z6vPOmTIaG_RNJAf2zehRP4zTqMCyhElAGkIDs_t1mm7h",
"authorIsPrivate": false,
"authorIsCommerce": false,
"authorAccountType": 0
}

Direct-URL (single video) example

When you pass a /@user/video/<id> permalink in Direct URLs, you get that one video as a normal video record — with inputType: "url" and sourceType: "video":

{
"recordType": "video",
"inputType": "url",
"inputValue": "https://www.tiktok.com/@kalar.lay735/video/7662324501635517717",
"position": 1,
"sourceUrl": "https://www.tiktok.com/@kalar.lay735/video/7662324501635517717",
"sourceType": "video",
"videoId": "7662324501635517717",
"videoUrl": "https://www.tiktok.com/@kalar.lay735/video/7662324501635517717",
"description": "ဂွတို အပိုင်း (19) #aicreator #aivideo #fyp ",
"region": "TH",
"language": "my",
"likeCount": 120452,
"commentCount": 1256,
"shareCount": 1262,
"playCount": 566394,
"saveCount": 10130,
"engagementTotal": 133100,
"discoveryScore": 25.84
}

(Remaining fields match a normal video record — trimmed here.)

Hashtag record example

{
"recordType": "hashtag",
"inputType": "searchQuery",
"inputValue": "skin care",
"position": 1,
"collectedAt": "2026-07-15T01:14:15.704Z",
"sourceUrl": "https://www.tiktok.com/search/video?q=skin%20care",
"sourceType": "search",
"hashtag": "SkinCare",
"hashtagTitle": "SkinCare",
"hashtagUrl": "https://www.tiktok.com/tag/SkinCare",
"viewCount": 943707896892,
"videoCount": 55602410,
"coverImageUrl": null,
"description": "From routines to glow ups, discover how the skincare community on TikTok keeps their skin cared for."
}

Sound record example (resultType: "sounds")

A sound driving your query, derived from the run's own videos (soundSource: "niche"). Filter on isOriginalSound: false to see only reusable tracks.

{
"recordType": "sound",
"soundSource": "niche",
"inputType": "searchQuery",
"inputValue": "skin care",
"position": 1,
"collectedAt": "2026-07-15T01:16:04.303Z",
"sourceUrl": "https://www.tiktok.com/search/video?q=skin%20care",
"sourceType": "search",
"musicId": "7413262715211171856",
"musicTitle": "Sakura-lined street",
"musicAuthorName": "KCNX",
"musicUrl": "https://www.tiktok.com/music/sakura-lined-street-7413262715211171856",
"isOriginalSound": false,
"videosInTrend": 2,
"totalPlays": 13579738,
"totalLikes": 761526,
"totalShares": 22825,
"totalEngagement": 942138,
"avgDiscoveryScore": 12.79,
"topVideoId": "7642767344799845645",
"topVideoUrl": "https://www.tiktok.com/@thedaninicolee/video/7642767344799845645"
}

Global sound chart example (resultType: "musicChartViral50" / "musicChartTop50")

TikTok's own leaderboard (soundSource: "chart"). A fixed global chart — no keywords, capped at 50.

{
"recordType": "sound",
"soundSource": "chart",
"inputType": "musicChart",
"inputValue": "viral50",
"position": 1,
"collectedAt": "2026-07-15T01:05:04.978Z",
"sourceUrl": "https://www.tiktok.com/music",
"sourceType": "musicChart",
"musicId": "7649983963347994640",
"musicTitle": "honeybee",
"musicAuthorName": "Olivia Rodrigo",
"musicAlbum": "you seem pretty sad for a girl so in love",
"musicUrl": "https://www.tiktok.com/music/honeybee-7649983963347994640",
"duration": 60,
"language": "English",
"isCommerceMusic": true,
"videoCount": 705783,
"coverImageUrl": "https://...",
"playUrl": "https://...",
"rank": 1,
"trend": 4
}

Creator record example (resultType: "creators")

Ranked by the engagement they pulled within your trend, with full profile. Long image URLs are trimmed here.

{
"recordType": "creator",
"inputType": "searchQuery",
"inputValue": "skin care",
"position": 1,
"collectedAt": "2026-07-15T01:19:34.081Z",
"sourceUrl": "https://www.tiktok.com/search/video?q=skin%20care",
"sourceType": "search",
"creatorId": "6653940409209094149",
"creatorUniqueId": "jennileeashlee",
"creatorNickname": "jennilee • thatacnegirlie",
"creatorProfileUrl": "https://www.tiktok.com/@jennileeashlee",
"creatorAvatarUrl": "https://...",
"creatorVerified": false,
"videosInTrend": 1,
"totalPlays": 13000007,
"totalLikes": 696821,
"totalShares": 21424,
"totalEngagement": 859462,
"avgDiscoveryScore": 8.01,
"topVideoId": "7628054620165770509",
"topVideoUrl": "https://www.tiktok.com/@jennileeashlee/video/7628054620165770509",
"followerCount": 339287,
"heartCount": 34024068,
"videoCount": 4223,
"followingCount": 317,
"signature": "a whole lotta nonsense\nand some skincare stuff\n🇵🇭🩺☕️ | new york",
"bioUrl": "https://beacons.ai/jennileeashlee",
"bioEmail": null,
"category": null,
"isPrivate": false,
"isCommerce": false,
"accountType": 0,
"secUid": "MS4wLjABAAAAg4INk8X7WMxDQl6rERYxEsG1PX1EGolskVwgqgZKEXu8yzvUxXZnfvEijp8HKoIQ"
}

Output fields

Common fields (all records)

FieldDescription
recordType"video", "hashtag", "sound", or "creator"
inputType"searchQuery", "hashtag", "url", or "musicChart"
inputValueThe original input that produced this record
positionRank/order in results
collectedAtISO 8601 timestamp of extraction
sourceUrlThe URL that was scraped
sourceType"search", "hashtag", "video", or "musicChart"

Video fields

FieldDescription
videoIdTikTok video ID
videoUrlFull video URL
descriptionVideo caption/description
createTimeVideo creation time (ISO 8601)
durationDuration in seconds
regionRegion/country code (best-effort, may be null)
languageContent language (if available)
musicId, musicTitle, musicAuthorNameSound/music info
musicIsOriginaltrue = the creator's own audio; false = a reusable track
authorId, authorUniqueId, authorNicknameAuthor identification
authorProfileUrl, authorAvatarUrlAuthor links
authorVerifiedVerified badge status
authorFollowerCount, authorHeartCount, authorVideoCountAuthor stats (if available)
authorStatsStatusWhy the three counts above are nullnot_requested (enrichment was off) · paid_plan_only (Free plan skipped it; not charged) · success (fetched) · failed (requested and attempted, but TikTok returned nothing for that author)
playCountPlay/view count
likeCount, commentCount, shareCountEngagement counts
saveCount, repostCountSave and repost counts (if available)
hashtagsHashtags used in the caption
mentionsUsers mentioned in the caption
thumbnailUrl, coverUrlVideo cover images
isAd, isPinned, isSponsoredContent flags
engagementTotalSum of likes + comments + shares + saves
engagementRateProxyengagementTotal / playCount
discoveryScoreWeighted viral score: (shares*3 + saves*2 + comments*1.5 + likes) / plays * 100

Sound fields (resultType: "sounds", "musicChartViral50", or "musicChartTop50")

FieldDescription
musicId, musicTitle, musicAuthorName, musicUrlSound identity and its TikTok page
isOriginalSoundtrue = the creator's own audio; false = a reusable track. Filter on false to find sounds you can actually use
videosInTrendHow many of the discovered videos use this sound (niche sounds)
totalPlays, totalLikes, totalShares, totalEngagementCombined performance of the videos using it (niche sounds)
avgDiscoveryScoreMean viral score of those videos (niche sounds)
topVideoUrl, topVideoIdThe strongest video using this sound (niche sounds)
videoCountHow many videos use it TikTok-wide (global chart)
rank, trendChart position and TikTok's rank-movement signal (global chart)
duration, language, isCommerceMusic, coverImageUrl, playUrl, musicAlbumTrack metadata (global chart)
soundSourceniche (derived from your query) or chart (TikTok's global leaderboard)

Creator fields (resultType: "creators")

Ranked by the engagement the creator pulled within your trend — who is driving it, not who has the biggest account.

FieldDescription
creatorUniqueId, creatorNickname, creatorProfileUrl, creatorAvatarUrl, creatorId, secUidCreator identity
creatorVerified, isPrivate, category, accountTypeAccount status
followerCount, heartCount, videoCount, followingCountReal account stats
signature, bioUrl, bioEmailBio, link in bio, and the business email they published — see Compliance
isCommerceTikTok Shop seller
videosInTrendHow many of the discovered videos are theirs
totalPlays, totalLikes, totalShares, totalEngagementWhat they pulled within this trend
avgDiscoveryScoreMean viral score of their videos in the trend
topVideoUrl, topVideoIdTheir strongest video in the trend

Author fields on video records (only with enrichAuthorStats)

TikTok omits these from search and hashtag results. Enable enrichAuthorStats to fetch them — see Pricing.

FieldDescription
authorFollowerCount, authorHeartCount, authorVideoCount, authorFollowingCountReal creator counts (null without enrichment — never 0)
authorSignatureCreator bio text
authorBioUrlLink in bio
authorBioEmailBusiness email the creator published on their public profile — see Compliance
authorCategoryCreator category (e.g. Others, Comedy)
authorVerifiedVerification status (from TikTok's verification, custom-verify, and enterprise flags)
authorIsPrivateWhether the account is private
authorIsCommerce, authorAccountTypeTikTok Shop seller / business-account signals
authorSecUidTikTok's stable secondary user ID

Hashtag fields

FieldDescription
hashtagHashtag name (without #)
hashtagTitleDisplay title
hashtagUrlFull hashtag page URL
viewCountTotal view count
videoCountTotal video count (if available)
coverImageUrlCover image URL (if available)
descriptionHashtag description (if available)

Use cases

  • Content ideation — find trending hashtags and videos in a niche before creating content
  • Trend monitoring — track recurring keywords, hashtags, or topics across repeated scheduled runs
  • Competitive research — see what types of content are performing around a topic
  • Influencer discovery — identify creators associated with emerging trends
  • E-commerce/product discovery — detect trending products, categories, and buying signals
  • Campaign validation — check whether a hashtag or theme is growing before investing in content or ads
  • AI/LLM workflows — feed discovered videos and hashtags into clustering, summarization, trend scoring, and reporting pipelines

Tips and best practices

  • Use inputValue to trace results — every record includes the original query or hashtag that produced it, making cross-topic comparison easy
  • Start small — use resultsPerQuery: 10–20 for initial exploration, then increase for deeper collection
  • Combine inputs — mix searchQueries and hashtags in a single run to compare keyword trends with hashtag trends
  • Schedule for monitoring — run on a schedule to track trend momentum over time
  • Use discoveryScore — higher scores indicate stronger viral signals (weighted toward shares, saves, and comments)
  • Filter by recordType — use the dataset views or filter by recordType to separate video and hashtag records

How it works

This actor collects TikTok data through a hosted API rather than by driving a headless browser over a proxy. That has three consequences worth knowing about:

  • Nothing to configure. No proxy, no account, no cookies, no session. There is no setup step between entering a keyword and getting data.
  • More reliable. TikTok's logged-out search page is heavily bot-gated, and browser-based scrapers get soft-blocked there. This actor does not touch it.
  • Cheaper to run. No browser means less compute, which is why the per-result price can stay low.

Integrations

Connect this actor with other tools and services:

  • Google Sheets — export trend data to spreadsheets for team dashboards
  • Slack/email — set up notifications when new trends are detected
  • Webhooks — trigger downstream workflows when a run completes
  • API — access results programmatically via the Apify API
  • Other actors — feed discovered video URLs into TikTok Video Scraper for deeper video analysis

Pricing

This actor is pay per event — you pay for what it actually collects, not for compute time. There are six events, and any one run only triggers the ones for its resultType:

EventPrice (from) ᵖWhen it's charged
actor-start$0.020Once per run. A run with no usable input exits before this is charged.
video-result$0.0020Once per video record (40+ fields: engagement, author, music, computed scores).
hashtag-result$0.0010Once per hashtag entity record (7 fields). Priced below a video record, because it carries less.
sound-result$0.0030Once per sound record — whether derived from your niche or pulled from the global chart.
creator-result$0.0050Once per creator record. Includes the full profile (followers, bio, contact, TikTok Shop status): every creator costs a profile lookup, so this is priced above a video record. A creator whose profile can't be fetched is dropped, not charged.
author-enriched$0.0020Only when enrichAuthorStats is on during a videos run. Once per unique creator — a creator appearing in five of your videos is charged once, not five times. Never charged on a creators run, where the profile is already part of creator-result.

ᵖ Entry (free-tier) price per event; it drops with your Apify subscription tier — higher plans pay less per record.

What a run costs

You pay actor-start once, plus the per-record price for whatever your chosen resultType returns — and only for records actually collected. Examples at the entry prices above:

RunReturnsRoughly
videos, 1 keyword × 50~50 videos~$0.12
videos, 3 keywords × 50~150 videos~$0.32
videos, 5 hashtags × 100~500 videos~$1.02
videos + enrichAuthorStats, 3 keywords × 50~150 videos + ~120 profiles~$0.56
hashtags, 5 hashtags~50 hashtag records~$0.07
sounds, 1 hashtag × 100~60 sounds~$0.20
creators, 1 hashtag × 100~40 creators~$0.22
musicChartViral50up to 50 chart sounds~$0.17
Daily monitoring: videos, 3 keywords × 20~60 videos/day~$0.14/day

Turning on enrichAuthorStats adds roughly one author-enriched charge per unique creator (most videos have a distinct one), so expect a videos run to cost about double. Leave it off unless you actually need creator metrics.

Prices are also shown on the actor's pricing tab. Start with resultsPerQuery: 10–20 to see what a query returns before scaling up.

Free plan limitations

enrichAuthorStats requires a paid Apify plan. On the Free plan it is skipped and you are not charged for it — video rows come back without author follower/like/video counts, exactly as they do when the option is off.

Free planAny paid plan
videos, hashtags, sounds records✅ Full, no row cap✅ Full
Engagement stats, computed scores, sorting✅ Included✅ Included
creators Result Type (includes full profiles)Included✅ Included
enrichAuthorStats on a videos run❌ Skipped, not charged✅ Included

Why only that one: it costs an extra API call per unique creator on top of a search that already returned the rows — the doubling described above. Discovery spreads a single call across up to resultsPerQuery records, so it stays open.

resultType: creators is deliberately unaffected. There the profile lookup is the record — a creator row without a follower count would be useless — so it is priced accordingly and available on every plan.

Runs are never failed because of this. You'll see it in the log and in the run's status message.

Limits and known issues

Stated plainly, so nothing here surprises you mid-run.

  • resultsPerQuery is a ceiling, not a promise. TikTok decides how deep a search or hashtag feed goes. A broad query like trending will fill 500; a niche one may return 20 and stop. You are only charged for records actually collected.
  • sortBy is best-effort. The sort is passed to TikTok as a hint; TikTok may ignore it and return its default ranking. It applies to keyword searches only — hashtag pages always come back in TikTok's own order. If you need a guaranteed order, sort the dataset yourself on playCount, engagementTotal, or discoveryScore.
  • Creator stats need enrichAuthorStats. TikTok does not include authorHeartCount or authorVideoCount in search or hashtag results, and omits authorFollowerCount from hashtag results too. Without enrichment these come back null — never a misleading 0. Turn on enrichAuthorStats to fetch them properly. A null always means "this was not returned", never "zero" — and authorStatsStatus on the same row tells you which of the four reasons applies, so you never have to guess whether a null is a plan limit, a setting you left off, or missing upstream data.
  • Most hashtags have no description or coverImageUrl. TikTok only curates these for large, editorially-managed tags (#trending has both; #tesla has neither). When TikTok provides them, you get them.
  • Creator contact fields depend on the niche. authorBioEmail, authorBioUrl, and authorCategory only exist if the creator chose to publish them. In business-leaning niches (marketing, SaaS, coaching) a meaningful share of creators do; in entertainment niches (dance, comedy, viral) almost none do. A run over #trending may return no emails at all, while one over ai tools returns several. This is TikTok's data, not a gap in the scraper.
  • mentions is usually empty — most captions don't @-mention anyone.
  • Each run returns one record shape. A video record and a hashtag record share only a handful of fields, so mixing them in one table would leave the other type's columns blank on export. That's why videos, hashtags, sounds, and creators are separate modes and why videos is the default — a single-type run exports as a clean table. Need both videos and hashtags? Run the actor twice.
  • viewCount on hashtag records is TikTok's own rounded figure (e.g. 45.2B), not a precise count.
  • No ranked trend leaderboards yet. This actor discovers trending content by keyword and hashtag. Country-scoped, time-windowed trend charts (ranked hashtags and sounds) are on the roadmap.
  • No creator trend rankings yet. Creators appear as the authors of discovered videos (with follower, heart, and video counts), not as a separate ranked "trending creators" list.
  • This actor does not scrape individual video pages or full profile histories. For that, use TikTok Video Scraper.

Compliance

This actor collects only publicly available data from TikTok — the same content any logged-out visitor can see. It does not require a TikTok account, log in, or use cookies, and it never accesses private or non-public data.

On creator contact details: when enrichAuthorStats is enabled, the output includes authorBioEmail — the business email a creator has chosen to publish on their own public profile — along with their bio link. These are self-published business contacts, not private data, and they are only collected when you explicitly turn enrichment on. They are still personal data under GDPR/CCPA, so if you use them for outreach, that obligation is yours: have a lawful basis, identify yourself, and honour opt-outs. If you don't need contact details, leave enrichAuthorStats off and none are collected.

You are responsible for using the collected data in line with TikTok's terms and any privacy laws that apply to you.

FAQ

How many results can I get per query? Up to 500 per keyword or hashtag — but that is a ceiling, not a guarantee. The actual number depends on how much data TikTok returns for that query, and you are only charged for what is actually collected.

Why are some fields null? A null means TikTok did not return that field — it never means zero. The most common cases are authorHeartCount and authorVideoCount, which TikTok omits from search responses. Everything else, including saveCount and repostCount, is populated whenever TikTok provides it.

Do I need a proxy, a TikTok account, or cookies? No. There is nothing to configure — see How it works.

Which resultType do I want? Most people want videos (the default) — the trending videos with their engagement metrics. Choose hashtags when you're researching which tags to use: for every keyword you enter, you get the hashtags TikTok actually ranks for it, with their real view and video counts. Choose sounds or creators to see what's driving your own niche, or a musicChart… option for TikTok's global sound leaderboards. Each run returns one record type — run the actor twice if you need two.

How do I tell what a record came from? Every record carries inputType (searchQuery, hashtag, or url) and inputValue (the keyword or hashtag itself). Both are always populated, whichever way the record was discovered, so you can group or pivot on them directly.

Can I scrape specific video pages? This actor is designed for trend discovery (search + hashtags). For scraping specific video URLs, use TikTok Video Scraper.

How is discoveryScore calculated? discoveryScore = (shares * 3 + saves * 2 + comments * 1.5 + likes) / plays * 100. It weights actions that signal stronger intent (sharing and saving) higher than passive engagement (likes).