Body parameters
- type
string- required
true- description
Keyword search query.
- type
string- required
false- default
"youtube"- values
youtubetiktokinstagram- description
- Every video result's url is accepted by the transcript and batch endpoints as-is.
- The
type,upload_date,duration,sortandcaptionsoptions search YouTube only.
- type
string- required
false- default
"video"- values
videochannelplaylist- scope
- YouTube only
- description
- Channels come back as
data.kindchannel_list, each row's url accepted by thechannelendpoint; playlists asdata.kindplaylist_list, each row's url accepted by theplaylistendpoint. - A
channelrow carries the @handle, subscriber count and description; itsvideoCountisnull, because YouTube'schannelresults no longer show one.
- Channels come back as
- type
string- required
false- values
hourtodayweekmonthyear- scope
- YouTube video search only
- description
Keep videos uploaded within the last
hour,today, thisweek, thismonthor thisyear.
- type
string- required
false- values
shortmediumlong- scope
- YouTube video search only
- description
Keep
short(under 4 minutes),medium(4 to 20 minutes) orlong(over 20 minutes) videos.
- type
string- required
false- default
"relevance"- values
relevanceviews- scope
- YouTube only
- description
- Result order:
relevance(the default) orviews(most viewed first). - YouTube search no longer sorts by upload date or rating, so neither is offered; for recent videos, filter with
upload_date.
- Result order:
- type
boolean- required
false- default
false- scope
- YouTube video search only
- description
truekeeps only videos with subtitles or closed captions, whose transcripts come from captions rather than AI Fallback Transcription.- Defaults to
false: no filter.
- type
boolean | { mode, timestamps, markdown, chunks }- required
false- description
- Beta.
- Video searches only.
- Adds a
transcriptto every video row, in the same shape as a batch entry (outcome ok, processing or error, with text, segments, and markdown or chunks when asked), so one call goes from aqueryto what the videos say. truefetches caption transcripts with timestamps; an object sets mode ("captions", the default, so a search never starts paid AI transcription unless you send"auto"), timestamps (falsedrops segments), markdown and chunks (see the transcript endpoint).limitcan be at most 10 with it.- Costs the page's credit plus 1 credit per caption transcript delivered; failures are free, and an account that cannot cover the page and every row is refused up front.
- type
integer (1–50)- required
false- default
5- description
Max items to return per page: videos, or the playlists or channels some listing options return.
- type
string- required
false- description
- 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.
- Opaque pagination cursor from a previous response's
{
"ok": true,
"request_id": "req_…",
"data": {
"kind": "video_list",
"source": "search",
"platform": "youtube",
"videos": [
{
"videoId": "Hq3Lz8pVt2K",
"url": "https://www.youtube.com/watch?v=Hq3Lz8pVt2K",
"title": "Transformers, explained step by step",
"duration": 1580,
"channel": "Example Channel",
"publishedAt": "2026-09-08T00:00:00Z",
"stats": {
"plays": 184000
}
}
],
"next_cursor": "eyJvIjoxMH0"
},
"usage": {
"credits_spent": 1,
"balance": 656,
"bytes": 0
}
}Every YouTube endpoint
- POSTTranscriptText or segments for a YouTube video.
- POSTSearchSearch YouTube with date and length filters.
- POSTChannel VideosList a YouTube channel's videos.
- POSTPlaylistList a playlist's videos, page by page.
- POSTShortsList a channel's Shorts to transcribe.
- POSTChannel MonitorNew uploads from a channel, by webhook.
Same call, other platforms:TikTok Search APIInstagram Search API
Frequently asked questions
Is this the YouTube Data API's search.list?
No. It is TranscriptFetch's own search endpoint: no Google project, API key, OAuth or daily quota. One page of results costs 1 credit, and every row's url can go straight to the transcript endpoint.
Which filters does YouTube search support?
upload_date (hour, today, week, month, year), duration (short, medium, long), captions (true keeps only captioned videos) and sort (relevance or views). These are YouTube-only; TikTok and Instagram search take the query alone.
Can I search for channels or playlists rather than videos?
Yes. Send type channel or type playlist. The response's data.kind becomes channel_list or playlist_list, and each row's url is accepted by the channel or playlist endpoint as-is.
How do I page through results?
Each response carries data.next_cursor. Send it back as cursor to get the following page; limit sets the page size, up to 50. Stop when next_cursor is null.