# TikTok hashtags

> The most-used and most-viewed hashtags on TikTok for any period of up to 90 days. Works like the Hashtags top list, $0.05 per successful request.

Source: https://dev.virlo.ai/docs/tiktok-hashtags
Markdown: https://dev.virlo.ai/docs/tiktok-hashtags.md
Section: By platform

## About the Virlo API (applies to every page)

- Base URL: `https://api.virlo.ai/v1`. Every request needs the header `Authorization: Bearer YOUR_API_KEY` (keys start with `virlo_tkn_`).
- Responses are JSON inside a `data` field, except the `/v1/webhooks` endpoints, which return the object or array directly. Field names are snake_case.
- Prices are in US dollars from a prepaid balance. 1 credit = $0.01. The `X-Cost` response header on each successful response is the exact charge. Errors are free.
- Slow jobs return an ID. Check its status every 15 seconds (or whatever `retry_after_seconds` says) until `finalized` is `true`.
- All docs pages: https://dev.virlo.ai/llms.txt. Every page in one file: https://dev.virlo.ai/llms-full.txt. MCP server for AI assistants: https://dev.virlo.ai/api/mcp/mcp.

---

See which hashtags TikTok videos used most between two dates.

**At a glance**

- **What it does:** Ranks hashtags by use or views.
- **You send:** Two dates, at most 90 days apart.
- **You get back:** Up to 100 hashtags with video counts and first-week views. Counts cover only videos Virlo found in their first week, not TikTok's total, so don't compare platforms.
- **Cost:** $0.05, even if empty. Errors are free.

## Top TikTok hashtags

**Endpoint:** `GET https://api.virlo.ai/v1/tiktok/hashtags`

Same as the [Hashtags top list](https://dev.virlo.ai/docs/hashtags#get-hashtags), for TikTok only. A `platform` option gets a `400` error.

Cost per request: $0.05

- `start_date` (string, required): First posting day (UTC), `YYYY-MM-DD`.
- `end_date` (string, required): Last posting day, included. Max 90 days later.
- `limit` (number, optional): 1 to 100, default 50.
- `order_by` (string, optional): `count` (default) or `views`.
- `sort` (string, optional): `desc` (default) or `asc`.

**cURL request:**

```bash
curl -G https://api.virlo.ai/v1/tiktok/hashtags \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d start_date=2026-08-25 \
  -d end_date=2026-09-23 \
  -d limit=10 \
  -d order_by=views
```

**JavaScript request:**

```js
const params = new URLSearchParams({
  start_date: '2026-08-25',
  end_date: '2026-09-23',
  limit: '10',
  order_by: 'views',
})

const res = await fetch(`https://api.virlo.ai/v1/tiktok/hashtags?${params}`, {
  headers: { Authorization: 'Bearer YOUR_API_KEY' },
})
const { data } = await res.json()
```

**Python request:**

```python
import requests

res = requests.get(
    'https://api.virlo.ai/v1/tiktok/hashtags',
    headers={'Authorization': 'Bearer YOUR_API_KEY'},
    params={'start_date': '2026-08-25', 'end_date': '2026-09-23', 'limit': 10, 'order_by': 'views'},
)
data = res.json()['data']
```

**Response 200:**

```json
{
  "data": [
    { "hashtag": "fyp", "count": 31049, "total_views": 5162705739 },
    { "hashtag": "viral", "count": 9971, "total_views": 1693054907 }
  ]
}
```

**Response 400 No dates:**

```json
{
  "statusCode": 400,
  "code": "invalid_date_range",
  "error": "Bad Request",
  "message": ["start_date must be a string", "end_date must be a string"]
}
```

> **Note:** **One hashtag, TikTok only?** [One hashtag's performance](https://dev.virlo.ai/docs/hashtags#get-hashtag-performance) always mixes all platforms. [Other options](https://dev.virlo.ai/docs/hashtags#platform-paths).

[Python walkthrough](https://dev.virlo.ai/guides/tiktok-hashtag-analytics-api)

---

More in By platform:

- [YouTube hashtags](https://dev.virlo.ai/docs/youtube-hashtags.md)
- [YouTube videos](https://dev.virlo.ai/docs/youtube-videos.md)
- [TikTok videos](https://dev.virlo.ai/docs/tiktok-videos.md)
- [Instagram hashtags](https://dev.virlo.ai/docs/instagram-hashtags.md)
- [Instagram videos](https://dev.virlo.ai/docs/instagram-videos.md)
