How do I get trending TikTok hashtags and sounds?
Three endpoints. GET /v1/tiktok/trending/music lists the sounds TikTok is pushing now. GET /v1/tiktok/trending/posts lists the videos on the trending feed. GET /v1/tiktok/search/hashtags?q=… finds hashtags by keyword with their post counts. All three answer with one API key.
Trends move by region and by hour. Read on a schedule and store capturedAt with each row. A trend is a series, not a snapshot.
Checked September 2026 · request and response run against the API · no affiliate links
curl "https://api.openhandle.dev/v1/tiktok/trending/music" \
-H "Authorization: Bearer $OPENHANDLE_API_KEY"import { OpenHandle } from '@openhandle/sdk';
const openhandle = new OpenHandle({ apiKey: process.env.OPENHANDLE_API_KEY! });
const music = await openhandle.tiktok.trending.music.list();
const hashtags = await openhandle.tiktok.search.hashtags.list({ q: 'orchard' });
for (const sound of music.data) console.log(sound.id, sound.title);{
"platform": "tiktok",
"resource": "music",
"capturedAt": "2026-09-18T12:04:51Z",
"source": "live",
"data": [
{
"id": "950000000003",
"title": "Synthetic Signal",
"isOriginalSound": false,
"url": "https://www.tiktok.com/music/synthetic-signal-950000000003"
}
],
"meta": { "cursors": { "next": null } }
}Trimmed to one sound. The full record has artist, duration, cover, and usage metrics where TikTok shows them. The example is a Test sound, so you can run it on a free Test key.
From a trend to the videos
- —Videos using a sound.
GET /v1/tiktok/music/{id}/postslists videos that use the sound, newest first. - —Videos under a hashtag.
GET /v1/tiktok/hashtags/{id}/postslists videos for a hashtag. The hashtag ID comes from search. - —Trending categories.
GET /v1/tiktok/trending/categorieslists the category buckets TikTok groups trends into.
Measure a trend, not a moment
Read the trending lists every few hours and store every row with capturedAt. A sound that appears for the first time is a signal. A sound that climbs over three reads is a trend. A hashtag post count read twice, a day apart, gives you the growth rate. None of that exists in a single response.
What TikTok shows, and what it does not
The trending feed is what TikTok shows a logged-out visitor. It is not personalized, and it is not the Creative Center’s regional charts. A metric TikTok hides is null, never 0.
When this does not work
Empty is an answer. A cursor from another request is a mistake.
| Situation | Status | Code |
|---|---|---|
| No hashtags match the query | 200 | empty data |
| The sound or hashtag ID does not exist | 404 | PROFILE_NOT_FOUND |
| The cursor came from another request | 400 | CURSOR_MISMATCH |
{
"error": {
"code": "CURSOR_MISMATCH",
"message": "The cursor does not belong to this request.",
"requestId": "req_01j8…",
"retryable": false
}
}An empty page bills as an answered request. Every trending read is a live read unless you ask for a cache tier.
Read next
More TikTok questions
Send your agent ahead.
Paste the prompt into your agent and it sets everything up. Or come yourself, it takes five minutes.