TikTok Bulk Video Search
Pricing
$1.20 / 1,000 keyword searcheds
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
$1.20 / 1,000 keyword searcheds
Rating
0.0
(0)
Developer
NewLai
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
36 minutes 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 keyword searches that return at least one video.
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 uses pay-per-event pricing at $0.0012 for each keyword that returns at least one public TikTok video. Failed searches, invalid results, and searches that remain empty after all retries are written to the Dataset but are not charged. Retries do not create additional billable events. For example, 100 successful non-empty keyword searches cost $0.12. You can set a maximum cost per run in Apify to control spending; the Actor stops writing further result groups when that limit is reached.
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, in input order. A failed keyword does not discard successful results from other keywords. 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 uncharged record with success: false, an empty items array, and a safe error message. Empty but otherwise valid TikTok responses are retried three times by default; if every attempt remains empty, the result is accepted as a legitimate successful search with zero items and is not charged. 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). Network requests retry HTTP 408, 425, 429, and common 5xx responses with exponential backoff. If a complete keyword search fails or returns no videos, the Actor retries with a fresh HTTP session, a newly leased device, and a fresh Apify Proxy session when Apify Proxy is enabled. TIKTOK_MAX_EMPTY_RESULT_RETRIES controls empty-result retries and defaults to 3. A custom TIKTOK_PROXY_URL is reused as supplied, so a provider-specific sticky session ID remains sticky across retries. 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 bounded 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.