TikTok Hashtag Scraper With Sticker Text & Language avatar

TikTok Hashtag Scraper With Sticker Text & Language

Pricing

from $4.99 / 1,000 results

Go to Apify Store
TikTok Hashtag Scraper With Sticker Text & Language

TikTok Hashtag Scraper With Sticker Text & Language

TikTok Hashtag Scraper extracts public videos from hashtags, including captions, sticker text, creators, views, likes, comments, shares, hashtags, and video URLs. Filter results by language and sticker text for trend research, content analysis, and audience insights.

Pricing

from $4.99 / 1,000 results

Rating

0.0

(0)

Developer

API Empire

API Empire

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

2 days ago

Last modified

Share

TikTok Hashtag Scraper — Videos, Sticker Text & Language as JSON

TikTok Hashtag Scraper With Sticker Text & Language turns one or more TikTok hashtags into structured video rows — caption, engagement stats, author profile, sound metadata and every playable media URL — plus two fields most hashtag scrapers never surface: the creator-typed on-screen sticker text and TikTok's own caption-language stamp. Every row is typed, normalized JSON, no HTML and nothing to parse. Read on for every input parameter, every output field, and exactly how far TikTok's own hashtag search page actually goes before it runs dry.


What is TikTok Hashtag Scraper With Sticker Text & Language?

TikTok Hashtag Scraper With Sticker Text & Language is a hashtag-driven video scraper for TikTok's public search surface. Give it one or more hashtags or keywords and it returns one row per video it finds for each tag — no TikTok account, login or cookie is used or accepted anywhere in a run; every request runs against TikTok's logged-out surfaces. On top of the video's own engagement and author data, it reads stickersOnItem, the words a creator typed into TikTok's own editor and stored as data next to the video, and textLanguage, TikTok's own caption-language code.

  • 🎬 Scrape videos for any hashtag or keyword, with engagement stats, author profile and sound metadata on every row
  • ✍️ Extract on-screen sticker text — the real editor field, not OCR
  • 🌐 Read TikTok's own caption-language stamp on every video, and filter a run down to the languages you want
  • 🔎 Keep only videos that carry on-screen text with one boolean input
  • 📤 Export to JSON, CSV, Excel or XML, or pull the dataset over the Apify API

What data does TikTok Hashtag Scraper With Sticker Text & Language collect?

Every run returns one row per video, built from four data domains inside that same row: the video itself, the creator who posted it, the sound attached to it, and the on-screen-text/caption-language signals this Actor adds on top.

Data TypeKey FieldsJSON Field Names
Videoscaption, creation time, engagement counts, canonical URL, media URLstext, createTimeISO, diggCount, playCount, webVideoUrl, mediaUrls
Creators (nested in each video row)handle, display name, verified flag, follower/following/heart countsauthorMeta.name, authorMeta.nickName, authorMeta.verified, authorMeta.fans
Sounds (nested in each video row)track title, sound author, original-sound flag, albummusicMeta.musicName, musicMeta.musicAuthor, musicMeta.musicOriginal
On-screen text & caption languageeditor-typed text lines, sticker type ids, TikTok's language code, translation flagon_screen_text, on_screen_text_joined, sticker_types, caption_language, caption_translatable

Need more TikTok data?

If video-by-hashtag isn't the whole job, API Empire also publishes TikTok Search Suggestions Scraper for turning a seed term into TikTok's own autocomplete phrases plus the companion videos that seed surfaces in search, and TikTok Profile Videos API Scraper With Playlist Details for pulling a known creator's own video catalogue and playlists. Run this Actor first to find which hashtags a niche actually uses, then hand promising handles to the profile scraper to go deeper on a specific creator.


Why not build this yourself?

TikTok's hashtag search is not a stable, documented public API — it is the same internal endpoint (/api/search/general/full/) the TikTok web app calls from inside a loaded browser page, and it only returns real data when the request carries a signature minted by that page after a warm-up visit to /explore mints the ttwid and msToken trust cookies. A plain HTTP client gets nothing usable: TikTok's own dead endpoint for this job, /api/challenge/item_list/, answers HTTP 200 with an empty body, and the live search endpoint answers HTTP 200 with a ~1462-byte WAF challenge page when the session isn't trusted — checking the status code alone tells you nothing, because every one of these outcomes reports success.

