Body parameters
YouTube: playlist URL or PL… ID. TikTok: playlist URL (tiktok.com/@user/playlist/name-id).
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": "playlist",
"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
- POSTTranscriptFetch a YouTube video's transcript over REST: the request, every parameter, the JSON response with timestamped segments, and curl, Python and Node examples.
- POSTSearchSearch YouTube over REST without a Data API key or quota: the request, the upload date, duration, captions and sort filters, a real response, and curl, Python and Node examples.
- POSTChannel VideosList a YouTube channel's videos over REST without a Data API key: the request, the tab, sort and query options, since_video_id polling, a real response, and curl, Python and Node examples.
- POSTPlaylistList a YouTube playlist's videos over REST without a Data API key: the request with a playlist URL or PL id, cursor paging, a real response, and curl, Python and Node examples.
- POSTShortsList and transcribe a channel's YouTube Shorts over REST: the channel endpoint with tab shorts, a real Shorts listing, how a Short's transcript is fetched, and curl, Python and Node examples.
- POSTChannel MonitorWatch a YouTube channel for new videos over REST: create a monitor, receive each upload by signed webhook or from the events list, optionally with its transcript, with curl, Python and Node examples.
Frequently asked questions
Is this the YouTube Data API's playlistItems call?
No. It is TranscriptFetch's own endpoint: no Google project, API key, OAuth or quota. One page of a playlist costs 1 credit and the rows are ready for the transcript endpoint.
How do I transcribe a whole playlist?
List it page by page with cursor, collect the rows' urls and send them to the batch endpoint. Caption transcripts cost 1 credit each; videos without captions go to AI Fallback Transcription and are billed on delivery.
What about a channel's podcasts or playlists?
The channel endpoint with tab playlists or tab podcasts answers a playlist_list; each row's url is accepted here unchanged, so a channel's whole catalogue is a listing call followed by one playlist call per playlist.
Why did my playlist answer 404?
The playlist is private, unlisted in a way YouTube will not serve, or does not exist. Only public playlists are reachable, and a 404 costs nothing.