Tiktok Search Scraper
Pricing
from $3.99 / 1,000 results
Tiktok Search Scraper
TikTok Search Scraper extracts videos, creators, hashtags, sounds, captions, engagement metrics, and other data from TikTok search results. Automate content discovery, keyword research, trend analysis, competitor monitoring, influencer research, and TikTok marketing intelligence.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
ScraperForge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
TikTok Search Scraper — Keyword Search with Region, Sort & Publish-Time Targeting
Search TikTok by keyword and export every matching video as structured data: caption, engagement counts, the creator's full audience stats, the sound, hashtags with positions, and direct media addresses including playable and downloadable video links.
Target one of 27 countries, sort by relevance, likes or recency, narrow to a publish-time window, and let unlimited mode run until TikTok stops returning results.
What is TikTok Search Scraper?
TikTok's search is where intent lives — people type what they actually want to know. But the results are an endless scroll with no export, and TikTok's public APIs do not offer open keyword search.
This Actor runs the search programmatically. Each keyword is queried independently, results are paged, and every video is normalised into a flat record with nested objects for video, music, stats and author.
Two design details matter. First, the region is applied through cookies and Accept-Language headers, not just a query parameter — so a DE run returns genuinely German results rather than US results wearing a flag. Second, hashtag enrichment fills in cover images and descriptions that TikTok's search response leaves incomplete.
What data can you extract?
Video
url, id, desc (caption), createTime, searchTerm, isAd, adAuthorization, adLabelVersion, duetEnabled, stitchEnabled, duetDisplay, stitchDisplay, shareEnabled, itemCommentStatus, itemMute, privateItem, secret, originalItem, officalItem, warnInfo, takeDown, downloadSetting, locationCreated, diversificationLabels, effectStickers, stickersOnItem.
video
width, height, ratio, duration, cover, originCover, dynamicCover, shareCover, reflowCover, zoomCover, playAddr, downloadAddr, bitrate, bitrateInfo, codecType, encodedType, encodeUserTag, format, definition, videoQuality, volumeInfo, subtitleInfos.
stats
playCount, diggCount (likes), commentCount, shareCount.
authorStats
followerCount, followingCount, heart, heartCount, videoCount, diggCount.
music
id, title, authorName, album, original, duration, playUrl, coverLarge, coverMedium, coverThumb.
People and tags
author (username), nickname, authorId, authorSecId, avatarThumb, authorPrivate, challenges[] (hashtags), textExtra[] with hashtagName, hashtagId, userUniqueId, secUid, start, end, type, isCommerce.
Why teams scrape TikTok search
For keyword and content research
Search results are TikTok's own answer to "what is good content for this term". Sorting by likes rather than relevance shows what resonated, not just what matched.
For influencer discovery
Every video carries authorStats — follower count, total hearts, video count. You can rank creators by engagement relative to audience size from a single export, without a second lookup.
For localised market research
Running one keyword across US, GB, DE and BR shows how differently a topic plays by market. Because region targeting is applied properly, the comparison is meaningful.
For campaign and brand monitoring
Search your brand term with a WEEK window and you have a rolling mentions report with engagement attached.
For ad-intelligence work
isAd, adAuthorization and adLabelVersion separate promoted content from organic — useful when measuring whether a topic is driven by paid pushes.
For sound and format research
music on every row shows which sounds recur in top results, and duetEnabled / stitchEnabled indicate which content invites participation.
How to search TikTok step by step
- Open the Actor and enter one or more Search Keywords.
- Set a Video Limit (minimum 30), or switch on Unlimited Mode.
- Pick a Region and, for fresh content, a Publish Time Filter.
- Choose a Sort Type: relevance, most liked, or newest.
- Click Start, then export the Output tab as JSON (recommended).
⬇️ Input
Example input
{"keywords": ["chatgpt", "ai tools"],"limit": 200,"region": "US","sortType": "1","publishTime": "WEEK","includeSearchTerms": true}
Input reference
| Field | Type | Default | Description |
|---|---|---|---|
keywords | array | — (required) | One or more TikTok search terms. Each is searched independently. |
limit | integer | 10 | How many videos to scrape. Minimum 30 applies; ignored when unlimited mode is on. |
isUnlimited | boolean | false | Ignore the limit and keep scraping until TikTok returns no more results. |
region | string | US | Target country (ISO alpha-2). 27 options: US, GB, CA, AU, IN, DE, FR, ES, IT, NL, JP, KR, BR, PT, MX, TR, RU, PL, ID, TH, VN, PH, AR, CN, TW, HK, BD. Applied via cookies and Accept-Language headers. |
sortType | string | 0 | 0 relevance, 1 most liked, 2 newest first. |
publishTime | string | ALL_TIME | ALL_TIME, YESTERDAY, WEEK, MONTH, THREE_MONTH, SIX_MONTH. |
includeSearchTerms | boolean | true | Add searchTerm to each video so you know which keyword found it. |
enrichHashtags | boolean | true | Fill in missing hashtag cover and description fields (~0.5s per unique hashtag). |
proxyConfiguration | object | Apify Residential | This Actor always runs on Apify Residential proxies (3 retries); any Apify group you select is overridden. Custom proxy URLs are tried first (3 retries) with residential as fallback. |
⬆️ Output
Example output (trimmed)
{"url": "https://www.tiktok.com/@examplecreator/video/7558512477600861471","id": "7558512477600861471","desc": "5 ChatGPT prompts that actually saved me time this week #chatgpt #productivity","createTime": "1786451234","searchTerm": "chatgpt","author": "examplecreator","nickname": "Example Creator","authorId": "6789012345","avatarThumb": "https://p16-sign.tiktokcdn.com/…","stats": {"playCount": 2140000,"diggCount": 184000,"commentCount": 3120,"shareCount": 14800},"authorStats": {"followerCount": 612000,"followingCount": 184,"heartCount": 18400000,"videoCount": 412},"video": {"width": 1080,"height": 1920,"duration": 47,"definition": "720p","format": "mp4","cover": "https://p16-sign.tiktokcdn.com/…","playAddr": "https://v16-webapp.tiktok.com/…","downloadAddr": "https://v16-webapp.tiktok.com/…"},"music": {"id": "7123456789012345678","title": "original sound","authorName": "examplecreator","original": true,"duration": 47},"challenges": [{ "hashtagName": "chatgpt" }, { "hashtagName": "productivity" }],"isAd": false,"duetEnabled": true,"stitchEnabled": true}
Illustrative values — a live run returns current TikTok data.
Usage recipes
What is winning this week for a keyword
{"keywords": ["ai tools"],"limit": 200,"sortType": "1","publishTime": "WEEK","region": "US"}
Compare the same keyword across markets
Run once per region and merge the exports:
{"keywords": ["skincare routine"],"limit": 100,"region": "GB"}
Exhaustive brand sweep
{"keywords": ["your brand name"],"isUnlimited": true,"sortType": "2","publishTime": "MONTH"}
Unlimited mode runs until TikTok stops returning results — check the cost estimate before using it on a broad term.
Multi-keyword research with attribution
{"keywords": ["meal prep", "meal prep ideas", "high protein meal prep"],"limit": 150,"includeSearchTerms": true}
Pivot on searchTerm to see which phrasing surfaces the strongest content.
Faster runs
{"keywords": ["travel hacks"],"limit": 500,"enrichHashtags": false}
How does this compare to TikTok's official API?
TikTok's Research API provides query access to public content but is restricted to approved academic and non-profit researchers in eligible regions, with an application process. The Display API only reaches content of users who authorised your app, and the Commercial Content API covers advertising transparency rather than organic search.
None of them give a marketer open keyword search with region and recency targeting. This Actor reads the public search interface with no account, no application and no eligibility criteria.
Integrate and automate
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run = client.actor("scraperforge/tiktok-search-scraper").call(run_input={"keywords": ["chatgpt"],"limit": 100,"sortType": "1","publishTime": "WEEK","region": "US",})for v in client.dataset(run["defaultDatasetId"]).iterate_items():print(v["stats"]["playCount"], "|", v["author"], "|", v["desc"][:60])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_API_TOKEN>' });const run = await client.actor('scraperforge/tiktok-search-scraper').call({keywords: ['chatgpt'],limit: 100,region: 'US',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
REST API
curl -X POST "https://api.apify.com/v2/acts/scraperforge~tiktok-search-scraper/runs?token=<YOUR_APIFY_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"keywords":["chatgpt"],"limit":100,"region":"US"}'
n8n, Make, Zapier and AI agents
Call the Actor from n8n, Make, Zapier or an MCP-capable agent — for instance, an agent that researches a keyword weekly and drafts content angles from the top results.
Schedules and webhooks
Attach a Schedule for continuous keyword monitoring, and use webhooks or the Google Sheets / Airtable / Slack integrations to deliver results.
Pricing and what you are charged for
Pay-per-event: a small Actor-start charge plus a charge per video row delivered.
Because this Actor always runs on Apify Residential proxies, that proxy traffic is billed separately by the platform according to your plan. Be deliberate with Unlimited Mode — it runs until TikTok stops returning results.
Current rates are on the Pricing tab of this Actor's page, and Apify shows an estimate before and during every run.
Limits, reliability and blocking
- Minimum 30 videos per run when unlimited mode is off — that is the smallest batch TikTok's search returns reliably.
- Unlimited mode has no ceiling. Check your cost estimate before using it on a broad keyword.
- Residential proxies are enforced. Any Apify group you select is overridden; custom proxy URLs are tried first with residential as fallback.
- Region influences results strongly but does not guarantee origin — it shapes what TikTok serves, not where every video was filmed.
enrichHashtagsadds roughly 0.5s per unique hashtag. Turn it off for maximum speed on large runs.- Media addresses expire —
playAddr,downloadAddrand covers are short-lived CDN links. - The
commentsfield mirrors TikTok's search response and is typically empty; comment counts live instats.commentCount. - Public content only. Private accounts and restricted videos are not returned.
- Default run options are 4 GB memory and a 1-hour timeout; raise the timeout for unlimited runs.
Is it legal to scrape TikTok search results?
This Actor collects publicly available TikTok search results — the same videos any visitor can find. It does not log in, follow accounts, or access private content.
Videos, captions and sounds remain the intellectual property of their creators, and handles, avatars and bios are personal data. Use the data for research and analysis, credit creators where you reference them, and process personal data under GDPR and comparable rules. Media addresses are provided as metadata — downloading and reusing video files is your responsibility and subject to copyright. You are responsible for ensuring your use complies with TikTok's terms and applicable law.
❓ Frequently asked questions
Do I need a TikTok account or API key?
No. The Actor searches public TikTok content without authentication.
How do I get results for a specific country?
Set region to the ISO alpha-2 code. It is applied through cookies and Accept-Language headers for genuine local relevance.
What do the sort types mean?
0 relevance, 1 most liked, 2 newest first. They return meaningfully different result sets.
How do I get only recent videos?
Use publishTime — YESTERDAY, WEEK or MONTH.
Why is the minimum 30 videos?
That is the smallest batch TikTok's search reliably returns; asking for fewer would discard data already fetched.
Can I scrape everything for a keyword?
Yes — enable isUnlimited. Watch the cost estimate, since the run continues until TikTok stops serving results.
How do I know which keyword found a video?
Leave includeSearchTerms on; every row carries a searchTerm field.
Can I download the videos?
The Actor returns playAddr and downloadAddr. Fetching the files is up to you, and subject to TikTok's terms and copyright.
Which export format should I use?
JSON — video, music, stats and authorStats are nested objects.
🔗 Related scrapers
- TikTok Discover Scraper — mix URLs, handles and keywords in one input.
- TikTok Trending Videos Insights — chart-level trend analytics.
- TikTok Trending Hashtags Scraper — hashtag rankings by country.
- TikTok Followers API Scraper — audience data for the creators you find.
Browse the full collection on the ScraperForge profile.
💬 Feedback
Need comment extraction, extra fields, or a custom TikTok research pipeline? Open an issue on the Issues tab of this Actor.