YouTube Playlists Scraper avatar

YouTube Playlists Scraper

Pricing

from $1.20 / 1,000 results

Go to Apify Store
YouTube Playlists Scraper

YouTube Playlists Scraper

Extract playlists from YouTube channels and expand each playlist into its videos. Accepts channel URLs/handles and direct playlist URLs.

Pricing

from $1.20 / 1,000 results

Rating

0.0

(0)

Developer

Beautiful Scrape

Beautiful Scrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

What is YouTube Playlists Scraper?

YouTube Playlists Scraper lets you extract playlists from YouTube channels and expand each playlist into its videos β€” helping you analyze curated content, track series, and gather playlist engagement data with just a few clicks.

Discover channel playlists: list every playlist on a channel's Playlists tab Expand playlist contents: get each video inside a playlist with title, duration, views, and position Scrape direct playlist URLs: process individual playlists without needing the channel tab Analyze curated content: understand how creators organize videos into playlists and series Automate playlist collection: replace manual browsing with repeatable workflows that keep datasets fresh and consistent

The scraper opens each channel's Playlists tab, discovers playlists, then expands each one into individual video rows with parent playlist metadata attached.

What data does YouTube Playlists Scraper extract?

πŸ“ Title - The video title

πŸ†” Video ID - The unique YouTube video ID

πŸ”— URL - Direct link to the video (includes playlist + index when available)

⏱️ Duration - Length of the video

πŸ‘οΈ View Count - Number of views on the video

πŸ“… Date - Upload date when available

πŸ–ΌοΈ Thumbnail URL - Thumbnail image for the video

πŸ“Ί Channel Name - Name of the channel that owns the playlist

🌐 Channel URL - Link to the channel page

πŸ†” Channel ID - YouTube channel ID

πŸ“‹ Playlist Title - Title of the parent playlist

πŸ†” Playlist ID - YouTube playlist ID

πŸ”— Playlist URL - Direct link to the playlist

πŸ”’ Playlist Video Count - Number of videos in the playlist (when shown on the tab)

πŸ”’ Order - 1-based position of the video in the playlist

🏷️ Type - Always "video" for items from this actor

Features

For maximum usefulness, YouTube Playlists Scraper has the following abilities:

List and expand: discover playlists on a channel, then emit one row per video inside each playlist

Flexible input: scrape from channel handles/URLs and/or direct playlist URLs in one run

Result limits: control how many playlists per channel (maxResultsPlaylists) and how many videos per playlist (maxResultsVideosPerPlaylist)

Automatic pagination: handles Playlists tab continuation pages and playlist video enumeration

Error resilience: continues processing remaining inputs even if one fails

Structured output: export data in JSON, CSV, Excel, or HTML with a consistent schema

⬇️ Input

Provide at least one of: channels or playlist URLs. You can set up the input programmatically or use the fields in the Actor's interface.

Channels

You can provide one or more YouTube channels using the channels array. The actor opens each channel's Playlists tab.

Supported channel formats:

  • Username: MrBeastGaming
  • Handle: @MrBeastGaming
  • Channel URL: https://www.youtube.com/@MrBeastGaming
  • Playlists tab URL: https://www.youtube.com/@MrBeastGaming/playlists
  • Channel ID URL: https://www.youtube.com/channel/UCxxx

Playlist URLs

Use playlistUrls to expand one or more playlists directly.

Supported URL formats:

  • https://www.youtube.com/playlist?list=PLxxxxxxxx

Input Parameters

Provide at least one of:

  • channels (array) - Channel usernames or URLs
  • playlistUrls (array) - Direct playlist URLs

Optional:

  • maxResultsPlaylists (integer, default: 10) - Max playlists to discover per channel
  • maxResultsVideosPerPlaylist (integer, default: 50) - Max videos to expand per playlist

Example Input (channels)

{
"channels": ["MrBeastGaming"],
"maxResultsPlaylists": 5,
"maxResultsVideosPerPlaylist": 20
}

Example Input (direct playlist)

