TikTok Bulk Video Search
Pricing
from $1.20 / 1,000 tiktok video results
TikTok Bulk Video Search
Search public TikTok videos for multiple keywords concurrently with reusable device identities, proxy rotation, and bounded retries. Pay only for keyword searches that return videos.
Pricing
from $1.20 / 1,000 tiktok video results
Rating
0.0
(0)
Developer
NewLai
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
What does TikTok Video Search do?
TikTok Video Search finds public TikTok videos for multiple keywords or phrases in one run and returns the original structured records exposed by TikTok's mobile search response. It is useful as a lightweight TikTok search API alternative for research, discovery, and automation. The Actor runs on the Apify platform, so searches can be started from the Console, API, schedules, webhooks, or integrations without managing a long-running server. You pay only for the video results returned by successful searches.
This Actor searches one result page per keyword and writes one Dataset record for each keyword. It does not log into TikTok, access private accounts, or download video files.
Why use TikTok Video Search?
- Discover public videos for content research, trend tracking, and campaign monitoring.
- Search up to 1,000 deduplicated keywords with bounded concurrency in one run.
- Receive structured TikTok video objects instead of parsing a browser page.
- Continue a search with the returned cursor and search ID.
- Reuse the same shared Upstash device pool as the TikTok Profile Scraper.
- Recover from temporary network, proxy, rate-limit, and upstream failures with bounded retries.
- Use Apify API access, scheduling, integrations, proxy rotation, run logs, and monitoring.
What TikTok search data can the Actor extract?
| Field | Type | Description |
|---|---|---|
keyword | string | Normalized search phrase used for the run. |
success | boolean | Whether the search completed successfully. |
items | array | Public TikTok video records returned for this page. |
hasMore | boolean | Whether TikTok reports another page. |
cursor | number or string | Offset to use for the next page. |
searchId | string | Search-session ID to pass to the next page. |
error | string or null | Safe failure message after retries are exhausted. |
Each object in items is kept in TikTok's upstream format so downstream systems can use all available video, author, statistics, music, cover, and playback fields.
How to search TikTok videos
- Open the Actor's Input tab.
- Add one or more entries to
keywords, such asAI toolsandtravel tips. - Keep
offsetat0andsearchIdempty for the first page. - Choose a page size from 1 to 30 per keyword with
count. - Start the run and open the Dataset result.
- To request the next page, start another run containing only that keyword, set
offsetto its returnedcursor, and setsearchIdto its returnedsearchId.
How much does it cost to search TikTok?
The Actor charges $0.001 when a run starts, $0.0005 for each keyword that receives a valid TikTok response, and $0.0012 for each public TikTok video in the final response. A one-keyword search returning 12 videos costs $0.001 + $0.0005 + (12 × $0.0012) = $0.0159.
A valid empty TikTok response incurs the run-start and keyword-request charges but no video-result charge. A keyword that fails before TikTok returns a valid response incurs no keyword or video charge. Retries never create duplicate request or result charges. The Dataset remains grouped as one record per keyword, with each video stored inside its items array.
Before publishing, configure the apify-actor-start, keyword-request, and video-result events from .actor/pay_per_event.json in the Actor's Apify Console monetization settings. Disable apify-default-dataset-item so Dataset rows are not charged in addition to explicit events. Apify charges the synthetic start event automatically. During a pricing transition, the Actor charges keyword-request only after that event appears in the run's effective pricing.
Input
See the Input tab for the full schema. A first-page request looks like this:
{"keywords": ["AI tools", "travel tips", "easy recipes"],"offset": 0,"searchId": "","count": 12}
keywords is required and accepts 1 to 1,000 entries of 1 to 100 characters each. Entries are trimmed and exact duplicates are ignored while preserving input order. The other fields are optional and apply to every keyword. Pagination tokens belong to the keyword that produced them, so a non-empty searchId is accepted only when keywords contains one entry.
The deployed Actor expects the upstashRedisRestUrl and upstashRedisRestToken Apify secrets used by profile-scraper. The shared sorted-set key defaults to tiktok:device. Users starting an already configured Actor run do not need to submit Redis credentials in Actor input.
Output
The default Dataset contains one record per unique keyword, written as each
keyword finishes, in completion order. A failed keyword does not discard
successful results from other keywords. Saved records remain available if the
run stops early. Use keyword to match each record to its input.
Billing and run progress are updated as records are written, and pending work is stopped when the run charge limit is reached. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
{"keyword": "AI tools","success": true,"items": [{"aweme_id": "7420000000000000000","desc": "Example public TikTok video","author": { "unique_id": "example.creator" },"statistics": { "play_count": 12345 }}],"hasMore": true,"cursor": 12,"searchId": "20260823000000000000000000000000","error": null}
When all failure retries for a keyword fail, the Actor still writes a predictable record with success: false, an empty items array, and a safe error message. Empty but otherwise valid TikTok responses are retried once by default; if the retry remains empty, the result is accepted as a legitimate successful search and incurs one keyword-request charge. Deployers can set TIKTOK_FAIL_ON_ERROR=true if any failed keyword should also fail the Actor run after all records have been written.
Retry and advanced options
Keywords run concurrently, limited by TIKTOK_MAX_CONCURRENCY (default 5, maximum 20). TikTok traffic uses a US Residential Proxy to match the Actor's US request fingerprint. Requests time out after 10 seconds and use at most one HTTP retry, one full-search retry, and one empty-result retry by default. Proxy requests, including HTTP retries, open new connections so Apify can select an exit IP automatically without a proxy session ID. A complete retry also uses a fresh HTTP client and a newly leased device. A custom TIKTOK_PROXY_URL is used as supplied; IP rotation then depends on that provider's configuration. Device leases use an atomic Upstash Lua command, so concurrent searches and Actors do not select a cooling device. All retry counts, timeouts, and delays are configurable through the environment variables documented in .env.example.
For the lowest latency, request only the page size you need. Keep the default Residential Proxy unless a tested custom proxy is supplied by the Actor owner. Never place proxy or Upstash credentials in Actor input.
Related TikTok Actors
- TikTok Profile & Public Videos Scraper resolves public TikTok profiles and retrieves a paginated page of their public videos.
- TikTok Video Downloader API - Direct Video URLs converts TikTok video and short links into direct playback/download URLs and metadata.
FAQ, disclaimers, and support
Does this Actor access private TikTok data?
No. It only requests public keyword-search results and does not require a TikTok user login.
Why did a search return a failure record?
TikTok may rate-limit requests, a proxy can become unavailable, or every shared device can still be cooling down. Check the run log, confirm the Upstash secrets and device pool are configured, and retry later. Set TIKTOK_FAIL_ON_ERROR=true in the Actor environment if an automation requires a failed run status.
Our Actors are ethical and do not intentionally extract private user data. Results can nevertheless contain public personal data selected by TikTok users. Personal data may be protected by the GDPR and other laws. Do not collect or use personal data without a legitimate reason; consult qualified legal counsel if unsure. Follow TikTok's terms and applicable laws. Use the Actor's Issues tab for bug reports or custom-solution requests, and use its API tab for programmatic access.