YouTube Playlist Scraper (All Videos, Views, Duration) avatar

YouTube Playlist Scraper (All Videos, Views, Duration)

Pricing

from $0.70 / 1,000 video scrapeds

Go to Apify Store
YouTube Playlist Scraper (All Videos, Views, Duration)

YouTube Playlist Scraper (All Videos, Views, Duration)

Paste YouTube playlist URLs or IDs and get every video in order: title, URL, channel, views, publish date, duration and thumbnail, plus the playlist's title, owner, video count and total views. No API key, no quota. Export to Excel, CSV or JSON.

Pricing

from $0.70 / 1,000 video scrapeds

Rating

0.0

(0)

Developer

Julio Barcellos Rangel

Julio Barcellos Rangel

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 hours ago

Last modified

Share

YouTube Playlist Scraper takes playlist URLs or IDs and returns every video in the playlist, in order: title, URL, channel, views, publish date, duration and thumbnail, plus the playlist's title, owner, video count and total views. Use it to export a YouTube playlist to Excel, CSV or JSON, or to get all video links from a playlist, with no YouTube API key and no quota.

What does YouTube Playlist Scraper do?

You paste one or more playlists. For each playlist, the robot opens the public playlist page, reads the playlist details, then walks through the video list page by page (YouTube serves about 100 videos per page) until it reaches your limit or the end of the playlist. Each video becomes one row, and every row also carries the playlist's own details so you can mix many playlists in one table.