{
"playlistUrls": [
"https://www.youtube.com/playlist?list=PLnYX1qinc5ASs-gDN960p3yo_YOYvialR"
],
"maxResultsVideosPerPlaylist": 10
}

Example Input (combined)

{
"channels": ["MrBeastGaming"],
"playlistUrls": [
"https://www.youtube.com/playlist?list=PLnYX1qinc5ASs-gDN960p3yo_YOYvialR"
],
"maxResultsPlaylists": 2,
"maxResultsVideosPerPlaylist": 10
}

⬆️ Output

The results will be wrapped into a dataset which you can find in the Output or Storage tab. Note that the output is organized in tables and tabs for viewing convenience. You can view results as a table, JSON, or other formats.

Once the run is finished, you can also download the dataset in various data formats (JSON, CSV, Excel, XML, HTML). Before exporting, you can pick or omit specific output fields.

Important: the actor does not emit one row per playlist. It emits one row per video inside each discovered/expanded playlist, with playlist metadata attached.

JSON Output

Here's an example of the data structure for a single video inside a playlist:

{
"id": "PRp5Y543LN0",
"title": "Exploring My Abandoned Minecraft Server",
"url": "https://www.youtube.com/watch?v=PRp5Y543LN0&list=PLnYX1qinc5AQUsQ6YCCV_Shtil7zSNThB&index=1",
"duration": "19:45",
"viewCount": 72000000,
"date": null,
"type": "video",
"thumbnailUrl": "https://i.ytimg.com/vi/PRp5Y543LN0/hqdefault.jpg",
"playlistId": "PLnYX1qinc5AQUsQ6YCCV_Shtil7zSNThB",
"playlistTitle": "Shorts",
"playlistUrl": "https://www.youtube.com/playlist?list=PLnYX1qinc5AQUsQ6YCCV_Shtil7zSNThB",
"playlistVideoCount": 3,
"channelName": "MrBeast Gaming",
"channelUrl": "https://www.youtube.com/channel/UCIPPMRA040LQr5QPyJEbmXA",
"channelId": "UCIPPMRA040LQr5QPyJEbmXA",
"fromYTUrl": "https://www.youtube.com/playlist?list=PLnYX1qinc5AQUsQ6YCCV_Shtil7zSNThB",
"order": 1,
"input": "MrBeastGaming"
}

Output Fields

FieldTypeDescription
titlestring | nullThe video title
typestringAlways "video"
idstringThe unique YouTube video ID
urlstringDirect link to the video (with playlist context when available)
thumbnailUrlstring | nullThumbnail image URL
viewCountnumber | nullNumber of views on the video
datestring | nullUpload date (ISO format) when available
durationstring | nullLength of the video
playlistIdstring | nullYouTube playlist ID
playlistTitlestring | nullTitle of the parent playlist
playlistUrlstring | nullDirect link to the playlist
playlistVideoCountnumber | nullNumber of videos in the playlist
channelNamestring | nullName of the channel
channelUrlstring | nullLink to the channel page
channelIdstring | nullYouTube channel ID
fromYTUrlstringThe playlist URL that was expanded
ordernumber1-based position in the playlist
inputstringOriginal input value (channel or playlist URL)

Error items

When the scraper cannot retrieve data for a given input β€” for example a channel does not exist or a playlist has no videos β€” it pushes an error item to the dataset instead of silently skipping it. Normal output items are never affected; you can tell them apart by the presence of an error field.

Error item structure

{
"url": "https://www.youtube.com/@somechannel",
"input": "somechannel",
"error": "CHANNEL_HAS_NO_PLAYLISTS",
"note": "Channel exists but has no playlists"
}

Error codes reference

Error codeMeaning
CHANNEL_DOES_NOT_EXISTChannel URL points to a channel that does not exist
CHANNEL_HAS_NO_PLAYLISTSChannel exists but has no playlists
NO_VIDEOSPlaylist exists but has no videos
NOT_FOUNDPage or playlist was not found
INVALID_INPUTActor failed due to bad configuration or a malformed URL