Keeping a scraper like this working means maintaining a signature-aware headless-browser transport, a proxy-escalation ladder that only steps up when the response body shape actually looks blocked (never on status code alone), and retry logic that will not re-fetch and double-charge a tag that has already pushed rows. TikTok's hashtag search page also has no working pagination — the second page comes back empty regardless of what the first page's has_more flag claims — so a homegrown scraper has to discover that the hard way before it can stop wasting requests on a page that will never return data. That is a standing engineering commitment this Actor already carries for you.


Why do developers and teams scrape TikTok hashtags?

For AI engineers and agent builders

Feed a niche hashtag into an agent's tool loop and get back typed rows carrying on_screen_text, caption_language and full engagement counts — no HTML to parse before the data reaches a vector store or a RAG index. An agent can chain a hashtag lookup ahead of a content-generation step, using the on_screen_text_joined field from the top-performing rows as few-shot examples of hooks that already work in that niche, or filtering caption_language to build a language-specific training slice.

For marketers and brand teams

Pull every video under a campaign or competitor hashtag and read the actual words creators typed on screen — the hook line — alongside diggCount, playCount and shareCount, so a content team can see which openings correlate with performance before writing the next batch of briefs. sortOrder set to popularity surfaces the highest-view rows for that tag first, without a second pass through the data.

For researchers and analysts

Every row here comes from TikTok's own public, logged-out hashtag search, so a researcher can quantify how a niche's editor-text usage or caption-language mix looks on a given day by running a batch of tags and reading has_on_screen_text and caption_language straight off the rows. No account, consent flow or private data is touched — the scope is exactly what a logged-out visitor searching that hashtag would see.

For developers building data products

A short-form content-monitoring product can call this Actor through the Apify API on a schedule, storing on_screen_text, caption_language and the engagement counters per hashtag over time to build a trend feed without operating a browser fleet, a proxy pool or a block-detection layer directly. maxData puts a hard, predictable ceiling on how many charged rows a single scheduled hashtag can emit, which matters when a schedule runs unattended.


How to scrape TikTok hashtags (step by step)

  1. Open TikTok Hashtag Scraper With Sticker Text & Language on its Apify Store listing and click Try for free.
  2. Add one or more terms to 🏷️ Hashtags or keywords (startUrls) — the only required input.
  3. Set 🔢 Videos kept per hashtag, and turn on ✍️ Keep only videos that carry editor text and/or list 🌐 Caption language codes to keep if you want a bounded, filtered result.
  4. Click Save & Start and let the run finish.
  5. Open Storage → Dataset, pick the Videos, On-Screen Text & Caption Language view, and export as JSON, CSV, Excel or XML, or read it straight from the Apify API.

What to do when TikTok changes its structure

TikTok's search and WAF-challenge surfaces are actively maintained targets, and this Actor is maintained against them. When TikTok changes a payload shape or tightens its challenge page, the fix lands here and the dataset's field names and types stay the same on your end — no pipeline rewrite required on your side. No specific turnaround time is promised.


⬇️ Input

TikTok Hashtag Scraper With Sticker Text & Language takes 6 parameters, defined in the Actor's published input schema. Only startUrls is required.

ParameterRequiredTypeDescriptionExample Value
startUrlsYesarray of stringsHashtags or keywords to scan, one per line. # is optional. A https://www.tiktok.com/tag/<name> URL is accepted and the tag name is taken from it.["travel", "smallbusiness"]
maxDataNointeger, 1–1000, default 10How many rows to keep per hashtag after the filters below are applied. The live surface ceiling is 30–34 videos per hashtag, so anything above that simply returns what exists.20
onlyVideosWithOnScreenTextNoboolean, default falseWhen on, a video is kept only if it has at least one on-screen text block.true
captionLanguageNoarray of strings, default []Language codes to keep, e.g. en, de, tl, tr, un. Leave empty to keep every language. Matching is case-insensitive.["en", "un"]
sortOrderNostring, enum, default "relevance"relevance keeps TikTok's own search order untouched. date locally sorts the rows this run collected by createTime, newest first. popularity locally sorts them by playCount, most played first."popularity"
proxyConfigurationNoobject, proxy editor, default { "useApifyProxy": false }Optional. All surfaces this Actor uses were measured working with no proxy at all, so a run starts direct and only escalates (datacenter, then residential) if TikTok refuses the session.{ "useApifyProxy": false }