It accepts:

  • Playlist URLs: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH
  • Watch URLs that contain a playlist: https://www.youtube.com/watch?v=17WoOqgXsRM&list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH
  • Bare playlist IDs that start with PL, UU, OL, FL, LL, UL or PU, for example PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH, UUBJycsmduvYEL83R_U4JriQ (a channel's uploads) or OLAK5uy_…

Any other ID form also works if you paste it as a URL containing list=.

What comes out: for each video, its position, ID, title, URL, channel name, channel ID and channel URL, the view count (as a number and as YouTube's text), the publish date as YouTube shows it, the duration (as mm:ss and in seconds) and a thumbnail URL. For the playlist: ID, title, URL, owner, number of videos, total views and description.

No login, no cookies and no YouTube Data API key are needed.

What data can you extract?

Each video in a playlist is one item with these fields:

FieldWhat it meansExample
playlistIdID of the playlistPLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH
playlistTitleTitle of the playlistCoding Challenges
playlistUrlLink to the playlisthttps://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH
playlistOwnerChannel that owns the playlistThe Coding Train
playlistVideoCountNumber of videos YouTube shows for the playlist246
playlistViewsTotal views YouTube shows for the playlist2718722
playlistDescriptionDescription of the playlistIs it the gravy train or a train wreck?…
positionOrder of the video in the results for this playlist (1, 2, 3…)1
videoId11-character video ID17WoOqgXsRM
titleVideo titleCoding Challenge 1: Starfield Simulation
urlLink to the videohttps://www.youtube.com/watch?v=17WoOqgXsRM
channelNameChannel that published the videoThe Coding Train
channelIdChannel ID of the video's channelUCvjgXvBlbQiydffZU7m1_aw
channelUrlLink to the video's channelhttps://www.youtube.com/@TheCodingTrain
viewsView count as a number (rounded the way YouTube shows it)1300000
viewsTextView count as YouTube shows it1.3M views
publishedPublish date as YouTube shows it (relative, in English)10 years ago
durationVideo length as shown on the thumbnail13:54
durationSecondsVideo length in seconds834
thumbnailThumbnail image URLhttps://i.ytimg.com/vi/17WoOqgXsRM/hqdefault.jpg
scrapedAtWhen the row was collected (ISO 8601, UTC)2026-10-09T20:23:22.559Z
inputOnly on error items: the line from your inputPLxxxxxxxx
errorOnly on error items: what went wrongPlaylist not found or private

The default table view shows playlistTitle, position, title, channelName, views, published, duration and url. Every field is in the full JSON, CSV and Excel exports.

How to use YouTube Playlist Scraper

  1. Open the robot in Apify Console and go to the Input tab.
  2. In Playlists, paste one playlist URL or ID per line.
  3. Set Max videos per playlist (default 100, up to 5,000).
  4. Leave Proxy on the default Apify Proxy.
  5. Click Start. Rows appear in the Output tab while the robot works.
  6. Click Export to download the results as JSON, CSV, Excel, HTML or XML, or read them through the API.

Input

FieldTypeDefaultWhat it does
playlistsarray of strings (required)["https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH"]Playlist URLs, watch URLs with &list=, or playlist IDs.
maxVideosPerPlaylistinteger, 1 to 5,000100Stop after this many videos for each playlist.
proxyobject{ "useApifyProxy": true }Apify Proxy settings.

Example input:

{
"playlists": [
"https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH",
"UUBJycsmduvYEL83R_U4JriQ"
],
"maxVideosPerPlaylist": 500,
"proxy": { "useApifyProxy": true }
}

Output example

One real item from a recent run on The Coding Train's "Coding Challenges" playlist:

{
"playlistId": "PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH",
"playlistTitle": "Coding Challenges",
"playlistUrl": "https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH",
"playlistOwner": "The Coding Train",
"playlistVideoCount": 246,
"playlistViews": 2718722,
"playlistDescription": "Is it the gravy train or a train wreck? Watch me take on some viewer submitted coding projects!",
"position": 1,
"videoId": "17WoOqgXsRM",
"title": "Coding Challenge 1: Starfield Simulation",
"url": "https://www.youtube.com/watch?v=17WoOqgXsRM",
"channelName": "The Coding Train",
"channelId": "UCvjgXvBlbQiydffZU7m1_aw",
"channelUrl": "https://www.youtube.com/@TheCodingTrain",
"views": 1300000,
"viewsText": "1.3M views",
"published": "10 years ago",
"duration": "13:54",
"durationSeconds": 834,
"thumbnail": "https://i.ytimg.com/vi/17WoOqgXsRM/hqdefault.jpg",
"scrapedAt": "2026-10-09T20:23:22.559Z"
}

If a playlist is private or does not exist, you get one error item instead:

{
"input": "https://www.youtube.com/playlist?list=PLxxxxxxxxxxxxxxxx",
"playlistId": "PLxxxxxxxxxxxxxxxx",
"error": "Playlist not found or private"
}

How much does it cost?

The robot uses pay per event pricing. You pay only for the videos returned, and Apify platform usage is already included in the price.

EventPrice (Free plan)
Video scraped$0.001 per video, which is $1.00 per 1,000 videos

Paid Apify plans get a discount:

PlanPrice per 1,000 videos
Free$1.00
Bronze (-10%)$0.90
Silver (-20%)$0.80
Gold and higher (-30%)$0.70

Worked examples on the Free plan:

  • The full "Coding Challenges" playlist with 246 videos: $0.246.
  • 20 playlists × 100 videos = 2,000 videos: $2.00 ($1.40 on Gold).
  • One very large playlist at the 5,000-video limit: $5.00 ($4.50 on Bronze, $4.00 on Silver, $3.50 on Gold).

What is NOT charged:

  • Error items: lines that are not a playlist URL or ID, playlists that are private or not found, and playlists where no videos were found.
  • A video that shows up twice in the same playlist is returned only once.

Use cases

  • Export a course or tutorial playlist to a spreadsheet with titles, links and durations, and add up the total watch time from durationSeconds.
  • Compare episodes of a series: see which videos in a playlist get the most views.
  • Feed other tools: collect every video URL of a playlist and pass the list to a transcript or comments scraper.
  • List a channel's uploads: use the UU… uploads playlist to get a channel's videos in order.
  • Monitor competitors' playlists on a schedule and spot new videos as they are added.
  • Archive music playlists with titles, channels and lengths.
  • Audit your own playlists: find low-view videos or very long or very short entries.

Tips and limits

  • Up to 5,000 videos per playlist. That is the maximum of maxVideosPerPlaylist. The robot also stops at the end of the playlist.
  • Channel uploads trick. A channel's uploads playlist ID is its channel ID with UC replaced by UU. For example, channel UCBJycsmduvYEL83R_U4JriQ has the uploads playlist UUBJycsmduvYEL83R_U4JriQ.
  • Some playlist details can be empty. For channel uploads (UU…) playlists, YouTube does not show an owner, video count, total views or description in the same place, so playlistOwner, playlistVideoCount, playlistViews and playlistDescription can be null. The video rows are complete.
  • Views are rounded the way YouTube shows them in lists: 1.3M views becomes 1300000. Keep viewsText if you need the original text. For exact view counts per video, use the YouTube Video Details Scraper on the URLs.
  • Dates are relative. published is the text YouTube shows (10 years ago, or a "Streamed" / "Premiered" label). It is not an exact date.
  • duration can be empty when YouTube shows no time badge on the thumbnail, for example on a live stream. durationSeconds is then null too.
  • position counts the rows returned for that playlist, starting at 1, in the order YouTube lists the videos.
  • Private playlists can't be read. Only playlists that open without logging in work. Watch Later and Liked videos of your own account are private.
  • Error items are pushed for Not a playlist URL or ID, Playlist not found or private and No videos found. They are free.
  • Playlists are processed one after another, and each page of videos is saved as soon as it is read.
  • Proxy. Requests go through Apify Proxy, with retries on new IPs and a last try on the Residential proxy group when your account has access to it.

Use it from the API, Python or JavaScript

JavaScript (Node.js):

const { ApifyClient } = require('apify-client');
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const input = {
playlists: ['https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH'],
maxVideosPerPlaylist: 1000,
};
const run = await client.actor('juliob.rangel/youtube-playlist-scraper-fast').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.filter((v) => !v.error).map((v) => v.url));

Python:

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run_input = {
'playlists': ['https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH'],
'maxVideosPerPlaylist': 1000,
}
run = client.actor('juliob.rangel/youtube-playlist-scraper-fast').call(run_input=run_input)
items = client.dataset(run['defaultDatasetId']).list_items().items
print([v['url'] for v in items if 'url' in v])

You can also call it over plain HTTP with the Apify API (for example the run-sync-get-dataset-items endpoint of juliob.rangel~youtube-playlist-scraper-fast).

It works with Make, Zapier, n8n, Google Sheets export, webhooks and AI agents through the Apify MCP server.

FAQ

Do I need a login, cookies or a YouTube API key? No. The robot reads public playlists the way a logged-out visitor sees them.

Can I export a YouTube playlist to Excel or CSV? Yes. Click Export in the Output tab after the run and choose Excel, CSV, JSON, HTML or XML.

How many videos can I get from one playlist? Up to 5,000 per playlist per run, set with maxVideosPerPlaylist. You can add as many playlists as you want to one run.

Can I scrape a private playlist or my Watch Later list? No. Those need a login, and the robot does not log in, so you get an error item instead of videos.

Why are some playlist fields null? YouTube does not show every playlist detail on every kind of playlist. Channel uploads (UU…) playlists often have no owner, video count or view total in the header.

Why did I get an error item? The line was not a playlist URL or ID, the playlist is private or deleted, or YouTube returned no videos for it. Error items are not charged.

Is scraping YouTube playlists legal? The robot only collects publicly available data. You are responsible for complying with YouTube's terms and with privacy laws such as GDPR and LGPD. If you store personal data, you need a legitimate reason.


Extrator de Playlists do YouTube (PT-BR)

Cole links ou IDs de playlists do YouTube e receba todos os vídeos em ordem: título, link, canal, visualizações, data, duração e miniatura, além do título, dono, número de vídeos e visualizações da playlist. Sem chave de API. Você paga só por vídeo retornado.