YouTube Playlist Videos Scraper avatar

YouTube Playlist Videos Scraper

Pricing

from $0.01 / 1,000 results

Go to Apify Store
YouTube Playlist Videos Scraper

YouTube Playlist Videos Scraper

Extract every video from a YouTube playlist in one run — title, id, watch URL, position, duration, view count, channel, publish time and thumbnail. Reads YouTube’s InnerTube API directly and pages the whole playlist automatically. No Data API key, no headless browser.

Pricing

from $0.01 / 1,000 results

Rating

0.0

(0)

Developer

Assia Fadli

Assia Fadli

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

YouTube Playlist Videos Scraper turns any YouTube playlist into a clean, structured list of its videos. Paste a playlist URL — or a bare playlist id — and get one tidy row per video, in playlist order, ready to drop into a spreadsheet, database or downstream pipeline.

No YouTube Data API key. No headless browser. No login. It talks straight to YouTube's own InnerTube API (the same endpoints the website uses) and pages through the entire playlist automatically, so it's fast, cheap and reliable.

Built for creators, analysts, agencies and developers who need a dependable playlist export without maintaining scraping infrastructure.

What you get

One dataset row per video:

FieldDescription
playlistIdThe playlist id (e.g. PL..., UU...)
playlistTitleThe playlist's display name
videoId11-character video id
titleVideo title
urlhttps://www.youtube.com/watch?v=<videoId>
indexPosition of the video in the playlist (1-based)
durationLength, e.g. "16:09"
lengthSecondsLength in seconds (when available)
viewsView count text, e.g. "7.4M views"
channelNameUploader / channel name
channelIdThe uploader's UC... id (when available)
publishedRelative publish time, e.g. "5 years ago"
thumbnailHighest-resolution thumbnail URL

If the playlist can't be read (empty, private, unavailable or an invalid id), the actor still writes a row — { "playlistId": "...", "error": "..." } — instead of finishing with empty output.

Input

FieldTypeRequiredDefaultDescription
playlistUrlstringhttps://www.youtube.com/playlist?list=PLbpi6ZahtOH6Blw3RGYpWkSByi_T7RygbPlaylist URL, a watch URL with a list= param, or a bare playlist id (PL..., UU..., OL...)
maxResultsinteger100Maximum number of videos to return (fetched in playlist order)
proxyCountryCodestringUSISO country code for the Apify residential proxy; leave blank to let Apify choose

You can also pass the playlist under the alias key playlist instead of playlistUrl.

Example input

{
"playlistUrl": "https://www.youtube.com/playlist?list=PLbpi6ZahtOH6Blw3RGYpWkSByi_T7Rygb",
"maxResults": 100,
"proxyCountryCode": "US"
}

Example output row

{
"playlistId": "UU8butISFwT-Wl7EV0hUK0BQ",
"playlistTitle": "Uploads from freeCodeCamp.org",
"videoId": "XgqWCiOVh7A",
"title": "How to think like a programmer",
"url": "https://www.youtube.com/watch?v=XgqWCiOVh7A",
"index": 1,
"duration": "1:00",
"views": "2.3K views",
"channelName": "freeCodeCamp.org",
"published": "18 hours ago",
"thumbnail": "https://i.ytimg.com/vi/XgqWCiOVh7A/hqdefault.jpg"
}

How it works

  1. Extract the playlist id from a ?list= parameter in a playlist/watch URL, or from a bare id (PL..., UU..., OL..., FL..., RD..., LL...). A leading VL browse-id prefix is stripped.
  2. Browse the playlist. It POSTs to youtubei/v1/browse with browseId = "VL" + playlistId using the WEB InnerTube client, which returns up to 100 videos per page.
  3. Page through results. It follows the continuationCommand.token from each response until maxResults is reached or there are no more pages, de-duplicating by videoId and guarding against continuation loops.

Requests are routed through Apify residential proxy when available, with an automatic fallback to a direct connection so a proxy hiccup never fails the run.

Pricing

This actor uses Apify's pay-per-event model. You're charged once per delivered playlist video (video-scraped); error rows are never billed, and the run stops automatically once your budget is reached.

Notes & limitations

  • The WEB client is required for the browse endpoint. The ANDROID/IOS clients cap a playlist at ~20 videos with no continuation token, so they cannot page.
  • views, published and duration are returned as YouTube's own display text (localized), not parsed numbers.
  • A few auto-generated playlists (for example YouTube's "Trending" list) are served in a special layout whose anonymous continuation is capped by YouTube, so only the first page (~20 videos) is available for those. Normal user-created and channel-uploads (UU...) playlists page fully.
  • Private, deleted or region-blocked videos may be omitted by YouTube.
  • YouTube can change its internal API at any time; this actor tolerates several response shapes but is not covered by an official API contract.

Tech

Written in TypeScript on the Apify SDK. HTTP-only, so builds are fast and runs are cheap.

License

MIT © Assia Fadli