Example input, every parameter shown:

{
"startUrls": ["travel", "smallbusiness"],
"maxData": 20,
"onlyVideosWithOnScreenText": true,
"captionLanguage": ["en", "un"],
"sortOrder": "popularity",
"proxyConfiguration": { "useApifyProxy": false }
}

The most common input mistake is raising maxData well past 34 expecting more videos per hashtag — the search page itself only holds 30–34 videos, so a higher maxData returns everything that exists rather than more of it. Add more hashtags to startUrls instead of raising maxData if you need a bigger dataset.


⬆️ Output

Every run writes typed, normalized rows to one Apify dataset. Export as JSON, CSV, Excel or XML, or read the dataset over the Apify API. The default dataset view (Videos, On-Screen Text & Caption Language) surfaces 17 columns; the full row this Actor actually pushes carries considerably more fields, all documented below.

Scraped video

{
"hashtag": "travel",
"id": "7530000000000000000",
"text": "3 days in Lisbon on a budget #travel #lisbon",
"createTime": 1753500000,
"createTimeISO": "2026-07-26T05:20:00Z",
"isAd": false,
"isMuted": null,
"authorMeta": {
"id": "6700000000000000000",
"name": "examplecreator",
"nickName": "Example Creator",
"verified": false,
"signature": "travel on a budget",
"bioLink": null,
"avatar": "https://p16-sign.tiktokcdn-us.com/....jpeg",
"privateAccount": false,
"ttSeller": false,
"following": 412,
"fans": 88400,
"heart": 2310000,
"video": 317,
"digg": 1204
},
"musicMeta": {
"musicName": "original sound",
"musicAuthor": "examplecreator",
"musicOriginal": true,
"musicAlbum": null,
"playUrl": "https://sf16-....mp3",
"coverMediumUrl": "https://p16-....jpeg",
"musicId": "7100000000000000000"
},
"webVideoUrl": "https://www.tiktok.com/@examplecreator/video/7530000000000000000",
"mediaUrls": ["https://v16m-....mp4"],
"videoMeta": {
"height": 1024,
"width": 576,
"duration": 27,
"coverUrl": "https://p16-....jpeg",
"originalCoverUrl": "https://p16-....jpeg",
"definition": "720p",
"format": "mp4",
"originalDownloadAddr": "https://v16m-....mp4",
"downloadAddr": "https://v16m-....mp4"
},
"diggCount": 51200,
"shareCount": 1840,
"playCount": 612000,
"collectCount": 9100,
"commentCount": 430,
"mentions": [],
"hashtags": [{ "name": "travel" }, { "name": "lisbon" }],
"on_screen_text": ["POV: you booked the 4am flight", "day 1 of 3"],
"on_screen_text_joined": "POV: you booked the 4am flight | day 1 of 3",
"on_screen_text_blocks": 2,
"has_on_screen_text": true,
"sticker_types": [4],
"caption_language": "en",
"caption_translatable": true,
"scrapedAt": "2026-07-29T14:20:11Z",
"reachableCount": 30
}

