TikTok Search Scraper: Keyword Videos by Region, No Login
Pricing
from $0.20 / 1,000 videos
TikTok Search Scraper: Keyword Videos by Region, No Login
Scrape TikTok search results by keyword. One row per video with views, likes, comments, shares, creator stats, music and hashtags. Real country and language targeting, server-side sort and date filters. No login, no cookies, no API key. Pay per result.
Pricing
from $0.20 / 1,000 videos
Rating
0.0
(0)
Developer
Stan Van Rooy
Maintained by CommunityActor stats
0
Bookmarked
7
Total users
2
Monthly active users
10 hours ago
Last modified
Categories
Share
TikTok Search Scraper: Keyword Video Search by Region, No Login ๐
The TikTok Search Scraper turns any keyword search into a clean dataset of TikTok videos: one row per video with caption, creator, play and like counts, music, hashtags and direct links. It runs with no login, no cookies and no third-party API key, and it lets you pick the country and language the search is run as, with server-side sort and date filters, just like the TikTok app.
Type a few keywords, pick a region, click Start, and download JSON, CSV or Excel, or pull the results straight from the Apify API.
๐ How to search TikTok by keyword
- Enter one or more keywords (one per line).
- Choose the region (US, UK, Germany, France, Japan and 30 more) and optionally the app language.
- Set how many videos you want per keyword and any sort or date filter.
- Click Start.
That is it. No TikTok account, no browser extension, no proxy setup on your side.
๐ What data can you scrape from TikTok search?
Per video
- Video ID, canonical URL and share link
- Caption text, detected language, hashtags and mentioned accounts
- Publish time (ISO 8601 and Unix timestamp)
- Play, like, comment, share, save and repost counts
- Creator: handle, nickname, user ID, follower and following counts, total likes, verified flag, avatar
- Music: sound ID, title, artist, original sound flag, audio URL
- Duration, width, height, static and animated cover URLs, direct video URL
- Photo posts: image URLs
- Promoted flag and the country TikTok attributes the video to
Every row also carries the keyword it matched, its rank in the results, the region the search ran as and which sort or date slice surfaced it, so you can join and audit results in your own pipeline.
๐ฅ Input
| Field | Type | Notes |
|---|---|---|
keywords | array | Search queries, one per line. Required. |
region | string | Country the search is run as. Default US. See supported regions below. |
language | string | App language code such as en, de, fr, ja. Default auto (the region's main language). |
maxResults | integer | Unique videos per keyword. Default 100, 0 for everything TikTok will serve. |
sort | string | relevance (default), likes (most liked) or newest. Applied server side. |
publishedWithin | string | all (default), day, week, month, 3months, 6months. Applied server side. |
deepSearch | boolean | Default true. After the main results end, also runs the other sort orders and narrower date windows and merges the unique videos. |
includeAds | boolean | Default false. Keep videos TikTok marks as promoted. |
๐ค Output
{"video_id": "7629854397274639646","url": "https://www.tiktok.com/@heysweetkay/video/7629854397274639646","type": "video","desc": "I reposted a classic, sue me #packmystanley #StanleyCup #amazonfinds","create_time": "2026-04-17T22:12:13Z","create_timestamp": 1776463933,"author": {"id": "7069110241456604206","sec_uid": "MS4wLjABAAAA0foe...","unique_id": "heysweetkay","nickname": "heysweetkay","follower_count": 303277,"following_count": 42,"total_favorited": 0,"video_count": 0,"verified": false,"avatar_url": "https://p16-common-sign.tiktokcdn-us.com/..."},"stats": {"play_count": 4346471,"digg_count": 186313,"comment_count": 602,"share_count": 10976,"collect_count": 12586,"repost_count": 0},"music": {"id": "7629854463947836191","title": "original sound - heysweetkay","author": "heysweetkay","is_original": true,"play_url": "https://v19.tiktokcdn-us.com/..."},"hashtags": ["packmystanley", "StanleyCup", "amazonfinds"],"mentions": [],"duration_ms": 66202,"duration_s": 66.2,"width": 720,"height": 1280,"cover_url": "https://p16-common-sign.tiktokcdn-us.com/...","dynamic_cover_url": "https://p16-common-sign.tiktokcdn-us.com/...","play_url": "https://v16m.tiktokcdn-us.com/...","download_url": null,"image_urls": [],"share_url": "https://www.tiktok.com/@heysweetkay/video/7629854397274639646?...","is_ad": false,"language": "en","region": "US","search_region": "US","keyword": "stanley cup","rank": 1,"matched_by": "relevance:all","platform": "tiktok"}
Field descriptions
| Field | Description |
|---|---|
video_id, url, share_url | TikTok video ID, canonical /@user/video/<id> URL and share link. |
type | video or photo (image slideshow post). |
desc, language, hashtags, mentions | Caption, detected caption language, hashtags without #, mentioned account IDs. |
create_time, create_timestamp | Publish time, ISO 8601 UTC and Unix seconds. |
author | Creator profile: unique_id is the handle, sec_uid the stable public ID, plus follower, following, total likes and video counts, verified flag and avatar. |
stats | play_count, digg_count (likes), comment_count, share_count, collect_count (saves), repost_count. |
music | Sound ID, title, artist, whether it is an original sound, audio URL. |
duration_ms, duration_s, width, height | Video length and dimensions. |
cover_url, dynamic_cover_url, play_url, download_url | Static cover, animated cover, direct MP4 (expires after a few hours), watermarked download link when TikTok exposes one. |
image_urls | Image URLs for photo posts. |
is_ad | True when TikTok marks the video as promoted (excluded by default). |
region | Country TikTok attributes the video to. |
search_region, keyword, rank, matched_by | Which search produced the row: region, keyword, 1-based position and the sort:window slice (for example newest:month). |
โจ Why this TikTok search scraper
- No login, no cookies, no API key. The scraper creates its own anonymous session for every run. You never hand over a TikTok account and there is no separate API subscription to buy.
- Real region targeting. Most TikTok search scrapers return whatever the proxy IP happens to see. This one runs the search as the TikTok app configured for your chosen country and language, which is what TikTok actually uses to rank results. In my tests,
berlinsearched as Germany returned 36 of 40 videos from German creators with German captions, versus 21 of 40 for the US default. - Server-side filters. Sort by relevance, most liked or newest and restrict to the last day, week, month, 3 or 6 months, the same filters as the TikTok app. No client-side sorting of a random sample.
- More results per keyword. TikTok caps one search session at roughly 200 videos. Deep search runs the other sort orders and date windows for the same keyword and merges the unique videos, typically 250 to 300 per keyword.
- Rich rows. Full creator profile numbers, engagement counters, music and direct media URLs in every row.
- Clean exports. JSON, CSV or Excel from the Apify Console, or fetch results from the Apify API.
- Pay per result. From $0.25 per 1,000 videos, no monthly plan, volume discounts on higher plans.
๐ก Use cases
- Trend and hashtag research: See which videos and creators rank for a topic in a given country right now.
- Influencer discovery: Find creators who rank for your niche, with follower counts and engagement in the same row.
- Competitor and brand monitoring: Track how often a brand or product appears in search and who is posting about it.
- Content strategy: Mine captions, hashtags and sounds that perform for a keyword.
- Datasets for analysis and AI: Build labeled video datasets per keyword and region for NLP, LLM or BI workflows.
๐ TikTok search API alternative: run it from code
Every Apify Actor is also an API. If you need TikTok search results inside your own app or notebook and do not want to apply for TikTok's official Research API, call this scraper with the Apify client:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("stanvanrooy6/tiktok-search-scraper").call(run_input={"keywords": ["stanley cup", "air fryer recipes"],"region": "US","maxResults": 200,"sort": "likes","publishedWithin": "month",})for video in client.dataset(run["defaultDatasetId"]).iterate_items():print(video["stats"]["play_count"], video["url"])
The same works from JavaScript, cURL or any HTTP client. See the API tab above for ready-made snippets and the dataset endpoints.
๐ Supported regions
US, GB, DE, FR, ES, IT, NL, BE, AT, CH, IE, PT, PL, SE, NO, DK, CA, MX, BR, AU, NZ, JP, KR, ID, PH, TH, VN, MY, SG, IN, AE, SA, TR, ZA, NG
The region and language are sent to TikTok the way the app sends them, so results are localized server side. Set language explicitly if you want, for example, English captions ranked for a German audience.
โ ๏ธ Limits and good to know
- TikTok serves roughly 200 videos per search session to anonymous clients. Deep search (on by default) adds the other sort orders and narrower date windows, which brings a typical keyword to 250 to 300 unique videos. Very niche keywords return fewer.
- TikTok returns partial matches for unusual queries, the same way the app does, so a nonsense keyword still returns videos.
- Direct video and audio URLs are signed by TikTok and expire after a few hours. Download what you need right after the run.
- Promoted videos are excluded by default. Set
includeAdsto keep them. - Transient network errors are retried automatically and a blocked anonymous session is replaced by a fresh one, so long runs keep going.
๐ฐ Pricing
This Actor uses pay per event, so there is no monthly subscription and you only pay for what you scrape.
- Videos: $0.25 per 1,000 videos on the Free and Starter plans, $0.22 on Scale and $0.20 on Business and above.
- Run start: $0.002 per GB of memory, under one cent for a default run.
Pulling 1,000 videos costs about $0.25, the same base rate as the cheapest keyword search scrapers on the Store and a fraction of the $3 to $4 per 1,000 charged by the big general TikTok scrapers, with region targeting and server-side filters those do not offer. New Apify accounts include monthly free usage credit, which is enough to try the scraper at no cost.
๐ฏ Example inputs
Top 100 videos for two keywords in the US:
{"keywords": ["stanley cup", "air fryer recipes"],"region": "US","maxResults": 100}
Everything TikTok will serve for a keyword, as seen in Germany:
{"keywords": ["rezepte"],"region": "DE","maxResults": 0}
Most liked videos from the last week, fastest run:
{"keywords": ["taylor swift"],"region": "US","sort": "likes","publishedWithin": "week","maxResults": 50,"deepSearch": false}
๐ How this compares to other TikTok search scrapers
| This scraper | Typical keyword search scrapers | General TikTok scrapers | |
|---|---|---|---|
| Region targeting | Server side, by country and app language | Depends on the proxy IP, often US only | Depends on the proxy IP |
| Sort and date filters | Applied by TikTok before ranking | Client-side sorting of the returned sample, if at all | Client-side |
| Results per keyword | 250 to 300 with deep search | 200 to 400 | Varies |
| Login, cookies, API key | None | None or a third-party key | None |
| Price per 1,000 videos | From $0.25 | $0.25 to $0.70 | $3 to $4 |
โ FAQ
Do I need a TikTok account or login?
No. The scraper runs fully anonymous and cookie free. You never share credentials.
Do I need a third-party API key?
No. Everything runs inside the Actor. Some competing TikTok scrapers require you to bring a separate paid API key. This one does not.
Is there a free TikTok search scraper?
You can run this one for free within the monthly free usage credit that comes with every new Apify account. After that it is $0.25 per 1,000 videos (less on higher plans) with no subscription.
How many videos can I get per keyword?
Set maxResults to any number, or 0 for everything available. TikTok caps a search session at about 200 videos; with deep search a keyword typically returns 250 to 300 unique videos. See the limits section above.
Does region targeting really work?
Yes. The search is sent as the TikTok app configured for the chosen country and language, which TikTok uses for ranking. Compare the region and language fields of the rows across two runs to see the difference yourself.
What format can I export?
JSON, CSV and Excel from the Apify Console, or straight from the Apify API and dataset endpoints.
Is it legal to scrape TikTok search results?
The scraper only collects publicly visible data that any anonymous app user can see, and it does not log in or bypass access controls. Rows contain creator handles and names, so handle the data in line with GDPR, CCPA and your own use case. If you are unsure, consult a lawyer.
Can you add a field, a filter or a mode I need?
Yes. Open an issue on the Issues tab and describe what you need. Hashtag feeds and sound feeds are on the roadmap.
๐ค Feedback and feature requests
I actively maintain this Actor. Found a bug or need a field? Open an issue on the Issues tab.
๐ Related TikTok scrapers
All four share the same no-login engine and output conventions.
- TikTok Shop Scraper: TikTok Shop reviews, star ratings and product data from any product URL, up to 25,000 reviews per product.
- TikTok Comments Scraper: export every comment and reply thread from any TikTok video, no login.
- TikTok Profile Scraper: follower counts, bio, links and the full post history of any TikTok user.
Typical workflow: find videos with the TikTok Search Scraper, pull the audience conversation with the TikTok Comments Scraper, profile the creators behind them with the TikTok Profile Scraper, and check what their TikTok Shop products are really rated with the TikTok Shop Scraper.