TikTok Search API
Free-text video discovery — phrase in, public video rows out, with date and sort filters the hashtag route does not have.
GET /v1/tiktok/search1 credit per successful request.
About this endpoint
Launch monitors and competitive intel jobs usually start with a phrase, not a creator handle or a campaign tag. You want clips that mention a product name, a competitor, or a category cue ("air fryer recipe," "SaaS onboarding"), then decide which URLs deserve transcript or comment pulls. Homegrown TikTok search scrapers chase signed clients and feed shapes that reshuffle without a changelog, and the field map rarely matches the rest of your warehouse.
`GET /v1/tiktok/search` takes a required `query` string (1–512 characters) and returns matching public videos under `data.videos`, echoing the query on `data.query`. Optional filters: `datePosted` (`yesterday`, `this-week`, `this-month`, `last-3-months`, `last-6-months`, `all-time`), `sortBy` (`relevance`, `most-liked`, `date-posted`), and `region` (two-letter ISO 3166-1 alpha-2 for localized results). Pass `cursor` when `data.page.hasMore` is true; keep the same query and filters across pages. Set `trim=true` when you want a smaller payload. Each video row can include id, caption, createdAt, url, thumbnailUrl, durationMs, pinned, isAd, engagement stats, and download-related media URLs when TikTok exposes them.
This route has no `lookupStatus`. An empty `data.videos` array with `hasMore: false` is a valid success (no matches for that query and filter set), not a transport failure — still confirm billing with `meta.creditsCharged`. Pricing for the operation is on the credit badge on this page; always trust the response field over a spreadsheet.
Keyword search is not hashtag search and not people search. Tagged campaigns use `GET /v1/tiktok/search/hashtags`. Account discovery uses `GET /v1/tiktok/users/search`. Shop SKUs use `GET /v1/tiktok/shop/products/search`. Once you have a watch URL, fan out to `GET /v1/tiktok/videos`, transcript, or comments. Same Social Fetch API key for all of them.
TikTok Search API FAQ
How do I search TikTok videos by keyword via API?
Call GET /v1/tiktok/search with x-api-key and a required query parameter. Optionally add datePosted, sortBy, region, cursor, and trim. Read data.videos and data.page. Full enums and examples are in the API docs.
What filters does TikTok keyword search support?
datePosted accepts yesterday, this-week, this-month, last-3-months, last-6-months, or all-time. sortBy accepts relevance, most-liked, or date-posted. region takes an optional two-letter ISO country code for localized results. Keep every filter stable when you paginate.
What does each TikTok search video row include?
Rows can include id, caption, createdAt, url, thumbnailUrl, durationMs, pinned, isAd, stats (views, likes, comments, shares, saves), and media download URLs when available. Coverage follows what TikTok returns for that public search hit.
What happens when no videos match the query?
HTTP 200 with data.videos as an empty array and hasMore false. That is a completed empty page, not an error. Persist meta.requestId if you need to debug or escalate. Do not treat empty as a failed lookup without checking the status code and envelope.
How much does TikTok keyword search cost?
Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged — that field is the billing source of truth. Each paginated page is a separate billed request.
Keyword search vs hashtag search vs user search?
Use this route for free-text phrases and the date/sort filters above. Use GET /v1/tiktok/search/hashtags when the job is tag-led (#launchweek) — that route has no datePosted or sortBy. Use GET /v1/tiktok/users/search to find accounts, not videos.
How does pagination work on TikTok keyword search?
When data.page.hasMore is true, pass data.page.nextCursor as the cursor query param on the next request. Keep the same query, datePosted, sortBy, and region. The cursor is opaque — do not invent or parse it.
What should I call after I find a matching video URL?
Pull single-video detail with GET /v1/tiktok/videos, spoken text with GET /v1/tiktok/videos/transcript, or comments with GET /v1/tiktok/videos/comments. Keep meta.requestId from the search response if a later enrichment row looks wrong.
Do I need TikTok OAuth to run keyword search?
No. You authenticate to Social Fetch with an API key. The route reads public search results; it does not act on behalf of a logged-in TikTok user.
Other TikTok endpoints
- ProfileGET /v1/tiktok/profiles/{handle}
- Profile videosGET /v1/tiktok/profiles/{handle}/videos
- Profile followersGET /v1/tiktok/profiles/{handle}/followers
- Profile followingGET /v1/tiktok/profiles/{handle}/following
- Profile regionGET /v1/tiktok/profiles/{handle}/region
- Profile audienceGET /v1/tiktok/profiles/{handle}/audience
- Live streamGET /v1/tiktok/profiles/{handle}/live
- User searchGET /v1/tiktok/users/search