Supported URLs
All URL formats- Handle
@veritasium - Handle URL
https://www.youtube.com/@veritasium - Channel ID
UCHnyfMqiRRG1u-2MsSQLbXA - Channel ID URL
https://www.youtube.com/channel/UCHnyfMqiRRG1u-2MsSQLbXA - Custom channel URL
https://www.youtube.com/c/veritasium - Legacy user URL
https://www.youtube.com/user/veritasium
Body parameters
- type
string- required
true- description
- YouTube: @handle, /channel/UC… URL, or UC… ID.
- TikTok: profile URL (tiktok.com/@user).
- Instagram: profile URL (instagram.com/user/).
- type
string- required
false- default
"videos"- values
videosshortsliveplaylistspodcasts- scope
- YouTube channels only
- description
- Which tab to list:
videos(the default),shorts, orlive(streams: past broadcasts and upcoming ones). playlistsandpodcastslist the channel'splaylistsinstead of itsvideos:data.kindisplaylist_list, and each row's url is accepted by the playlist endpoint.- A tab the channel does not have (
liveon a channel that has never streamed, say) answers 200 with an empty list, which is free, and a notice such as"This channel has no Live tab."
- Which tab to list:
- type
string- required
false- default
"newest"- values
newestpopularoldest- scope
- YouTube channels only
- description
popularis YouTube's own Popular order, most viewed first, and it leaves out videos with no views.- Not accepted with the playlists and podcasts tabs.
- type
string (1-200 characters)- required
false- scope
- YouTube channels only
- description
- Search inside this channel: the page holds its videos that match, rather than its latest uploads.
- Leave
tabandsortunset.
- 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
- type
string- required
false- description
- Newest video ID you have already seen.
- The response is trimmed to videos newer than it.
- A poll with
since_video_idis a check for new uploads and costs 1 credit whether or not it finds any (a plain listing that comes back empty stays free). - It needs newest-first videos: on a YouTube channel, the videos, shorts or live
tabwith the defaultsortand noquery.
{
"ok": true,
"request_id": "req_…",
"data": {
"kind": "video_list",
"source": "channel_videos",
"platform": "youtube",
"videos": [
{
"videoId": "dQw4w9WgXcQ",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"title": "Example video",
"duration": 212,
"channel": "Example Channel",
"publishedAt": "2009-10-25T00:00:00Z",
"stats": {
"plays": 1600000000
}
}
],
"next_cursor": "eyJvIjoxMH0"
},
"usage": {
"credits_spent": 1,
"balance": 98,
"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.
Frequently asked questions
Is this the YouTube Data API's channels or playlistItems call?
No. It is TranscriptFetch's own listing endpoint: no Google project, API key, OAuth or quota units. One page of a channel costs 1 credit, and so does a since_video_id poll that finds nothing new.
How do I get every video on a channel?
Call the endpoint with the channel and a limit, then keep sending data.next_cursor back as cursor until it is null. Each page costs 1 credit. To transcribe them, send the rows' urls to the batch endpoint.
How do I watch a channel for new uploads?
Pass the newest videoId you have seen as since_video_id. The response holds only videos newer than it, and each poll costs 1 credit, found or not. For scheduled checks with webhooks, use a monitor instead.
Can I list a channel's Shorts, live streams or playlists?
Yes. tab shorts lists its Shorts, tab live its past and upcoming streams, and tab playlists or podcasts its playlists, answered as a playlist_list whose rows the playlist endpoint accepts. sort (popular, oldest) and query (search inside the channel) apply to the videos, shorts and live tabs.