YouTube Playlist API
One POST resolves a public YouTube playlist into a paginated list of its videos, each with a url the transcript and batch endpoints accept as-is. The playlist can be given as its URL or its PL… id. A playlist that is private or does not exist answers 404 not_found. No YouTube Data API key, OAuth or quota is involved, and a playlist that a channel listing returned (tab playlists or podcasts) can be passed here unchanged.
Each page of results is one credit, however many videos it lists; pass next_cursor back as cursor for the next page. Failed requests are free.
On this platform
- Accepts playlist URLs (youtube.com/playlist?list=PL…) and bare PL… ids; a video URL carrying a list parameter is treated as a video, not a playlist.
- One page costs 1 credit; pass next_cursor back as cursor for the next page.
- The playlist and podcast rows the channel endpoint returns carry a url this endpoint accepts as-is.
/api/v2/transcripts/playlistidempotentList a playlist's videos
Resolve a playlist into a paginated list of videos (metadata only). A playlist that does not exist or is not public answers 404 not_found. The platform is read from the input: a YouTube playlist or a TikTok playlist URL. Instagram has no public playlists; list the profile through the channel endpoint instead.
Body parameters
playliststringrequiredlimitinteger (1–50)optionalcursorstringoptionalRequest example
Responses
{
"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
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 are transcribed from audio and 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.