100 free credits on signup · no card required

TikTok Hashtag Search API

One keyword in. Clean JSON out.

Give this endpoint one hashtag and it returns recent public TikTok videos carrying that tag, each with its full engagement numbers already parsed. Billing is per video returned, at 3 credits each, so a 20-video pull costs 60 credits. It is the fastest way to see what a tag is actually producing right now without opening the app.

Credits 3 / result
Input ?query=
Cache 15m–7d
Paging limit
GET · BEARER
Request composing…
P @plannerpro

How I plan a week of posts in 30 minutes

▶ 0♥ 5,120
Fresh when it matters
age-aware cache
Works with your stack
cURL Python Node.js Zapier n8n Make MCP
One key · one credit balance · plain REST

The difference

Stop parsing markup. Start reading fields.

On the left, what a headless browser hands you. On the right, what the endpoint hands you.

Scraping it yourself raw HTML · every call
<div class="css-1qb2n7d-DivItemContainer e148ts220" data-e2e="recommend-list-item"><div class="css-x6y88p-DivContainer"><a class="css-1g95xhm-AVideoContainer" href="/@tiktok/video/7231338487075638570"><video src="blob:https://www.tiktok.com/8f3a..."></video></a></div><div class="css-1f5bbrz-DivCardFooter"><strong data-e2e="video-views" class="css-ws4x78">1.2M</strong><strong data-e2e="like-count">88.4K</strong><strong data-e2e="comment-count">2,314</strong></div><h3 class="css-1yy6f0h">Behind the scenes of our new feature</h3><script id="__UNIVERSAL_DATA_FOR_REHYDRATION__" type="application/json">{"__DEFAULT_SCOPE__":{"webapp.video-detail"...
×Class names rotate; your selectors break weekly ×Headless browsers, proxies, blocks to babysit ×Counts arrive as strings, not numbers
One GET request 13 typed fields
{
"data": [
{
"id": "v_77120",
"url": "https://example-result-url",
"caption": "How I plan a week of posts in 30 minutes",
"author": {
"handle": "plannerpro"
},
"metrics": {
"views": 88210,
"likes": 5120
},
"posted_at": "2026-07-08T16:20:00Z"
}
],
"meta": {
"count": 2,
"limit": 20,
"item": "result"
},
"request_id": "req_01JZX4M8Q2TE9W"
}
Stable field names, documented nulls No proxies, no browser, no login session Counters are integers you can sort on

The payload

What comes back

{ data, meta?, request_id }
01 Same shape as single-video stats

An array. Every element is one video, described exactly the way the TikTok Stats API describes a single video: id, canonical URL, caption, the five engagement counters, runtime, publish time, creator, sound and parsed hashtags. Same shape, many rows. If you already parse the single-video response, this needs no new code on your side.

02 A live sample, not an archive

The set you get is what TikTok surfaces publicly for that tag, in the order the platform returns it. That order leans recent and popular; it is not a complete archive of every video ever posted under the tag, and nobody outside TikTok can produce one. Ask for 20 and you get up to 20 — fewer if the tag is small or newly coined.

03 Co-occurring tags come free

Because each row carries `hashtags`, one call also tells you which other tags travel with yours. Count the co-occurrences across a result set and you have a cheap map of the neighbouring tags worth searching next.

Field explorer Pick a key to see its type and the caveats.
number|null Nullable Sortable metric
likes

Public like count.

{
"id": "v_77120",
"url": "https://example-result-url",
"caption": "How I plan a week of posts in 30 minutes",
"views": 88210,
"likes": 5120,
"comments": 0,
"shares": 0,
"saves": 0,
"duration_sec": 0,
"posted_at": "2026-07-08T16:20:00Z",
"author": { … },
"music": "…",
"hashtags": ["…"]
}
Good fit

Reach for this when

  • Trend monitoring: run the same tag daily and watch median views and post volume move. The shape of that curve tells you whether a tag is climbing or already saturated.
  • Finding creators inside a niche. Pull a tag, group by author.handle, and you have a candidate list sorted by how well their tagged content actually performs.
  • Sourcing UGC for a branded tag or campaign hashtag, with the video URLs you need to request rights or embed.
  • Building a content brief. Read 40 captions and durations for a tag and the format that works becomes obvious faster than any trend report.
  • Seeding a wider crawl — take the co-occurring hashtags from one pull and search those next.
Different job?

There's an endpoint for that

  • You already know which videos you care about and just want their numbers. One URL at a time through the TikTok Stats API is cheaper than searching a tag and filtering.
  • You want everything one creator has posted, not everything under a tag — that is the TikTok Channel Videos API.
  • You are searching for words in captions rather than a tag. This endpoint takes a hashtag, not free text.
  • You need the same view on another network. We do not ship a hashtag endpoint for Instagram — the closest thing is the Instagram Reels Search API, which matches on a keyword rather than browsing a tag page.

Pricing

Start free, pay for what comes back

Billing is per video returned, at 3 credits each — about 1.5¢ on the monthly plan. A 20-video pull is 60 credits, roughly 30¢, and a tag that returns nothing still costs 1 credit.

Estimate your bill
$10/ month
30 results/day × 3 credits × 365 days = 32,850 credits/yr, or $117/yr on the annual plan plus 21 top-up blocks Whichever plan is cheaper for that volume, divided by 12.
30
102,000
Credits / yr 32,850
Plan Annual $54/yr
Per result

Estimate only, on a full-year basis. 3 credits per returned result. Monthly: $5 per 1,000 credits with $4/1,000 top-ups. Annual: $54 per 12,000 credits with $3/1,000 top-ups. We show whichever plan is cheaper for your annual volume, divided by 12. Failed calls are never charged; cache hits cost the same as fresh calls.

Free trial
100 credits

On signup, no card. Your key is on screen immediately.

Get your free API key
Monthly $5/mo 1,000 credits. Top-ups $4 per extra 1,000.
Annual $54/yr 12,000 credits. Top-ups $3 per extra 1,000.

Entry price, side by side

Cheapest way to start

Verified July 2026 from each vendor's live pricing page
ScraperSocial
$5 / mo 1,000 credits · 100 free credits, no card
Supadata
$5 / mo 300 credits, annual commitment · 100 free/mo
SocialKit
$29 / mo 12,000 credits · 20 free credits
Dumpling AI
$40 / mo Billed annually · free tier size unpublished
ScrapeCreators
$47 pack 25,000 credits, no subscription · 100 free once

Credits are not equivalent units across vendors — each meters differently. Price your own workload on both before deciding on entry price alone. At high volume, several of these are cheaper per credit than we are.

Engineering notes

Docs you can build on

We document exactly how every endpoint behaves — nulls, caching, billing — so what you ship on day one is still running in month six. No surprises, no support tickets.

Failed calls are never charged Public data only, no login session Built for parallel traffic

The unit is a result. At 3 credits each, a limit of 50 costs 150 credits whether you read all 50 or one. Set the limit to what you will actually use, and prefer several small scheduled pulls over one huge one — a daily 20 is both cheaper and more useful than a weekly 140, which would also have to run as an async job.

If the tag returns fewer videos than you asked for, you are charged for what came back, not for the limit you requested.

TikTok decides what to surface for a tag, and that decision changes through the day. Two calls an hour apart will overlap heavily but not exactly. Store rows keyed on `id` and upsert; do not assume the Nth item is the same video it was this morning.

There is no cursor, page token or offset — one call, one batch, no way to resume where it left off. Raising the limit is how you go deeper, and the depth available depends on how much public content the tag has. Note that a limit above 50 stops being a synchronous request: it is submitted as an async job and you get back a job handle to collect from, not rows in the response.

Pass the tag with or without the leading #; both work. One tag per call — there is no AND/OR syntax, and a multi-word string is not a hashtag. For a tag intersection, pull each tag separately and intersect on `id` yourself.

Tags are matched as TikTok stores them, so casing does not matter but spelling does. A typo returns an empty array rather than a near-miss.

Counters can be null on very new videos, and `music` and `hashtags` are often absent. Filter on a field only after checking it exists. A row with a null view count is still a real video, not a broken response.

Responses sit in the fast cache class, so a repeated pull of the same tag inside the window comes back in milliseconds with x-cache: hit. A cache hit is billed at the same rate as a fresh one. Send fresh=true when you specifically need a new sample, such as the first call of a scheduled run.

Questions

Frequently asked

Send a GET to /v1/tiktok/hashtag-search with your tag in the query parameter and your API key in the header. The response is a JSON array of videos with engagement counts already parsed. No TikTok developer account or OAuth is involved — the endpoint reads the same public tag pages you can open in a browser while logged out.

3 credits per video returned. Credits are $0.005 each monthly and $0.0045 annual, so 20 videos costs 60 credits, roughly 30 cents. A limit of 100 costs 300 credits. Because you are charged per result, the limit you set is the main lever on your bill. Failed calls are not charged.

Set a limit and you get up to that many, in one batch. Popular tags fill large limits easily; niche or brand-new tags return whatever exists, which may be a handful. There is no pagination of any kind, so depth comes from the limit rather than from walking pages — and past 50 the request becomes an async job rather than a direct response. For long-term coverage, run smaller pulls on a schedule and deduplicate on the video id.

Not in a single call. The endpoint takes one hashtag. To find videos carrying both tags, call it twice and intersect the two arrays on the id field — that also tells you how much the two tags genuinely overlap, which a combined query would hide. Every row includes its own hashtags array to help with that.

No, and no public source can. TikTok surfaces a subset for each tag, weighted towards recent and well-performing content, and that subset shifts through the day. Treat a pull as a sample of what the tag is showing now. Repeated scheduled pulls stored by video id build far better coverage than one large call.

They are what TikTok was showing publicly when the call ran. Counters on videos posted in the last few hours move quickly, so a number captured this morning will already be stale by evening. If you are tracking specific videos over time, re-check them individually through the TikTok Stats API rather than re-running the tag search.

Yes, as a second step. This endpoint gives you canonical video URLs; pass those to the TikTok Transcript API to get the speech as text (flat text, not timed segments). That is a common pipeline — search a tag, rank the results by saves, then transcribe only the top few rather than paying to transcribe the whole set.

Next

Pairs well with

Full TikTok API reference →
/v1/tiktok/stats
TikTok Stats API Views, likes, comments and shares for a single TikTok video. 3 cr / video
/v1/tiktok/transcript
TikTok Transcript API Full transcript of a TikTok video with timestamped segments. 8 cr / video
/v1/tiktok/channel-videos
TikTok Channel Videos API Latest videos from a TikTok account with per-video metrics. 3 cr / video
/v1/instagram/reels-search
Instagram Reels Search API Keyword search over Instagram reels. 3 cr / result

More TikTok endpoints

/v1/tiktok/transcript Full transcript of a TikTok video with timestamped segments. 8 credits / video /v1/tiktok/summary Short AI summary of a TikTok video, built on its transcript. 10 credits / video /v1/tiktok/stats Views, likes, comments and shares for a single TikTok video. 3 credits / video /v1/tiktok/comments Paginated comments on a TikTok video; charged per comment returned. 2 credits / comment /v1/tiktok/channel-stats Follower counts and profile metadata for a TikTok account. 3 credits / profile /v1/tiktok/channel-videos Latest videos from a TikTok account with per-video metrics. 3 credits / video /v1/tiktok/search Keyword search over TikTok videos. 4 credits / result /v1/tiktok/download Resolves a downloadable media URL for a TikTok video (URL expires within 1h). 7 credits / video

Try the TikTok Hashtag Search endpoint free

100 trial credits on signup — no card, key on screen immediately.

1 Sign up free no card · 30 seconds
2 Copy your key sk_live_...
3 GET the endpoint /v1/tiktok/hashtag-search
Get your free API key