Notes on fields worth reading before you build a pipeline on them:

  • on_screen_text, on_screen_text_joined and sticker_types are null when the video carries no editor text, and populated on the roughly one in three videos that do. This is TikTok's own stickersOnItem[].stickerText field, stored as data — not OCR, so text burned into the frame by a third-party editor before upload is invisible here.
  • on_screen_text_blocks and has_on_screen_text are always present, even when 0 / false — that is a real measurement, not a placeholder.
  • caption_language carries the literal string "un" when TikTok could not determine the caption's language. It is never converted to null, so "TikTok couldn't tell" stays distinguishable from "TikTok didn't stamp this video at all."
  • authorMeta.bioLink is always null. TikTok does not expose a bio link on this search surface at all, so the key is kept for schema stability but never populates.
  • isMuted is null, not a fabricated false. TikTok's search payload does not ship an isMuted key on this surface, and a missing key is reported honestly rather than defaulted.
  • videoMeta.originalDownloadAddr mirrors downloadAddr. TikTok's search response exposes exactly one download address; this is not a second file.
  • musicMeta.musicAlbum is null on most rows — TikTok only ships an album value for a minority of sounds.
  • mentions and hashtags are [], not omitted, when a caption names no one or carries no co-tags. mentions is parsed from textExtra[type==0]; hashtags is deduplicated from textExtra[type==1] and the video's challenges list.
  • scrapedAt and reachableCount are added by this Actor, not TikTok — reachableCount is how many videos the hashtag actually returned before any filter or maxData trim was applied.

How does TikTok Hashtag Scraper With Sticker Text & Language compare to other TikTok hashtag scrapers?

FeatureTikTok Hashtag Scraper With Sticker Text & LanguageGeneric alternative
On-screen editor textExtracted as on_screen_text, on_screen_text_joined and sticker_types, with a filter to keep only videos that carry itNot documented on clockworks/tiktok-hashtag-scraper's listing, as observed on 2026-07-30
Caption-language filtercaptionLanguage restricts a run to specific TikTok language codes, matched case-insensitivelyNot documented on clockworks/tiktok-hashtag-scraper's listing, as observed on 2026-07-30
Row granularityOne row per individual video, with full author, sound and engagement data on eachlexis-solutions/tiktok-trending-hashtags-scraper returns hashtag-level trend and rank rows rather than individual videos, as observed on its listing on 2026-07-30
Session requirementNo credential of any kind used or acceptedlexis-solutions/tiktok-trending-hashtags-scraper requires an exported TikTok session cookie to return more than its top 3 hashtags, as observed on its listing on 2026-07-30
Missing-data handlingA field TikTok's payload omits is returned as null, never a fabricated zero or falseNot documented on clockworks/tiktok-hashtag-scraper's listing, as observed on 2026-07-30

If you're building an AI agent or a RAG pipeline, the output-format row is the decision-maker: parsing HTML inside an agent loop is a reliability failure mode, not a feature. A stable, typed JSON schema is what lets an agent or an ETL job trust the same field names run after run.


How many results can you scrape with TikTok Hashtag Scraper With Sticker Text & Language?

TikTok's own hashtag search page is the hard limit: it returns 30–34 videos per tag, and the second page comes back empty on every tag regardless of what the first page's has_more flag reports — this Actor does not request a second page for that reason. maxData accepts 1–1000 and is applied after the onlyVideosWithOnScreenText and captionLanguage filters, so setting it above the real ceiling simply returns everything the tag holds rather than more of it. sortOrder only re-orders the rows already collected for that page; it cannot reach videos outside it. To scrape more overall, add more hashtags to startUrls rather than raising maxData on any single one.


Integrate TikTok Hashtag Scraper With Sticker Text & Language and automate your workflow

TikTok Hashtag Scraper With Sticker Text & Language works with any language or tool that can send an HTTP request.

