# How do I get trending TikTok hashtags and sounds?

TikTok. Checked September 2026.

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.

## GET /v1/tiktok/trending/music

```bash
curl "https://api.openhandle.dev/v1/tiktok/trending/music" \
  -H "Authorization: Bearer $OPENHANDLE_API_KEY"
```

```ts
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);
```

200 OK:

```json
{
  "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}/posts` lists videos that use the sound, newest first.
- **Videos under a hashtag.** `GET /v1/tiktok/hashtags/{id}/posts` lists videos for a hashtag. The hashtag ID comes from search.
- **Trending categories.** `GET /v1/tiktok/trending/categories` lists 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` |

```json
{
  "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.

## Related

- [TikTok API](https://openhandle.dev/apis/tiktok): Every TikTok endpoint, including trending, music, and hashtags.
- [How do I search TikTok videos by keyword?](https://openhandle.dev/questions/how-do-i-search-tiktok-videos-by-keyword): Find videos, not just tags.
- [Social listening use case](https://openhandle.dev/use-cases/social-listening): Comment streams and trend tracking on scheduled reads.
