YouTube Playlist Scraper
Pricing
from $0.50 / 1,000 video results
YouTube Playlist Scraper
Get every video of any YouTube playlist, with its title, views, duration and publish date, plus the playlist's own stats: title, description, video count, views. 0.50 USD per 1,000 videos.
Pricing
from $0.50 / 1,000 video results
Rating
0.0
(0)
Developer
Brahim Sliti
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Security
Limited permissionsShare
Give it a YouTube playlist, get back every video it contains, in order, with views, duration and publish date. Each row also carries the playlist's own title, description, channel and stats, so you don't need a second actor for them.
What people use it for
- Course and tutorial archiving. Pull every video of a multi-part series in the right order, with durations, to build a table of contents.
- Competitor research. Track a brand's "best of" or product playlists to see what they are promoting this month.
- Content curation. Export a public playlist you follow into a spreadsheet, with views and dates to sort by.
- Backup and migration. Get a clean list of every video id and URL in a playlist before it changes or disappears.
How to use it
- Add playlists in Playlist URLs / ids, one per line: a playlist URL (
https://www.youtube.com/playlist?list=PL...), a watch URL with&list=, or a bare id (PL...,UU...,OL...). - Set Max videos per playlist (default 100, up to 5000).
- Optional: turn on Add likes, comment count and full description for one extra request per video.
- Click Start. Export as JSON, CSV or Excel, or pull the results through the API.
{"startUrls": ["https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH"],"maxVideosPerPlaylist": 250}
What you get
{"id": "17WoOqgXsRM","title": "Coding Challenge #1: The Game of Life","url": "https://www.youtube.com/watch?v=17WoOqgXsRM","thumbnailUrl": "https://i.ytimg.com/vi/17WoOqgXsRM/hq720.jpg","duration": "17:00","durationSeconds": 1020,"viewCount": 676000,"channelName": "The Coding Train","channelId": "UCvjgXvBlbQiydffZU7m1_aw","playlistIndex": 1,"isPlayable": true,"playlistInfo": {"playlistId": "PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH","playlistTitle": "Coding Challenges","playlistChannelName": "The Coding Train","playlistVideoCount": 246,"playlistViewCount": 2719868}}
playlistIndexis the video's position in the playlist, starting at 1, with no gaps or duplicates even on a 5,000-video playlist read over several pages.playlistInfocarries the playlist's own title, description, channel and stats, the same on every row.isPlayableisfalsefor a private or deleted video still listed in the playlist; its other fields staynullsince YouTube gives nothing else for it.- Turn on Add likes, comment count and full description to also get
likes,commentsCount,text(the full description) andpublishedAtof each video, withdateIsApproximatetelling you whether that date is the exact one or (rarely, when a single video's own page could not be fetched) the same approximate one as without the option. Without the option, those five fields are left out, not guessed.
Pricing
0.50 USD per 1,000 videos. Likes, comment count and description are included at no extra cost when you turn them on.
There is no minimum charge per run: one playlist with 50 videos costs 0.025 USD. Error rows are free, and there's no monthly fee or Apify platform usage on top.
Example: 250 videos from one playlist costs 0.125 USD.
Good to know
- A mix or "radio" playlist (an id starting with
RD) is not a regular playlist: it comes back as anUNSUPPORTED_PLAYLISTerror row, free. - This actor only scrapes playlists. For a channel's own uploads, Shorts or streams, use our YouTube Channel Scraper. For captions, use our YouTube Transcript Scraper.
- Without Add likes, comment count and full description, dates come from the playlist listing itself and can be approximate ("2 months ago"); turn the option on for the exact publish date.
- You don't need a proxy, a YouTube account or a YouTube API key.
Use it from n8n, Make or an API
- Small inputs: call
run-sync-get-dataset-itemsand read the items back directly. Set Time budget (seconds) (default 240) to how long you are willing to wait: the actor stops picking up new pages before that point and returns what it already has, so you never hit Apify's 300 second run-sync limit and lose the whole run. - Big inputs: start the run with
POST /v2/acts/vakitek~youtube-playlist/runs, pollGET /v2/actor-runs/<runId>(or addwaitForFinish=60) until the status isSUCCEEDED, then readGET /v2/datasets/<datasetId>/items. Set Time budget (seconds) to0(no limit) for this pattern.
Errors
A bad input never crashes the run. It becomes a row with an error code, and you are not charged for it.
error | What happened | Retry? |
|---|---|---|
NOT_FOUND | The playlist URL or id doesn't match a real playlist | No |
UNSUPPORTED_PLAYLIST | The id is a mix/radio playlist or another auto-generated type YouTube does not let anyone browse | No |
NO_RESULTS | The playlist exists but has no videos | No |
INVALID_INPUT | An input value is invalid | No |
BLOCKED | YouTube refused us for now, even after trying every proxy tier | Yes |
UPSTREAM_ERROR | Something went wrong on YouTube's side or ours | Yes |
UPSTREAM_UNAVAILABLE | Our API was unreachable | Yes |
TIME_BUDGET_EXCEEDED | The time budget ran out before this playlist finished | Yes |
FAQ
How many videos can I get from one playlist? Up to 5000. Set Max videos per playlist as high as you need.
I already use another YouTube playlist actor. Do I have to change my code?
Probably not. The output field names (playlistIndex, playlistInfo, viewCount...) follow the most used playlist scrapers on the Store.
Can I call it from my code or from an AI agent? Yes, like any Apify actor: REST API, the Python and JavaScript clients, or the Apify MCP server. The examples are in the API tab.
Something broke or a field is missing? Open an issue on this page. We read every one and usually answer within a day.