TikTok Search API
Keyword search against TikTok, delivered as structured JSON. Filter by date, likes, and views, widen coverage with parallel search slices, and skip the search page and session plumbing entirely.
- What is the TikTok Search API?
- The TikTok Search API is an asynchronous REST endpoint that runs a keyword search against TikTok video search and returns structured JSON. You POST a query with optional date, like, and view filters, receive a task id immediately, then page results by cursor or download the full payload as one signed JSON file.
Why the TikTok Search API?
TikTok gives you no way to query its catalogue programmatically, which is why keyword monitoring usually ends up as a manual scroll. This endpoint makes it a request: send a keyword with the filters you care about, get back matching videos as structured JSON, newest first. Every result carries its video URL, so search becomes the front end for transcription and structured extraction rather than a dead end.
- No Result Ceiling to Design Around —
max_resultshas no hard cap, and omitting it keeps going until there is nothing left to return. You are billed for work done, not for the number you asked for. - Coverage You Control —
parallel_search_slicesruns 1 to 4 concurrent searches and deduplicates them for you, lifting a single search’s ~120-video return to roughly 480. - Filters on Date, Likes, and Views — Narrow by
after_datetime,before_datetime,min_likes,max_likes,min_views, andmax_viewswithout post-processing on your side. - Newest-First, Everywhere — Results are sorted by
published_atdescending, applied uniformly to cursor pages, full retrieval, and the signed download payload. - Nothing to Operate — No credentials to rotate, no infrastructure to keep warm, no retry logic to write. You send a query and read JSON.
How It Works
Sign up and generate an API key in VidNavigator Studio. That is the only credential you need.
POST a keyword query to /v1/tiktok/search, optionally with max_results, parallel_search_slices, and date, like, and view filters. The endpoint returns 202 Accepted with a task id.
Poll GET /v1/tiktok/search/{task_id} until task_status leaves processing. Most searches finish in 5 to 10 seconds; allow up to 30 for the occasional slower one.
Walk the cursor for incremental pages, or follow the signed download_url to pull the entire result set as one JSON file with no auth header required.
Request Parameters
| Parameter | Behavior |
|---|---|
| query | Required. The keyword or phrase to search TikTok video search for. |
| max_results | No hard upper cap. 0 or omitted means unbounded — pagination stops at TikTok exhaustion or the page cap. Negative values are rejected. |
| parallel_search_slices | Concurrent searches, 1 (default) to 4, deduplicated for you. A coverage control, not a time filter. Cost scales roughly linearly. |
| after_datetime / before_datetime | Date bounds, as YYYY-MM-DD or a timezone-aware ISO datetime. The only supported way to constrain a time window. |
| min_likes / max_likes | Keep only videos whose like count falls within the range. |
| min_views / max_views | Keep only videos whose view count falls within the range. |
How Many Results Can You Actually Get?
A single search returns roughly 120 unique videos at most. Running several concurrently and deduplicating them is what pushes past that, and the table below is measured behavior on a representative query rather than a theoretical maximum.
| Slices | Unique videos | Gain over previous | Relative cost |
|---|---|---|---|
| 1 (default) | ~89 | baseline | 1x |
| 2 | ~127 | +43% | up to 2x |
| 3 | ~155 | +22% | up to 3x |
| 4 (max) | ~175, up to ~480 on broad queries | +13% | up to 4x |
The practical rule: leave parallel_search_slices at 1 unless you genuinely need more than about 120 results. The cap is 4 because that already saturates TikTok's natural deduplication ceiling for most queries, and further searches would add little uniqueness for proportionally more cost.
Built for Modern Workflows
Trend & Topic Monitoring
Track a keyword or hashtag daily with after_datetime pinned to yesterday, and get newest-first results with view and like counts attached. One slice is enough for a daily delta; raise slices when you need breadth for a launch week.
Creator & UGC Discovery
Search a product or category term with min_views set to your relevance floor, then feed the returned video URLs straight into transcription or claim analysis to see what creators are actually saying.
Brand & Narrative Surveillance
Watch brand terms, competitor names, and campaign hashtags on a schedule. Because filters run server-side and results arrive newest-first, alerting logic reduces to reading the top of each page.
Quickstart
Submit a query, poll the task id, then read the result. The Python example covers all three steps, including walking the cursor to the end of the result set.
Results are scoped to the API key that created them. Requesting another account's task id returns 404.
- POST /v1/tiktok/search — submit a keyword search
- GET /v1/tiktok/search/{task_id} — poll, paginate, and get the download URL
- POST /v1/transcript — captions for any result, when they exist
- POST /v1/transcribe — speech-to-text when they do not
- POST /v1/extract/video — typed columns against your own schema
From a Keyword to What People Actually Said
A list of matching video URLs is a starting point, not an answer. Every search result carries a url, so the same script that finds videos about your category can also read them — turning a keyword into a corpus of what creators are telling their audiences about it.
Or collapse it into a share-of-voice table
Swap get_transcript for extract_video_data with a schema and each video becomes one structured row — stance, brands named, claims made. That is a monitoring dataset rather than reading material.
Share of voice
Count how often you and each competitor are named on camera in your category — weighted by the views of the videos naming you.
Claim monitoring
Catch factual claims made about your product on video, where text-based social listening is structurally blind.
Creator sourcing
Find creators already talking about your category, then read their stance before you reach out — no manual watching.
Search and transcription are billed separately: the search pays for TikTok pages, the transcript pays per video (or per hour of speech-to-text when captions are absent). Full reference: GET /v1/transcript and POST /v1/extract/video.
Example Response
A completed task carries the matching videos with their author, engagement metrics under stats, sound and hashtags, plus cursor pagination and a signed download URL for the full payload.
Pricing
A keyword search is billed per search page fetched. With VidNavigator, 1 credit = 200 residential requests.
- 1 TikTok search page = 1 residential request. A page carries roughly 12 videos.
- Worked example: a single-slice unbounded search fetches about 10 pages, or roughly 0.05 credits.
- Slices multiply pages, not results. Four slices bill up to about 4x a single search, for roughly 2x the unique videos.
- Filters run after each page is fetched, so videos your filters exclude are still billed as pages read.
- Failures are reversed. If the search fails, every charged page is credited back and no result is exposed.
- Polling is free. Only pages actually read from TikTok are billed.
Because you pay for pages rather than results, an ambitious max_results is safe: asking for 3,000 videos on a query that only serves 120 costs the same as asking for 120.