# TikTok Hashtag API. Send a hashtag or its link.

Exact post and view counts. We handle the proxies, blocks and platform changes.

[Get API key](https://socialtap.dev/signup/?next=%2Fplayground%2F%3Fendpoint%3Dtiktok.hashtag)

## TikTok Hashtag API at a glance

Returns a TikTok hashtag with its exact post and view counts, from its link, its name (with or without the #) or its ID. You also get TikTok's challenge ID, page link, description, picture and banner, and whether it is an advertiser's Branded Hashtag Challenge.

GET `/v1/tiktok/hashtag`

[Read the API reference](https://socialtap.dev/docs/reference/tiktok/hashtag/index.md)

- **1 credit** per request, $0.75–$1.97 per 1,000 requests
- **9 typed fields** null when unknown
- **`url`** is all it needs, e.g. `https://www.tiktok.com/tag/cooking`
- **100 credits** free when you sign up, no card, so you can build before you spend

## Send one request. Get 9 fields back.

Copy the request in your language, or hand it to your agent. Sign up for an API key and your first 100 credits are free.

`$ npm install socialtap`

`url = https://www.tiktok.com/tag/cooking`

[Open in playground](https://socialtap.dev/playground/?endpoint=tiktok.hashtag)

cURL:

```shell
curl -G 'https://socialtap.dev/v1/tiktok/hashtag' \
  --data-urlencode 'url=https://www.tiktok.com/tag/cooking' \
  -H "x-api-key: $SOCIALTAP_API_KEY"
```

TypeScript SDK:

```typescript
import { SocialTap } from "socialtap";

const client = new SocialTap(); // apiKey defaults to process.env.SOCIALTAP_API_KEY

const res = await client.tiktok.hashtag.get({ url: "https://www.tiktok.com/tag/cooking" });
console.log(res.data);
console.log(res.credits.charged, res.meta.request_id);
```

Node.js (fetch):

```javascript
const params = new URLSearchParams({
  url: "https://www.tiktok.com/tag/cooking",
});
const res = await fetch(`https://socialtap.dev/v1/tiktok/hashtag?${params}`, {
  headers: { "x-api-key": process.env.SOCIALTAP_API_KEY ?? "" },
});
const body = await res.json();
if (!res.ok) throw new Error(`${body.error.code}: ${body.error.message}`);
const { data, meta } = body;
console.log(data, meta.credits_charged);
```

Python (requests):

```python
import os

import requests

res = requests.get(
    "https://socialtap.dev/v1/tiktok/hashtag",
    params={"url": "https://www.tiktok.com/tag/cooking"},
    headers={"x-api-key": os.environ["SOCIALTAP_API_KEY"]},
)
body = res.json()
if not res.ok:
    raise RuntimeError(f"{body['error']['code']}: {body['error']['message']}")
data, meta = body["data"], body["meta"]
print(data, meta["credits_charged"])
```

Go (net/http):

```go
package main

import (
	"encoding/json"
	"fmt"
	"log"
	"net/http"
	"net/url"
	"os"
)

func main() {
	q := url.Values{}
	q.Set("url", "https://www.tiktok.com/tag/cooking")
	req, err := http.NewRequest("GET", "https://socialtap.dev/v1/tiktok/hashtag?"+q.Encode(), nil)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("x-api-key", os.Getenv("SOCIALTAP_API_KEY"))
	res, err := http.DefaultClient.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	defer res.Body.Close()
	var body struct {
		Data  json.RawMessage `json:"data"`
		Meta  map[string]any  `json:"meta"`
		Error *struct {
			Code    string `json:"code"`
			Message string `json:"message"`
		} `json:"error"`
	}
	if err := json.NewDecoder(res.Body).Decode(&body); err != nil {
		log.Fatal(err)
	}
	if body.Error != nil {
		log.Fatalf("%s: %s", body.Error.Code, body.Error.Message)
	}
	fmt.Println(string(body.Data), body.Meta["credits_charged"])
}
```

200 OK:

```json
{
  "data": {
    "approximate_fields": [],
    "description": null,
    "id": "18973",
    "metrics": {
      "post_count": 19505055
    },
    "name": "cooking",
    "platform": "tiktok",
    "platform_specific": {
      "tiktok": {
        "banner_url": null,
        "industry": null,
        "is_new_to_board": null,
        "is_promoted": false,
        "period_post_count": null,
        "period_view_count": null,
        "rank": null,
        "rank_change": null,
        "trend": [],
        "view_count": 560541308708
      }
    },
    "thumbnail_url": "https://p16-common-sign.tiktokcdn.com/musically-maliva-obj/bbbcb935f04337b7e6bdb05ee1b9f5e5.jpeg~tplv-tiktokx-origin.image?dr=14566&x-expires=4070908800&x-signature=SCRUBBED&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=9b759fb9&idc=my3",
    "unknown_fields": [
      "platform_specific.tiktok.trend"
    ],
    "url": "https://www.tiktok.com/tag/cooking"
  },
  "meta": {
    "request_id": "req_3f9c2a7d1e8b4c6a9f0e2d4b6a8c0e1f",
    "platform": "tiktok",
    "source": "api",
    "is_cached": false,
    "credits_charged": 1,
    "latency_ms": 741,
    "fetched_at": "2026-10-25T12:00:00Z",
    "input": {
      "kind": "hashtag",
      "id": "18973",
      "url": "https://www.tiktok.com/tag/cooking"
    },
    "credits_remaining": 9999,
    "client_request_id": null,
    "warnings": []
  }
}
```

## One schema on 2 platforms.

The [response reference](https://socialtap.dev/docs/reference/tiktok/hashtag/index.md#response) lists every field, its type and when it is `null`. [See the full schema](https://socialtap.dev/resources/hashtag/index.md).

- ### Null means unknown

  A field TikTok doesn't show is null, never zero or an empty string, so a real zero always means zero.
- ### What it accepts

  A TikTok hashtag page link (tiktok.com/tag/cooking), the hashtag itself with or without the # (cooking, #cooking), or the app's share link of a hashtag by its ID (m.tiktok.com/h5/share/tag/18973.html).
- ### Write one parser

  TikTok and Instagram answer in these fields, so the code that reads one reads them all.

- **`platform`string**: Platform ID (tiktok, instagram, …).
- **`id`string**: Platform-native hashtag ID (TikTok's challenge ID, Threads' tag ID); on platforms whose public pages key a hashtag by its name (Instagram, YouTube, Facebook, X), the name lowercased.
- **`name`string**: The tag without #, as the platform shows it (case kept). Threads tags may contain spaces ("book club").
- **`url`string**: Canonical hashtag page URL (for a multi-word Threads tag, its tag search page).
- **`description`string**: The hashtag's description as its page shows it; null when it has none.
- **`thumbnail_url`string**: The hashtag's own picture (not one of its posts' images); null when it has none. Platform CDN URLs can expire.
- **`metrics`object**: Counts at fetch time; null = hidden or not exposed, 0 = zero.
- **`approximate_fields`string\[\]**: JSON paths of values rounded by the platform or parsed from display text ("36M videos": metrics.post_count). \[\] when all exact.

Live data from 33 platforms.

[TikTok](https://socialtap.dev/apis/tiktok/index.md) · [Instagram](https://socialtap.dev/apis/instagram/index.md) · [Facebook](https://socialtap.dev/apis/facebook/index.md) · [YouTube](https://socialtap.dev/apis/youtube/index.md) · [Reddit](https://socialtap.dev/apis/reddit/index.md) · [Threads](https://socialtap.dev/apis/threads/index.md) · [Spotify](https://socialtap.dev/apis/spotify/index.md) · [Amazon](https://socialtap.dev/apis/amazon/index.md) · [Apple Music](https://socialtap.dev/apis/applemusic/index.md) · [Pinterest](https://socialtap.dev/apis/pinterest/index.md) · [Rumble](https://socialtap.dev/apis/rumble/index.md) · [X](https://socialtap.dev/apis/x/index.md) · [Bluesky](https://socialtap.dev/apis/bluesky/index.md) · [Twitch](https://socialtap.dev/apis/twitch/index.md) · [LinkedIn](https://socialtap.dev/apis/linkedin/index.md) · [Telegram](https://socialtap.dev/apis/telegram/index.md) · [TikTok Shop](https://socialtap.dev/apis/tiktokshop/index.md) · [Kwai](https://socialtap.dev/apis/kwai/index.md) · [Snapchat](https://socialtap.dev/apis/snapchat/index.md) · [SoundCloud](https://socialtap.dev/apis/soundcloud/index.md) · [Truth Social](https://socialtap.dev/apis/truthsocial/index.md) · [Kick](https://socialtap.dev/apis/kick/index.md) · [Komi](https://socialtap.dev/apis/komi/index.md) · [Lnk.Bio](https://socialtap.dev/apis/linkbio/index.md) · [Linkme](https://socialtap.dev/apis/linkme/index.md) · [Linktree](https://socialtap.dev/apis/linktree/index.md) · [Pillar](https://socialtap.dev/apis/pillar/index.md) · [TikTok Ad Library](https://socialtap.dev/apis/tiktok-ad-library/index.md) · [Facebook Ad Library](https://socialtap.dev/apis/facebook-ad-library/index.md) · [Facebook Events](https://socialtap.dev/apis/facebook-events/index.md) · [Facebook Marketplace](https://socialtap.dev/apis/facebook-marketplace/index.md) · [Google Ads Transparency Center](https://socialtap.dev/apis/google-ads-transparency/index.md) · [LinkedIn Ad Library](https://socialtap.dev/apis/linkedin-ad-library/index.md)

## What teams build with the TikTok Hashtag API.

- ### Size a hashtag before a campaign
- ### Track a hashtag's views over time
- ### Get a hashtag's challenge ID from its name
- ### Spot brands' sponsored hashtag challenges

## Good to know before you build.

- Post and view counts are TikTok's exact all-time counts for the hashtag, not a recent window. The TikTok Trending Hashtags API has trending tags with their counts for a period.
- An all-digit value (2024) is read as a hashtag's name. To look a hashtag up by its numeric ID, send its share link (m.tiktok.com/h5/share/tag/\<id>.html).
- A hashtag TikTok doesn't have, or one it hides (banned tags), returns not_found.
- thumbnail_url and banner_url are TikTok CDN links that expire.
- If TikTok's hashtag detail is down, the answer comes from the hashtag's embed page: its counts can lag by a few hours, and is_promoted is null.

## 1 credit per request. Failed requests are free.

Buy credits once and spend them on any endpoint, on any platform.

[Plans and packs](https://socialtap.dev/pricing/index.md) · [How this endpoint is priced](https://socialtap.dev/docs/reference/tiktok/hashtag/index.md#pricing) · [How credits work](https://socialtap.dev/docs/credits/index.md)

| Source | Price per successful request | Per 1,000 requests |
| --- | --- | --- |
| Any source | 1 credit | $0.75–$1.97 |

- Cache hits are free.
- Credits from packs and top-ups never expire.
- A monthly plan's credits are spent first, and what is left of them ends at each renewal.
- Prices exclude tax: sales tax is added at checkout where it applies.
- Outside the US, plans and packs are sold to businesses: checkout asks for your VAT, GST or other business tax ID.

## Questions about the TikTok Hashtag API.

More in the [API reference](https://socialtap.dev/docs/reference/tiktok/hashtag/index.md).

**How much does the TikTok Hashtag API cost?**

A request costs 1 credit. SocialTap credits cost $0.75–$1.97 per 1,000, depending on the plan or pack.

Other platforms

## Hashtags on 1 more platform.

- [Instagram Hashtag API](https://socialtap.dev/apis/instagram/hashtag/index.md) (1 credit · `GET /v1/instagram/hashtag`)

More TikTok

## TikTok API. 31 endpoints, one key.

- [TikTok Post API](https://socialtap.dev/apis/tiktok/post/index.md) (1 credit · `GET /v1/tiktok/post`)
- [TikTok Posts API](https://socialtap.dev/apis/tiktok/posts/index.md) (1 credit / page · `GET /v1/tiktok/posts`)
- [TikTok Search API](https://socialtap.dev/apis/tiktok/search_posts/index.md) (1 credit / page · `GET /v1/tiktok/search_posts`)
- [TikTok Top Videos API](https://socialtap.dev/apis/tiktok/top_posts/index.md) (1 credit / page · `GET /v1/tiktok/top_posts`)
- [TikTok Liked Posts API](https://socialtap.dev/apis/tiktok/liked_posts/index.md) (1 credit / page · `GET /v1/tiktok/liked_posts`)
- [TikTok Place Posts API](https://socialtap.dev/apis/tiktok/place_posts/index.md) (1 credit / page · `GET /v1/tiktok/place_posts`)
- [TikTok Sound Posts API](https://socialtap.dev/apis/tiktok/sound_posts/index.md) (1 credit / page · `GET /v1/tiktok/sound_posts`)
- [TikTok Effect Posts API](https://socialtap.dev/apis/tiktok/effect_posts/index.md) (1 credit / page · `GET /v1/tiktok/effect_posts`)
- [TikTok Hashtag Posts API](https://socialtap.dev/apis/tiktok/hashtag_posts/index.md) (1 credit / page · `GET /v1/tiktok/hashtag_posts`)
- [TikTok Playlist Posts API](https://socialtap.dev/apis/tiktok/playlist_posts/index.md) (1 credit / page · `GET /v1/tiktok/playlist_posts`)
- [TikTok Trending Videos API](https://socialtap.dev/apis/tiktok/trending_posts/index.md) (1 credit / page · `GET /v1/tiktok/trending_posts`)
- [TikTok Profile API](https://socialtap.dev/apis/tiktok/profile/index.md) (1 credit · `GET /v1/tiktok/profile`)
- [TikTok Followers API](https://socialtap.dev/apis/tiktok/followers/index.md) (1 credit / page · `GET /v1/tiktok/followers`)
- [TikTok Following API](https://socialtap.dev/apis/tiktok/following/index.md) (1 credit / page · `GET /v1/tiktok/following`)
- [TikTok Comment API](https://socialtap.dev/apis/tiktok/comment/index.md) (1 credit · `GET /v1/tiktok/comment`)
- [TikTok Comments API](https://socialtap.dev/apis/tiktok/comments/index.md) (1 credit / page · `GET /v1/tiktok/comments`)
- [TikTok Comment Replies API](https://socialtap.dev/apis/tiktok/replies/index.md) (1 credit / page · `GET /v1/tiktok/replies`)
- [TikTok Transcript API](https://socialtap.dev/apis/tiktok/transcript/index.md) (From 1 credit · `GET /v1/tiktok/transcript`)
- [TikTok Trending Hashtags API](https://socialtap.dev/apis/tiktok/trending_hashtags/index.md) (1 credit / page · `GET /v1/tiktok/trending_hashtags`)
- [TikTok Top Search API](https://socialtap.dev/apis/tiktok/search_top/index.md) (From 1 credit / page · `GET /v1/tiktok/search_top`)
- [TikTok User Search API](https://socialtap.dev/apis/tiktok/search_profiles/index.md) (From 1 credit / page · `GET /v1/tiktok/search_profiles`)
- [TikTok Sound Search API](https://socialtap.dev/apis/tiktok/search_sounds/index.md) (From 1 credit / page · `GET /v1/tiktok/search_sounds`)
- [TikTok Hashtag Search API](https://socialtap.dev/apis/tiktok/search_hashtags/index.md) (From 1 credit / page · `GET /v1/tiktok/search_hashtags`)
- [TikTok Playlists API](https://socialtap.dev/apis/tiktok/playlists/index.md) (1 credit / page · `GET /v1/tiktok/playlists`)
- [TikTok Engagement API](https://socialtap.dev/apis/tiktok/engagement/index.md) (1 credit · `GET /v1/tiktok/engagement`)
- [TikTok Search Suggestions API](https://socialtap.dev/apis/tiktok/search_suggestions/index.md) (1 credit / page · `GET /v1/tiktok/search_suggestions`)
- [TikTok Live API](https://socialtap.dev/apis/tiktok/live/index.md) (1 credit · `GET /v1/tiktok/live`)
- [TikTok Sound API](https://socialtap.dev/apis/tiktok/sound/index.md) (1 credit · `GET /v1/tiktok/sound`)
- [TikTok Download API](https://socialtap.dev/apis/tiktok/download/index.md) (1 credit · `GET /v1/tiktok/download`)
- [TikTok Effect API](https://socialtap.dev/apis/tiktok/effect/index.md) (1 credit · `GET /v1/tiktok/effect`)

## Try it on a link you already have.

Paste it in the playground, or copy the request into your code.

100free credits

- No credit card
- Failed requests are free
- Works on all 218 endpoints

[Start for free](https://socialtap.dev/signup/) [Read the docs](https://socialtap.dev/docs/index.md)

---

[HTML version](https://socialtap.dev/apis/tiktok/hashtag/) · [Docs index for AI agents](https://socialtap.dev/llms.txt) · [All docs in one file](https://socialtap.dev/llms-full.txt)
