Search TikTok videos by keyword
Search videos through TikTok's web video search (cursor and search_id paged, optional date and sort filters) as web item records.
/v1/tiktok/search/keywordx-api-keyHeaders
Get your API keyYour ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.
Search text, 1–100 characters.
min 1 chars · max 100 chars
exampleCursor (offset) from the previous response; send it with that response's search_id.
search_id from the first page's response; with cursor it continues the same search.
yesterday, this-week, this-month, last-3-months, last-6-months or all-time.
one of: all-time, yesterday, this-week, this-month, last-3-months, last-6-months
relevance, most-liked or date-posted.
one of: relevance, most-liked, date-posted
Two-letter region preference forwarded to TikTok.
Earliest publication time to include, ISO 8601 or Unix seconds.
Publication time to stop before, ISO 8601 or Unix seconds; later than since.
Request correlation UUID.
Upstream calls made (the document, redirect hops, feed calls, the caption file, and every retried session), decoded bytes delivered to the parser and elapsed milliseconds.
Always included.
≥ 0
Always included.
≥ 0
Always included.
≥ 0
True when usable data is returned; inspect status and coverage for omissions.
success, partial, failed, or challenged. HTTP 200 can be partial.
one of: success, partial
The www.tiktok.com document the operation was issued from (profile, video, live, search, tag, music or explore page), after accepted redirects.
absolute HTTPS URL
UTC retrieval timestamp.
source is document (server-rendered state) or public_api (a feed call); complete means nothing was capped; warnings name each cap or fallback; order is relevance; window echoes since/until.
Always included.
one of: document, public_api
Always included.
Always included.
Always included.
one of: newest_first, oldest_first, ranked, relevance, source_order
Optional.
Optional.
Optional.
Always included.
up to 100 items
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Cursor (offset) from the previous response; send it with that response's search_id.
≥ 0
Always included.
search_id from the first page's response; with cursor it continues the same search.
No fields match.
HTTP 200 returns the success variant. Check status: partial means usable data with warnings, and failed or challenged requests carry a failure object described in Errors & responses.
| HTTP | failure.code | Meaning |
|---|---|---|
| 400 | invalid_request | Missing, duplicate, ambiguous or unsupported parameters, unsupported URL forms, handles, cursors, regions, sorts or languages. |
| 401 | unauthorized | Invalid API key. |
| 403 | restricted_page | TikTok restricts the account, post, search or live room (private video, private account, region block, a search or feed TikTok shows only to logged-in viewers, a gated live room, or a redirect to its login page). |
| 404 | not_found | Unknown or removed account, post, hashtag or sound, a post without captions, or a TikTok status code naming a missing resource. |
| 422 | unsupported_media | A video file was requested for a photo post, which has no video file. |
| 429 | upstream_rate_limited | TikTok rate limited the request. |
| 502 | upstream_challenged | TikTok answered its verification page, an HTTP 401/403, a document without the app state, or refused a feed call with an empty body (status challenged). |
| 502 | unsafe_redirect | TikTok redirected outside the requested resource. |
| 502 | unsupported_page | Layout, identity or feed-envelope checks failed, or a non-JSON feed answer was served. |
| 502 | response_too_large | The upstream response exceeded 4 MiB (512 KiB for caption files). |
| 502 | payload_too_complex | The embedded JSON exceeded parsing limits. |
| 502 | request_limit | The upstream call budget was exhausted. |
| 502 | upstream_error | Network failure, a stalled exit, an unexpected upstream status after one retry, or an unexpected TikTok status code. |
| 503 | busy | All retrieval slots are occupied. |
| 504 | timeout | The 90-second deadline elapsed. |