Body parameters
Keyword search query.
Where to search: youtube (default), tiktok, or instagram. Every video result's url is accepted by the transcript and batch endpoints as-is. The type, upload_date, duration, sort and captions options search YouTube only.
YouTube only. What to search for: video (the default), channel or playlist. Channels come back as data.kind channel_list, each row's url accepted by the channel endpoint; playlists as data.kind playlist_list, each row's url accepted by the playlist endpoint. A channel row carries the @handle, subscriber count and description; its videoCount is null, because YouTube's channel results no longer show one.
YouTube video search only. Keep videos uploaded within the last hour, today, this week, this month or this year.
YouTube video search only. Keep short (under 4 minutes), medium (4 to 20 minutes) or long (over 20 minutes) videos.
YouTube only. Result order: relevance (the default) or views (most viewed first). YouTube search no longer sorts by upload date or rating, so neither is offered; for recent videos, filter with upload_date.
YouTube video search only. true keeps only videos with subtitles or closed captions, whose transcripts come from captions rather than AI Fallback Transcription. Defaults to false: no filter.
Max items to return per page: videos, or the playlists or channels some listing options return. Defaults to 5.
Opaque pagination cursor from a previous response's next_cursor (max 256 characters). Omit for the first page. Cursors are scoped to the listing that issued them, so send the same platform and listing options with each page. Offset-based sources cannot page past the first 2000 items.
{
"ok": true,
"request_id": "req_…",
"data": {
"kind": "video_list",
"source": "search",
"platform": "tiktok",
"videos": [
{
"videoId": "7563520074795994399",
"url": "https://www.tiktok.com/@explore.scientist/video/7563520074795994399",
"title": "How does a power transformer work #knowledge #science #tiktok",
"duration": 72,
"channel": "@explore.scientist",
"publishedAt": "2025-10-21T04:01:08Z",
"stats": {
"plays": 496600
}
},
{
"videoId": "7649719917507251488",
"url": "https://www.tiktok.com/@theengineeringmindset/video/7649719917507251488",
"title": "How transformers actually work: Two coils, a steel core, and a magnetic field that's pure magic (but science!). #ScienceExplained #HowItWorks #Transformer #STEM #Physics",
"duration": 92,
"channel": "@theengineeringmindset",
"publishedAt": "2026-06-10T11:00:12Z",
"stats": {
"plays": 18300
}
}
],
"next_cursor": "eyJvIjoxMH0"
},
"usage": {
"credits_spent": 1,
"balance": 656,
"bytes": 0
}
}Every TikTok endpoint
- POSTTranscriptFetch a TikTok video's transcript over REST: the request, every parameter, a real TikTok response with timestamped segments, and curl, Python and Node examples.
- POSTSearchSearch TikTok videos by keyword over REST: the request, the platform parameter, a real TikTok response with view counts and durations, and curl, Python and Node examples.
- POSTProfile VideosList a TikTok creator's videos over REST: the request with a profile URL, since_video_id polling, a real TikTok response with play counts, and curl, Python and Node examples.
- POSTProfile MonitorWatch a TikTok creator for new videos over REST: create a monitor on a profile URL, receive each new video by signed webhook or from the events list, optionally with its transcript, with curl, Python and Node examples.
Same call, other platforms:YouTube Search APIInstagram Search API
Frequently asked questions
How do I search TikTok instead of YouTube?
Send platform tiktok in the body. Without it the search runs on YouTube. Everything else about the call is the same: query, limit and cursor.
Can I filter TikTok results by date, duration or captions?
No. Those filters are YouTube-only and are ignored on TikTok. The rows carry duration, publishedAt and stats.plays, so you can filter on your side after the fetch.
What is in a TikTok search row?
videoId, url, title (the caption), duration in seconds, channel (the creator's @handle), publishedAt and stats.plays. The url goes straight into the transcript or batch endpoint.
How do I transcribe everything a search returns?
Collect the url of each row and send them to the batch endpoint. Caption transcripts cost 1 credit each and videos without captions go to AI Fallback Transcription, billed on delivery.