Skip to content
scrapeatlas.Dashboard

Search TikTok videos by keyword

Try in Playground

Search videos through TikTok's web video search (cursor paged, optional date and sort filters) as web item records.

GET/v1/tiktok/search/keywordx-api-key
x-api-keystringrequiredheader

Your ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.

Query parameters
5
querystringrequiredquery

Search text, 1–100 characters.

min 1 chars · max 100 chars

Exampleexample
cursorstringquery

Cursor (offset) from the previous response.

publish_timeenumquery

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

sort_byenumquery

relevance, most-liked or date-posted.

one of: relevance, most-liked, date-posted

regionstringquery

Two-letter region preference forwarded to TikTok.

Response fields
24
requestIdstring

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.

accounting.upstreamRequestsinteger

Always included.

≥ 0

accounting.responseBytesinteger

Always included.

≥ 0

accounting.durationMsnumber

Always included.

≥ 0

successboolean

True when usable data is returned; inspect status and coverage for omissions.

statusenum

success, partial, failed, or challenged. HTTP 200 can be partial.

one of: success, partial

sourceUrlstring

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

fetchedAtstring

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.

coverage.sourceenum

Always included.

one of: document, public_api

coverage.completeboolean

Always included.

coverage.warningsenum[]

Always included.

Always included.

up to 100 items

item_list.idstring

Always included.

item_list.descstring

Always included.

item_list.createTimeinteger | string

Always included.

Always included.

item_list.author.idstring

Always included.

item_list.author.uniqueIdstring

Always included.

item_list.statsobject

Always included.

item_list.videoobject

Always included.

cursorinteger

Cursor (offset) from the previous response.

≥ 0

has_moreinteger

Always included.

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.

Error codes
14
HTTPfailure.codeMeaning
400invalid_requestMissing, duplicate, ambiguous or unsupported parameters, unsupported URL forms, handles, cursors, regions, sorts or languages.
401unauthorizedInvalid API key.
403restricted_pageTikTok restricts the account or post (private video, private account, region block, or a redirect to its login page).
404not_foundUnknown or removed account, post, hashtag or sound, a post without captions, or a TikTok status code naming a missing resource.
429upstream_rate_limitedTikTok rate limited the request.
502upstream_challengedTikTok 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).
502unsafe_redirectTikTok redirected outside the requested resource.
502unsupported_pageLayout, identity or feed-envelope checks failed, or a non-JSON feed answer was served.
502response_too_largeThe upstream response exceeded 4 MiB (512 KiB for caption files).
502payload_too_complexThe embedded JSON exceeded parsing limits.
502request_limitThe upstream call budget was exhausted.
502upstream_errorNetwork failure, a stalled exit, an unexpected upstream status after one retry, or an unexpected TikTok status code.
503busyAll retrieval slots are occupied.
504timeoutThe 90-second deadline elapsed.