REST API integration

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("tiktok-hashtag-scraper-with-sticker-text-language").call(run_input={
"startUrls": ["travel", "smallbusiness"],
"maxData": 20,
"onlyVideosWithOnScreenText": True,
"captionLanguage": ["en"],
"sortOrder": "popularity",
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["id"], row["caption_language"], row["on_screen_text_joined"])

Works in Python, Node.js, Go, Ruby, cURL.

Automation platforms (n8n, Make, LangChain)

The Apify platform ships an official n8n community node and a Make app that can start any Actor by its ID and read back its dataset — point either one at tiktok-hashtag-scraper-with-sticker-text-language to drop hashtag rows straight into a workflow without writing an HTTP call by hand. On the LangChain side, Apify's own ApifyDatasetLoader reads a finished run's dataset directly into LangChain documents, a natural fit for feeding on-screen text and captions into a downstream retrieval or generation step.


Yes — TikTok Hashtag Scraper With Sticker Text & Language reads only publicly visible TikTok pages, the same hashtag search results any logged-out visitor sees, with no login, cookie or session token involved. Rows do carry public creator information (handle, display name, avatar, follower count), which counts as personal data in most jurisdictions: store and use it under a lawful basis, in line with GDPR, CCPA and equivalent laws where they apply. Consult legal counsel for commercial use cases involving bulk personal data.


❓ Frequently asked questions

Does TikTok Hashtag Scraper With Sticker Text & Language work without a TikTok account?

Yes. No TikTok login, cookie or session token is used or accepted anywhere in a run — every surface this Actor touches is logged-out.

How often is the scraped data updated?

Every run fetches TikTok's hashtag search live at the moment it executes — nothing is cached or served from a previous run. Re-run the Actor whenever you need a fresh read on a tag.

What happens when a hashtag has no videos or doesn't exist on TikTok?

TikTok's search surface answers with a valid, empty page for a nonexistent or videoless tag — a small JSON body with zero items, distinct from a blocked response. This Actor reports zero reachable videos for that tag and pushes no rows for it; it never retries an honestly empty result or fabricates a placeholder row, and any other hashtags in the same run are unaffected.

Can I scrape private or restricted TikTok content?

No. Only TikTok's public, logged-out hashtag search results are returned. A private account's videos do not appear in public hashtag search, and this Actor has no path to content behind a login wall.

Can I run this Actor on a schedule?

Yes. Like any Apify Actor, it can be attached to an Apify Schedule from the Console to run on a recurring interval, with results landing in a fresh dataset each run.

Does TikTok Hashtag Scraper With Sticker Text & Language work for AI agent workflows and LLM pipelines?

Yes. It is callable as an HTTP endpoint from any agent framework through the Apify API, and every response is typed JSON — no parsing step before passing a row to an LLM.

How does TikTok Hashtag Scraper With Sticker Text & Language handle TikTok's anti-bot system?

Every response is judged on its body shape, not its HTTP status, because TikTok's dead and challenged surfaces both answer 200 — a 0-byte body means a refused signed request, and a roughly 1462-byte body means a WAF challenge page. Requests start with no proxy and escalate through Apify Datacenter, then Apify Residential proxy tiers only when the body shape looks blocked. A warm-up visit to TikTok's /explore page mints the trust cookies the signed search request needs before every run. Once a hashtag has pushed any rows, it is never retried on a fresh IP, so a mid-run retry can never duplicate or double-charge rows already written.

How does TikTok Hashtag Scraper With Sticker Text & Language compare to other TikTok hashtag scrapers?

As observed on their Apify Store listings on 2026-07-30, clockworks/tiktok-hashtag-scraper does not document on-screen sticker text or a caption-language filter; lexis-solutions/tiktok-trending-hashtags-scraper works at the hashtag-trend level rather than returning individual videos, and requires an exported session cookie for its full result list. This Actor returns individual video rows with on-screen editor text and a caption-language filter, using no credential at all.

Does TikTok Hashtag Scraper With Sticker Text & Language return data in a format LLMs can use directly?

Yes. Every row is typed, normalized JSON with stable field names — no HTML, no selectors. Pass it directly into an LLM's context window, index it into a vector store, or route it through an agent tool.

Can I use TikTok Hashtag Scraper With Sticker Text & Language without managing proxies?

Yes. Runs start with no proxy at all, and only escalate to Apify's own Datacenter and Residential proxy tiers automatically if TikTok pushes back. Setting proxyConfiguration is optional, for when you already know you need a specific proxy group up front.

What happens when TikTok changes its structure or blocks the scraper?

This Actor is actively maintained against TikTok's hashtag search and challenge surfaces. Field names and types on your end stay stable across a fix — no numeric turnaround time is promised.


💬 Your feedback

Found a bug, or a field that doesn't match what TikTok actually sent you? Open an issue on this Actor's Issues tab in Apify Console, or reach out through the contact link on its Apify Store listing. Reports like these are how the Actor stays accurate as TikTok's own surfaces change.