TikTok Popular Hashtags API
Related TikTok hashtags — Creative Center chart when it answers, otherwise a disclosed niche fallback. Flat 2 credits.
GET request to /v1/tiktok/popular-hashtags that responds with clean JSON and costs 2 credits. Pass cache=true for a free 24h cache hit; default is always fresh. Start with 100 free credits — no credit card.What is the TikTok Popular Hashtags API?
Reads TikTok Creative Center's popular-hashtag chart when query is omitted or query=trending (10s cap; typically a few seconds). Signed-out Creative Center access lists the top 3 hashtags per country and period — pagination.totalCount says how many exist, and a note explains it when you asked for more. Each chart row has the period's post count (videoCount), views (totalPlays), trend[] and topCreators. period=120 and newOnBoard=true are not served by the chart (chartStatus=fetch_empty / filter_unsupported) and use the fallback. A chart miss falls through to related-tag co-occurrence seeded with fyp — source is niche_fallback, not a silent substitute — and opens a circuit for the same country/period/page/industry (chartStatus=skipped_circuit_open) until the 60s cooldown (300s after 3 misses) expires. Pass query=<niche> (e.g. skincare) to skip the chart and get up to limit related tags. A query that is not a TikTok hashtag (a typo or made-up word) is 404 HASHTAG_NOT_FOUND at 0 credits instead of unrelated tags. A double miss is 502 with a 60s negative cache for the same parameters (persistent after 3); other parameters are unaffected. Overall 80s deadline. Flat 2 credits on a 200; 5xx stay 0.
What you get
- source=creative_center | niche_fallback — which path produced the list
- Chart rows: rank, videoCount, totalPlays, trend[], topCreators
- chartStatus skipped_circuit_open vs timeout/fetch_empty/filter_unsupported — skip ≠ miss
- query=<niche> skips the chart for a longer related-tag list
Try it
Fill in the parameters below and copy a ready-to-run request, or open the live Playground to run it against your account (no API key paste).
Parameters
curl "https://api.captapi.com/v1/tiktok/popular-hashtags" \
-H "Authorization: Bearer capt_live_..."
# or: -H "x-api-key: capt_live_..."Edit the parameters and the code updates instantly. Switch languages and hit copy.
Example response
{
"success": true,
"data": {
"query": "skincare",
"discovery": "co_occurrence",
"discoverySource": "hashtag_page",
"sampleSize": 20,
"rankBy": "videoCount",
"fetchedAt": "2026-08-03T15:08:07.000Z",
"totalReturned": 2,
"hashtags": [
{
"name": "skincare",
"url": "https://www.tiktok.com/tag/skincare",
"rank": 1,
"hashtagId": "504245",
"videoCount": 56953998,
"totalPlays": 954780316160,
"sampleVideoCount": 17,
"samplePlays": 40305805,
"growthRate": null
},
{
"name": "skincareroutine",
"url": "https://www.tiktok.com/tag/skincareroutine",
"rank": 2,
"hashtagId": "42164",
"videoCount": 8200000,
"totalPlays": 120000000000,
"sampleVideoCount": 5,
"samplePlays": 3003805,
"growthRate": null
}
]
}
}Billing metadata is returned in response headers: X-Captapi-Credits (credits charged), X-Captapi-Cache (hit or miss), and X-Captapi-Request-Id (include it when contacting support). Where the response has a source field, it names the path that served the data: native, extended, cache or asr. Failed requests (4xx/5xx) are never charged. See the full list of error codes in the error reference.
Response structure
A successful call returns success and a data object with the following fields:
Top-level fields
queryNiche seed echoed on the co-occurrence path. Omitted on the Creative Center chart (omit query / query=trending).discoveryHow hashtags were found. popular-hashtags: "creative_center" (official chart) or "co_occurrence" (related tags from seed videos).discoverySourceWhere the seed video sample came from (hashtag_page, top_search, or extended_hashtag_videos) — co-occurrence path only.sampleSizeHow many seed videos were used for co-occurrence (typically ~20 on discoverySource=top_search or hashtag_page). Not commenter countries and not /tiktok/audience-demographics. Omitted on the Creative Center path.rankByMetric used for rank (creative_center_rank on Creative Center; videoCount on co-occurrence enrich).fetchedAtWhen this snapshot was fetched (ISO 8601 UTC).totalReturnedNumber of items returned in this response.
Hashtags
Each item in hashtags contains:
nameHashtag without the leading #.urlCanonical URL of the item.rankRank position in the list.hashtagIdTikTok challenge / hashtag id (cid) when available.videoCountCreative Center chart: posts using the hashtag in the selected period. Co-occurrence path: all-time TikTok total from challenge/detail (null when that lookup did not finish inside the deadline).totalPlaysPopulation total plays/views for a hashtag when from challenge/detail (statsV2). On popular-hashtags this is not the sample sum — see samplePlays.sampleVideoCountHow many videos in this response's sample included the hashtag (co-occurrence count). Not the hashtag's TikTok-wide total — see videoCount.samplePlaysSum of play/view counts across sample videos that included the hashtag. Not the hashtag's TikTok-wide totalPlays.growthRateHashtag/song growth signal. On Creative Center charts: derived from trend[] when present. On challenge/detail co-occurrence path: null.
Timings
Deprecated: timings will be removed from response bodies on 2026-12-17. Read the Server-Timing response header instead (total;dur=<ms>). Until then the timings object contains:
totalMsTotal ms. Example: 154.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| country | string | No | Two-letter ISO country for the Creative Center chart. Default US. |
| period | integer | No | Lookback days: 7, 30, or 120 (180→120). Default 7. |
| page | integer | No | Creative Center page (default 1). |
| sortBy | string | No | Chart sort: popular (default). |
| newOnBoard | boolean | No | Only hashtags newly on the Top 100. |
| industryId | string | No | Optional Creative Center industry_id. |
| query | string | No | Optional niche seed for co-occurrence + challenge/detail enrich. Omit, or pass trending, to try the Creative Center chart (10s cap); a miss falls through to related tags for fyp (source=niche_fallback) and opens a chart circuit for that country/period/page/industry. Later calls with the same chart parameters skip the chart (chartStatus=skipped_circuit_open) until the cooldown expires. Any other value skips the chart. |
| limit | integer | No | Max items to return (default 20, max 100). Flat 2 credits per call. |
| cache | boolean | No | Set true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh. |
Authentication: send your key as Authorization: Bearer capt_live_.... A typical call costs 2 credits. Pass cache=true for a free 24h cache hit; default is always fresh.
tiktok_popular_hashtags via @captapi/mcp. Set it up →How it works
- 1. Sign up — get 100 free credits, no card required.
- 2. Create a key from your dashboard.
- 3. Send one request to
/v1/tiktok/popular-hashtagsand parse the JSON response.
Use cases
Trend Charts
Pull Creative Center Top-100 hashtags by country and period (omit query / query=trending).
Rising Tags
Use rankDiff + trend[] on the Creative Center path to spot surging hashtags early.
Campaign Tracking
Monitor hashtagId + videoCount/totalPlays for branded tags over time.
Related Discovery
Pass query=niche for co-occurrence related tags when you need adjacency, not the chart.
Frequently asked questions
What does the TikTok Popular Hashtags API do?+
The TikTok Popular Hashtags API lets you list items in bulk with metadata from a public TikTok popular hashtags using one GET request to /v1/tiktok/popular-hashtags. It returns clean JSON — no OAuth or infrastructure setup required.
How many credits does the TikTok Popular Hashtags API cost?+
Each successful call costs 2 credits. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Failed or empty results are never charged.
Do I need a TikTok API key or OAuth?+
No. A single Captapi key works across every platform Captapi supports — YouTube, TikTok, Instagram, Facebook, Twitter/X, Reddit, Threads, Bluesky, Pinterest, LinkedIn, Rumble, Spotify, Kwai, and more. We handle access, rate limits, retries, and authentication for you.
Where are trend[] and topCreators?+
Only when source=creative_center — a Creative Center chart hit. They are omitted on source=niche_fallback and on query=<niche>. rankDiff is no longer returned: TikTok's current chart API does not expose rank movement.
Why does the default call return only 3 hashtags?+
Creative Center lists the top 3 hashtags per country and period to signed-out visitors; pagination.totalCount shows that, and a note says so when you asked for more. Pass query=<niche> for a longer related-tag list (co-occurrence with real TikTok totals).
Why did popular-hashtags time out at 80 seconds?+
TikTok moved the Creative Center hashtag chart to a new page in October 2026, so every chart attempt missed and fell through to a slow fallback, and one timeout replayed as a 502 to every other caller for 60–300 seconds. The chart is read from TikTok's current API now (a few seconds), the fallback is bounded so it answers inside the deadline, and failures are remembered only for the same parameters.
Is sampleSize commenter countries?+
No. That description belongs to /tiktok/audience-demographics. On this endpoint sampleSize is how many seed videos were used for co-occurrence (typically ~20 on discoverySource=top_search / hashtag_page). It is omitted on the Creative Center path.
Why did query=skincare cost 18 credits?+
That was a billing bug, not a price change. The page has always said flat 2. After the chart-miss fallthrough was removed, query=<niche> was the only related-tags path — and leftover enrich math (ceil(25 × 0.7) = 18) billed it as per-result. Both paths are flat 2 credits again. 5xx stay 0.
Is the TikTok Popular Hashtags API suitable for production use?+
Yes. It is a stable REST endpoint with predictable JSON and automatic retries. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Use it for analytics, monitoring, and content automation.
More TikTok APIs
Ready to use the TikTok Popular Hashtags API?
Sign up, grab your key, and make your first call in 60 seconds.