TikTok Hashtag Momentum & Top Creator Tracker
Reads TikTok Creative Center's trending-hashtag list for any country and returns rank, post and view counts, a day-by-day momentum curve, and top creators behind each trend.
Input schema
Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | optional | Choose 'Trending hashtags' for TikTok's ranked hashtag charts (post/view counts, popularity curve, creators) or 'Trending videos' for TikTok's ranked video charts (views, engagement, author stats). |
countries | array | optional | (mode=trendingHashtags) One or more markets to read the hashtag chart for. Each market adds its own ranked rows. |
periods | array | optional | (mode=trendingHashtags) Lookback windows in days. 7 shows recent spikes, 90 shows longer-term trends. Select one or more. |
Show all input fields
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | optional | Choose 'Trending hashtags' for TikTok's ranked hashtag charts (post/view counts, popularity curve, creators) or 'Trending videos' for TikTok's ranked video charts (views, engagement, author stats). |
countries | array | optional | (mode=trendingHashtags) One or more markets to read the hashtag chart for. Each market adds its own ranked rows. |
periods | array | optional | (mode=trendingHashtags) Lookback windows in days. 7 shows recent spikes, 90 shows longer-term trends. Select one or more. |
includeOverallRanking | boolean | optional | (mode=trendingHashtags) Include each market's overall top-3 hashtag chart. Turn off to read only the industry charts selected below. |
scanAllIndustries | boolean | optional | (mode=trendingHashtags) Read all 19 industry charts for every market and window. This widens coverage from 3 to up to 60 hashtags per market and window, because each industry chart is read separately. |
industries | array | optional | (mode=trendingHashtags) Specific industry charts to read when 'Scan all industries' is off. Ignored when scanning all industries. 19 public categories are available. |
includeCreatorLeaders | boolean | optional | (mode=trendingHashtags) Add creator rows that aggregate the creators TikTok credits across the collected hashtags, sorted by how many trends they appear in. |
minHashtagAppearances | integer | optional | (mode=trendingHashtags, creator leaderboard only) Only list creators credited on at least this many collected hashtag rows. |
videoCountries | array | optional | (mode=trendingVideos) Markets with a public TikTok trending-video chart. Select one or more. |
videoPeriods | array | optional | (mode=trendingVideos) Windows in days for the trending-video chart: 7 for videos created in the last week, 30 for the last month. |
videoSortBy | string | optional | (mode=trendingVideos) Metric used for the video ranking. |
videoOrganicOnly | boolean | optional | (mode=trendingVideos) Rank only organic (non-promoted) videos. TikTok returns a different ranking for organic-only charts. |
videoContentTags | array | optional | (mode=trendingVideos) Query TikTok's video ranking by content tag and dedupe the videos. Each selected tag is a separate ranking read; 'All tags' also includes the unfiltered chart, returning up to ~24 videos per market, window and sort instead of 4. Leave empty for the current unfiltered ranking. |
weeksBack | integer | optional | (mode=trendingVideos) Add past weekly rankings by moving the chart end date back 7 days per step (0-4). Useful for comparing this week with earlier weeks. |
includeTopComments | boolean | optional | (mode=trendingVideos) Add each video's top comments and comment keywords. Each video's comments are read separately (up to 100 videos per run). |
maxItems | integer | optional | Maximum number of data rows to write per run. Creator rows are not counted. |
Download the published input schema
View complete JSON
{
"description": "Collect TikTok's ranked trending hashtags and trending videos by market, time window and industry, with post/view counts, popularity curves, momentum signals, creator leaders and video engagement metrics. No login, cookies or proxy setup.",
"properties": {
"countries": {
"default": [
"US"
],
"description": "(mode=trendingHashtags) One or more markets to read the hashtag chart for. Each market adds its own ranked rows.",
"editor": "select",
"items": {
"enum": [
"US",
"GB",
"CA",
"AU",
"DE",
"FR",
"IT",
"ES",
"BR",
"MX",
"AR",
"CO",
"JP",
"KR",
"ID",
"MY",
"PH",
"SG",
"TH",
"VN",
"TW",
"TR",
"SA",
"AE",
"IL",
"EG",
"ZA"
],
"enumTitles": [
"United States",
"United Kingdom",
"Canada",
"Australia",
"Germany",
"France",
"Italy",
"Spain",
"Brazil",
"Mexico",
"Argentina",
"Colombia",
"Japan",
"South Korea",
"Indonesia",
"Malaysia",
"Philippines",
"Singapore",
"Thailand",
"Vietnam",
"Taiwan",
"Turkey",
"Saudi Arabia",
"United Arab Emirates",
"Israel",
"Egypt",
"South Africa"
],
"type": "string"
},
"prefill": [
"US"
],
"title": "Markets",
"type": "array"
},
"includeCreatorLeaders": {
"default": false,
"description": "(mode=trendingHashtags) Add creator rows that aggregate the creators TikTok credits across the collected hashtags, sorted by how many trends they appear in.",
"prefill": false,
"title": "Add Creator Leaderboard",
"type": "boolean"
},
"includeOverallRanking": {
"default": true,
"description": "(mode=trendingHashtags) Include each market's overall top-3 hashtag chart. Turn off to read only the industry charts selected below.",
"prefill": true,
"title": "Include Overall Chart",
"type": "boolean"
},
"includeTopComments": {
"default": false,
"description": "(mode=trendingVideos) Add each video's top comments and comment keywords. Each video's comments are read separately (up to 100 videos per run).",
"prefill": false,
"title": "Include Top Comments",
"type": "boolean"
},
"industries": {
"default": [],
"description": "(mode=trendingHashtags) Specific industry charts to read when 'Scan all industries' is off. Ignored when scanning all industries. 19 public categories are available.",
"editor": "select",
"items": {
"enum": [
"10000000000",
"11000000000",
"12000000000",
"13000000000",
"14000000000",
"15000000000",
"16000000000",
"17000000000",
"18000000000",
"19000000000",
"20000000000",
"21000000000",
"22000000000",
"23000000000",
"24000000000",
"25000000000",
"27000000000",
"28000000000",
"29000000000"
],
"enumTitles": [
"Education",
"Vehicle & Transportation",
"Baby, Kids & Maternity",
"Financial Services",
"Beauty & Personal Care",
"Tech & Electronics",
"Appliances",
"Travel",
"Household Products",
"Pets",
"Apps",
"Home Improvement",
"Apparel & Accessories",
"News & Entertainment",
"Business Services",
"Games",
"Food & Beverage",
"Sports & Outdoor",
"Health"
],
"type": "string"
},
"prefill": [],
"title": "Industry Charts",
"type": "array"
},
"maxItems": {
"default": 1000,
"description": "Maximum number of data rows to write per run. Creator rows are not counted.",
"maximum": 5000,
"minimum": 1,
"prefill": 10,
"title": "Maximum Rows",
"type": "integer"
},
"minHashtagAppearances": {
"default": 2,
"description": "(mode=trendingHashtags, creator leaderboard only) Only list creators credited on at least this many collected hashtag rows.",
"maximum": 10,
"minimum": 1,
"prefill": 2,
"title": "Minimum Trend Appearances",
"type": "integer"
},
"mode": {
"default": "trendingHashtags",
"description": "Choose 'Trending hashtags' for TikTok's ranked hashtag charts (post/view counts, popularity curve, creators) or 'Trending videos' for TikTok's ranked video charts (views, engagement, author stats).",
"editor": "select",
"enum": [
"trendingHashtags",
"trendingVideos"
],
"enumTitles": [
"Trending hashtags",
"Trending videos"
],
"prefill": "trendingHashtags",
"title": "What to collect",
"type": "string"
},
"periods": {
"default": [
"7"
],
"description": "(mode=trendingHashtags) Lookback windows in days. 7 shows recent spikes, 90 shows longer-term trends. Select one or more.",
"editor": "select",
"items": {
"enum": [
"7",
"30",
"90"
],
"enumTitles": [
"Last 7 days",
"Last 30 days",
"Last 90 days"
],
"type": "string"
},
"prefill": [
"7"
],
"title": "Time Windows",
"type": "array"
},
"scanAllIndustries": {
"default": true,
"description": "(mode=trendingHashtags) Read all 19 industry charts for every market and window. This widens coverage from 3 to up to 60 hashtags per market and window, because each industry chart is read separately.",
"prefill": false,
"title": "Scan All Industries",
"type": "boolean"
},
"videoContentTags": {
"default": [],
"description": "(mode=trendingVideos) Query TikTok's video ranking by content tag and dedupe the videos. Each selected tag is a separate ranking read; 'All tags' also includes the unfiltered chart, returning up to ~24 videos per market, window and sort instead of 4. Leave empty for the current unfiltered ranking.",
"editor": "select",
"items": {
"enum": [
"all",
"11002",
"11003",
"11010",
"11013",
"11015"
],
"enumTitles": [
"All tags (unfiltered + 5 tags)",
"Beauty & Care",
"Fashion",
"Food & Beverage",
"Lifestyle & Leisure",
"Technology & Finance"
],
"type": "string"
},
"prefill": [],
"title": "Video Content Tags",
"type": "array"
},
"videoCountries": {
"default": [
"US"
],
"description": "(mode=trendingVideos) Markets with a public TikTok trending-video chart. Select one or more.",
"editor": "select",
"items": {
"enum": [
"US",
"JP",
"VN",
"TH",
"ID"
],
"enumTitles": [
"United States",
"Japan",
"Vietnam",
"Thailand",
"Indonesia"
],
"type": "string"
},
"prefill": [
"US"
],
"title": "Video Markets",
"type": "array"
},
"videoOrganicOnly": {
"default": false,
"description": "(mode=trendingVideos) Rank only organic (non-promoted) videos. TikTok returns a different ranking for organic-only charts.",
"prefill": false,
"title": "Organic Videos Only",
"type": "boolean"
},
"videoPeriods": {
"default": [
"7"
],
"description": "(mode=trendingVideos) Windows in days for the trending-video chart: 7 for videos created in the last week, 30 for the last month.",
"editor": "select",
"items": {
"enum": [
"7",
"30"
],
"enumTitles": [
"Last 7 days",
"Last 30 days"
],
"type": "string"
},
"prefill": [
"7"
],
"title": "Video Time Windows",
"type": "array"
},
"videoSortBy": {
"default": "views",
"description": "(mode=trendingVideos) Metric used for the video ranking.",
"editor": "select",
"enum": [
"views",
"engagementRate",
"sixSecondViewRate"
],
"enumTitles": [
"Video views",
"Engagement rate",
"6-second view-through rate"
],
"prefill": "views",
"title": "Rank Videos By",
"type": "string"
},
"weeksBack": {
"default": 0,
"description": "(mode=trendingVideos) Add past weekly rankings by moving the chart end date back 7 days per step (0-4). Useful for comparing this week with earlier weeks.",
"maximum": 4,
"minimum": 0,
"prefill": 0,
"title": "Extra Weekly Windows",
"type": "integer"
}
},
"required": [],
"schemaVersion": 1,
"title": "TikTok Hashtag Momentum & Top Creator Tracker Input",
"type": "object"
}
Output schema
Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.
| Field | Type | Required | Description |
|---|---|---|---|
data | string | optional | Dataset containing hashtag rows, optional creator-leader rows, and trending-video rows. |
Download the published output schema
View complete JSON
{
"actorOutputSchemaVersion": 1,
"description": "Trending-hashtag rows with ranks, post and view counts, popularity curves, momentum signals and top creators; optional creator-leader rows; trending-video rows with engagement metrics and author stats.",
"properties": {
"data": {
"description": "Dataset containing hashtag rows, optional creator-leader rows, and trending-video rows.",
"template": "{{links.apiDefaultDatasetUrl}}/items",
"title": "Trending Hashtags and Videos",
"type": "string"
}
},
"title": "TikTok Hashtag Momentum & Top Creator Tracker Output"
}
Dataset schema
Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.
Download the published dataset schema
View complete JSON
{
"actorSpecification": 1,
"fields": {
"ageDays": {
"description": "Age of the video at collection time, in days.",
"title": "Age (Days)",
"type": "number"
},
"appearances": {
"description": "Number of collected hashtag rows in which TikTok credited this creator.",
"title": "Trend Appearances",
"type": "integer"
},
"author": {
"description": "Video author object: id, username, displayName, bio, followerCount and avatarUrl.",
"title": "Author",
"type": "object"
},
"avatarUrl": {
"description": "Signed TikTok CDN avatar link (temporary).",
"title": "Avatar URL",
"type": "string"
},
"avgViewsPerPost": {
"description": "vv divided by publishCnt, rounded.",
"title": "Average Views per Post",
"type": "integer"
},
"bestRank": {
"description": "Creator's best top-creator rank across the collected hashtags.",
"title": "Best Rank",
"type": "integer"
},
"caption": {
"description": "Video caption text (video rows).",
"title": "Caption",
"type": "string"
},
"commentKeywords": {
"description": "Keywords TikTok extracted from the video's comments and their mention counts.",
"items": {
"type": "object"
},
"title": "Comment Keywords",
"type": "array"
},
"contentTag": {
"description": "Content-tag ranking that surfaced this video (11002 Beauty & Care, 11003 Fashion, 11010 Food & Beverage, 11013 Lifestyle & Leisure, 11015 Technology & Finance). Omitted for the unfiltered ranking.",
"title": "Content Tag",
"type": "string"
},
"countryCode": {
"description": "Creator country code as reported by TikTok.",
"title": "Country",
"type": "string"
},
"coverUrl": {
"description": "Signed TikTok CDN cover link (temporary, about 48 hours).",
"title": "Cover URL",
"type": "string"
},
"createTime": {
"description": "Video publish time as a Unix timestamp.",
"title": "Create Time (Unix)",
"type": "integer"
},
"createdAt": {
"description": "Video publish time in ISO 8601 UTC.",
"title": "Created At",
"type": "string"
},
"creatorId": {
"description": "TikTok user ID for creator-leader rows.",
"title": "Creator ID",
"type": "string"
},
"curveVolatility": {
"description": "Population standard deviation of the popularity curve values.",
"title": "Curve Volatility",
"type": "number"
},
"dataSource": {
"description": "Always 'tiktok-creative-center'.",
"title": "Data Source",
"type": "string"
},
"embedUrl": {
"description": "Durable cookieless TikTok embed player URL (video rows).",
"title": "Embed URL",
"type": "string"
},
"engagementRate": {
"description": "TikTok's engagement rate for the video in the observed window.",
"title": "Engagement Rate",
"type": "number"
},
"engagementRateLifeTime": {
"description": "Lifetime engagement rate reported by TikTok.",
"title": "Lifetime Engagement Rate",
"type": "number"
},
"followerCount": {
"description": "Highest follower count observed for the creator in the collected rows.",
"title": "Followers",
"type": "integer"
},
"handleName": {
"description": "Creator username without @ (creator rows).",
"title": "Handle",
"type": "string"
},
"hashtagId": {
"description": "TikTok's internal hashtag ID (string to preserve 64-bit precision).",
"title": "Hashtag ID",
"type": "string"
},
"hashtagName": {
"description": "Hashtag text without the leading #.",
"title": "Hashtag",
"type": "string"
},
"hashtagUrl": {
"description": "Durable TikTok tag page URL.",
"title": "Hashtag URL",
"type": "string"
},
"hashtags": {
"description": "Hashtag names the creator was credited on (creator rows) or hashtags parsed from a video caption (video rows).",
"items": {
"type": "string"
},
"title": "Hashtags",
"type": "array"
},
"industryIds": {
"description": "TikTok industry category IDs assigned to this hashtag.",
"items": {
"type": "string"
},
"title": "Industry IDs",
"type": "array"
},
"industryNames": {
"description": "Human-readable names for the assigned industry categories.",
"items": {
"type": "string"
},
"title": "Industries",
"type": "array"
},
"isOverallRanking": {
"description": "True when the hashtag appeared on the market's overall chart rather than only an industry chart.",
"title": "Overall Chart",
"type": "boolean"
},
"lifetimeViewsShare": {
"description": "Window views divided by lifetime views.",
"title": "Window Share of Lifetime Views",
"type": "number"
},
"momentumChangePct": {
"description": "Change between the mean of the most recent third of the popularity curve and the third before it, as a percentage of TikTok's normalized index.",
"title": "Momentum Change (%)",
"type": "number"
},
"nickname": {
"description": "Creator display name (creator rows).",
"title": "Display Name",
"type": "string"
},
"observedCountries": {
"description": "Markets in which the creator appeared (creator rows).",
"items": {
"type": "string"
},
"title": "Markets",
"type": "array"
},
"observedCountry": {
"description": "ISO country code of the market whose chart produced this row.",
"title": "Observed Country",
"type": "string"
},
"observedPeriod": {
"description": "Lookback window in days used for this row: 7, 30 or 90 for hashtags; 7 or 30 for videos.",
"title": "Observed Period (Days)",
"type": "integer"
},
"observedPeriods": {
"description": "Time windows in days in which the creator appeared (creator rows).",
"items": {
"type": "integer"
},
"title": "Windows",
"type": "array"
},
"organicViews": {
"description": "Organic (non-promoted) views within the observed window.",
"title": "Organic Views",
"type": "integer"
},
"organicViewsLifeTime": {
"description": "Lifetime organic video views reported by TikTok.",
"title": "Lifetime Organic Views",
"type": "integer"
},
"peakDate": {
"description": "Date of the highest popularity value in the window.",
"title": "Peak Date",
"type": "string"
},
"peakValue": {
"description": "Highest popularity value in the window (TikTok's 0-100 index).",
"title": "Peak Value",
"type": "number"
},
"popularityCurve": {
"description": "Day-by-day TikTok popularity index (0-100) for the observed window: [{date, value}].",
"items": {
"type": "object"
},
"title": "Popularity Curve",
"type": "array"
},
"publishCnt": {
"description": "Number of posts published with this hashtag during the observed window.",
"title": "Post Count",
"type": "integer"
},
"rankIndex": {
"description": "1-based position in the overall chart when available, otherwise the best industry-chart position. See isOverallRanking and rankingSlices.",
"title": "Rank",
"type": "integer"
},
"rankingKey": {
"description": "Provenance of the ranking that produced this row: market:window:sort:weeksBack:tag (tag 'all' = unfiltered).",
"title": "Ranking Key",
"type": "string"
},
"rankingSlices": {
"description": "Industry chart IDs in which the hashtag also ranked (present when it ranked in at least one industry slice).",
"items": {
"type": "string"
},
"title": "Industry Charts",
"type": "array"
},
"rowType": {
"description": "Discriminator: 'hashtag' for ranked hashtag rows, 'creator' for the optional creator leaderboard, 'video' for trending-video rows.",
"title": "Row Type",
"type": "string"
},
"scrapedAt": {
"description": "ISO 8601 UTC datetime when this row was collected.",
"title": "Scraped At",
"type": "string"
},
"sixSecondViewRate": {
"description": "Share of viewers who watched at least six seconds.",
"title": "6-Second View Rate",
"type": "number"
},
"sixSecondViewRateLifeTime": {
"description": "Lifetime share of viewers who watched at least six seconds.",
"title": "Lifetime 6-Second View Rate",
"type": "number"
},
"topComments": {
"description": "Up to 50 most-liked comments on the video (when Include top comments is on).",
"items": {
"type": "object"
},
"title": "Top Comments",
"type": "array"
},
"topCreators": {
"description": "Creators TikTok credits for this hashtag: rank, ttuid, handleName, nickname, followerCount, countryCode and avatarUrl (signed CDN link).",
"items": {
"type": "object"
},
"title": "Top Creators",
"type": "array"
},
"trendDirection": {
"description": "rising, steady or falling, derived from momentumChangePct with a +/-10% threshold.",
"title": "Trend Direction",
"type": "string"
},
"trendStage": {
"description": "breaking, peaking, fading or steady, derived from the curve peak position and recent change.",
"title": "Trend Stage",
"type": "string"
},
"videoId": {
"description": "TikTok video ID (video rows).",
"title": "Video ID",
"type": "string"
},
"videoSortBy": {
"description": "Metric used for the video chart: views, engagementRate or sixSecondViewRate.",
"title": "Video Ranking Metric",
"type": "string"
},
"videoUrl": {
"description": "Durable TikTok video page URL (video rows).",
"title": "Video URL",
"type": "string"
},
"views": {
"description": "Video views within the observed window.",
"title": "Views",
"type": "integer"
},
"viewsLifeTime": {
"description": "Lifetime video views reported by TikTok.",
"title": "Lifetime Views",
"type": "integer"
},
"viewsPerDay": {
"description": "Window views divided by the video's age in days.",
"title": "Views per Day",
"type": "integer"
},
"vv": {
"description": "Total video views accumulated by posts using this hashtag during the observed window.",
"title": "Video Views",
"type": "integer"
},
"weeksBack": {
"description": "How many weekly steps back the chart end date was moved for this row (0 = latest).",
"title": "Weeks Back",
"type": "integer"
}
},
"title": "TikTok Hashtag Trends and Videos",
"views": {
"overview": {
"description": "One row per hashtag, market and window, plus optional creator-leader and trending-video rows in the same dataset (see the rowType field).",
"display": {
"component": "table",
"properties": {
"hashtagName": {
"format": "text",
"label": "Hashtag"
},
"observedCountry": {
"format": "text",
"label": "Country"
},
"observedPeriod": {
"format": "number",
"label": "Period (Days)"
},
"publishCnt": {
"format": "number",
"label": "Post Count"
},
"rankIndex": {
"format": "number",
"label": "Rank"
},
"rowType": {
"format": "text",
"label": "Row Type"
},
"scrapedAt": {
"format": "text",
"label": "Scraped At"
},
"vv": {
"format": "number",
"label": "Video Views"
}
}
},
"title": "Hashtags Overview",
"transformation": {
"fields": [
"rowType",
"rankIndex",
"hashtagName",
"publishCnt",
"vv",
"observedCountry",
"observedPeriod",
"scrapedAt"
]
}
},
"videos": {
"description": "Video rows from the trending-video chart, with author context and engagement metrics.",
"display": {
"component": "table",
"properties": {
"author.username": {
"format": "text",
"label": "Author"
},
"caption": {
"format": "text",
"label": "Caption"
},
"createdAt": {
"format": "text",
"label": "Created"
},
"engagementRate": {
"format": "number",
"label": "Engagement Rate"
},
"observedCountry": {
"format": "text",
"label": "Country"
},
"rowType": {
"format": "text",
"label": "Row Type"
},
"views": {
"format": "number",
"label": "Views"
}
}
},
"title": "Trending Videos",
"transformation": {
"fields": [
"rowType",
"caption",
"views",
"engagementRate",
"author.username",
"observedCountry",
"createdAt"
]
}
}
}
}
Key-value schema
Published key-value store definitions, when provided by this build.
This definition is not present in the default published build. See the published README for available documentation.
Published README
Read the full published documentation
TikTok Hashtag Momentum & Top Creator Tracker
Read TikTok's own ranked trending-hashtag and trending-video charts from the public Creative Center. For every market you choose, this actor returns exact post and view counts, a day-by-day popularity curve, a plain-language momentum read (rising, peaking, fading), the creators TikTok credits for each trend, and — when you ask for videos — the engagement metrics behind what is winning right now. No TikTok login, cookies or proxy setup.
What this actor does
- Two collections:
trendingHashtagsreads TikTok's ranked hashtag charts;trendingVideosreads its ranked trending-video charts. - 27 hashtag markets, 3 windows: pick any mix of 27 markets and 7/30/90-day windows. The overall chart plus all 19 industry charts are available, widening one market/window from 3 hashtags to up to 60.
- Momentum, not just a snapshot: every hashtag carries TikTok's daily popularity curve plus a derived momentum score, trend direction, trend stage, peak date and volatility.
- Creator leaders: every trending hashtag includes TikTok's top-3 credited creators; an optional leaderboard aggregates them across the whole run so you can see who keeps appearing.
- Trending videos: five markets with public video charts, ranked by views, engagement rate or 6-second view-through rate, with author followers, lifetime metrics and optional top comments. Content-tag rankings (Beauty & Care, Fashion, Food & Beverage, Lifestyle & Leisure, Technology & Finance) can be queried individually or all at once, deduping videos for up to ~24 per market/window/sort instead of 4.
- Honest caps: TikTok's public charts show 3 hashtags per ranking and 4 videos per video ranking to guests. The actor explains its coverage in the run status instead of implying more.
- Empty fields are omitted — never returned as
null,""or[].
Output per hashtag (rowType: "hashtag")
hashtagId,hashtagName,hashtagUrl— identity and the durable tag page linkrankIndex,isOverallRanking,rankingSlices— rank, whether it made the overall chart, and which industry charts it also ranked inpublishCnt— posts published with the hashtag during the windowvv— total video views those posts earned during the windowavgViewsPerPost— views divided by postspopularityCurve— daily{date, value}points from TikTok's normalized 0–100 indexmomentumChangePct,trendDirection,trendStage,peakDate,peakValue,curveVolatility— derived momentum signalsindustryIds,industryNames— TikTok's category tags for the hashtagtopCreators[]— TikTok's credited creators (rank,ttuid,handleName,nickname,followerCount,countryCode,avatarUrl)observedCountry,observedPeriod,scrapedAt,dataSource
Output per creator (rowType: "creator", optional)
creatorId,handleName,nickname,followerCount,countryCode,avatarUrlappearances— how many collected hashtag rows credited this creatorhashtags[],bestRank,observedCountries[],observedPeriods[],scrapedAt
Output per video (rowType: "video")
videoId,videoUrl,embedUrl,caption,hashtags[]createTime,createdAt,ageDays,coverUrlauthor—id,username,displayName,bio,followerCount,avatarUrlviews,organicViews,engagementRate,sixSecondViewRate— window metricsviewsLifeTime,organicViewsLifeTime,engagementRateLifeTime,sixSecondViewRateLifeTime— lifetime metricsviewsPerDay,lifetimeViewsShare— derived velocitytopComments[],commentKeywords[]— only with Include top commentscontentTag— the content-tag ranking that surfaced this video (omitted for the unfiltered ranking)rankingKey— provenance key:market:window:sort:weeksBack:tag(all= unfiltered)observedCountry,observedPeriod,videoSortBy,weeksBack,scrapedAt
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode |
select | trendingHashtags |
trendingHashtags or trendingVideos |
countries |
multi-select | ["US"] |
27 markets for the hashtag chart |
periods |
multi-select | ["7"] |
Hashtag windows: 7 / 30 / 90 days |
includeOverallRanking |
boolean | true |
Include each market's overall top-3 chart |
scanAllIndustries |
boolean | true |
Read all 19 industry charts (up to 60 hashtags per market/window) |
industries |
multi-select | [] |
Specific industry charts when scanAllIndustries is off |
includeCreatorLeaders |
boolean | false |
Emit the aggregated creator leaderboard |
minHashtagAppearances |
integer | 2 |
Minimum trend appearances for a creator row |
videoCountries |
multi-select | ["US"] |
Video chart markets: US, JP, VN, TH, ID |
videoPeriods |
multi-select | ["7"] |
Video windows: 7 / 30 days |
videoSortBy |
select | views |
views, engagementRate, sixSecondViewRate |
videoOrganicOnly |
boolean | false |
Rank only organic (non-promoted) videos |
videoContentTags |
multi-select | [] |
Content-tag rankings; each selected tag is a separate ranking read, deduped by video. all = unfiltered + all five tags |
weeksBack |
integer | 0 |
Extra past weekly video rankings (0–4) |
includeTopComments |
boolean | false |
Add top comments and keywords (up to 100 videos) |
maxItems |
integer | 1000 |
Maximum hashtag/video rows per run |
Example: this week's US hashtags, every industry
{
"mode": "trendingHashtags",
"countries": ["US"],
"periods": ["7"],
"scanAllIndustries": true,
"includeCreatorLeaders": true
}
Example: compare three markets over 30 days
{
"mode": "trendingHashtags",
"countries": ["US", "GB", "JP"],
"periods": ["30"],
"industries": ["14000000000", "27000000000"],
"includeOverallRanking": false
}
Example: trending videos in Japan and the US
{
"mode": "trendingVideos",
"videoCountries": ["US", "JP"],
"videoPeriods": ["7"],
"videoSortBy": "engagementRate",
"weeksBack": 2,
"includeTopComments": true
}
Use cases
- Content calendars — slot a market's current hashtags, with trend stage, into next week's posting plan.
- Trend timing — separate hashtags that are still breaking from ones that already peaked.
- Creator partnerships — see which creators TikTok credits across several rising trends before reaching out.
- Market comparison — run the same window across markets to find local trends rather than global noise.
- Brand and campaign monitoring — schedule a daily run and watch your tag enter, climb or leave a market's chart.
- Video performance research — study the engagement rate and 6-second view-through rate of videos TikTok is surfacing right now.
FAQ
Why does one market return only a few hashtags? TikTok's public Creative Center charts show the top 3 hashtags per ranking to visitors who are not signed in. This actor reads the overall chart plus the 19 industry charts, so a market and window yields up to 60 hashtags in total. There is no public path to a deeper ranking without a TikTok account.
What does the momentum score mean?
momentumChangePct compares the average of the most recent third of the popularity curve with the average of the third before it. It is a percentage of TikTok's normalized 0–100 index, not raw views. Values of +10% or more are labelled rising, -10% or less falling.
Why are video charts limited to five markets? TikTok publishes trending-video charts publicly for the United States, Japan, Vietnam, Thailand and Indonesia. Hashtag charts cover 27 markets. The input lists exactly the markets that return video data.
How many videos can one ranking return? The public video chart shows 4 videos per market, window and sort. Adding extra weekly windows or selecting several markets or windows widens coverage; rows are deduplicated by video.
Why are comments optional? Top comments are read separately for each video, so they are opt-in and capped at 100 videos per run.
Are the image links permanent?
coverUrl and creator avatarUrl are signed TikTok CDN links that expire after about 48 hours. The durable links are videoUrl, embedUrl and hashtagUrl, which always resolve.
Why do some hashtags have no industry?
TikTok assigns industry categories to only some hashtags. When it publishes none, industryIds and industryNames are omitted for that row.
Does this actor need cookies or a proxy? No. It reads TikTok's public Creative Center data over plain HTTP. There is nothing to log in to and no proxy to configure.
How fresh is the data? The charts refresh continuously. For trend tracking, schedule one run per market per day; repeated runs at the same time return the same ranking.
Is this affiliated with TikTok? No. This is a third-party actor that reads publicly available Creative Center trend data; it is not affiliated with TikTok or ByteDance.
Python quickstart
Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.
Source build vB58tHp5oGWTEgfzB. Documentation is regenerated from the default published build; private drafts are not included.