YouTube Playlist Scraper avatar

YouTube Playlist Scraper

Pricing

$0.39 / 1,000 results

Go to Apify Store
YouTube Playlist Scraper

YouTube Playlist Scraper

Scrape YouTube playlist videos into Dataset rows: IDs, titles, positions, views, durations, thumbnails, and playlist metadata. Cap results per playlist — metadata only, not a downloader.

Pricing

$0.39 / 1,000 results

Rating

0.0

(0)

Developer

Scrape Mamba

Scrape Mamba

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

YouTube Playlist Scraper — Playlist Videos & Metadata

Scrape YouTube playlists into Dataset rows: playlist metadata plus ordered videos with position, IDs, titles, views, durations, and thumbnails. Ideal for courses, albums, and editorial collections — metadata only, not a video downloader.

Run YouTube Playlist Scraper on Apify · Built by ScrapeMamba · Metadata only, not a video downloader


Why this Actor?

Playlists are durable join keys for curricula, music catalogs, and curated series. This Actor accepts playlist URLs or IDs, fetches capped video lists with positions preserved, and writes both a playlist meta row and per-video rows — ready for warehouse loads and enrichment.

  • Accepts ?list= URLs or bare playlist IDs
  • Preserves video position for ordered catalogs
  • Cap videos per playlist with maxResults (default 100)
  • Optional lang / country for locale

Key features

  • Playlist meta + ordered video rows in one run
  • Deduped playlist IDs before fetch
  • Per-playlist error isolation
  • Stable playlistId + videoId + position join keys
  • Apify Console, schedules, and API support

What you can scrape

Playlist meta (type: "playlist")

playlistId, playlistTitle, playlistUrl, playlistDescription, playlistThumbnail, playlistVideoCount, playlistVisibility, playlistChannelId, playlistChannelName, playlistChannelUrl

Playlist videos (type: "playlist_video")

videoId, title, author, channelId, views, likes, duration / length, position, thumbnail, url, isLive, deleted, plus playlist fields for denormalized joins


Use cases

  • Course / curriculum export — Ordered lesson lists with positions
  • Music / album catalogs — Tracklists with duration and channel metadata
  • Editorial collections — Archive curated series for analysis
  • Dataset buildingplaylistIdvideoId fact tables
  • Enrichment pipelines — Hand video IDs to Video or Subtitles scrapers

Example output

Playlist meta

{
"type": "playlist",
"playlistId": "PLOzDu-MXXLljymo0oXEkTSLKf5TqxY-JN",
"playlistTitle": "Example course playlist",
"playlistUrl": "https://www.youtube.com/playlist?list=PLOzDu-MXXLljymo0oXEkTSLKf5TqxY-JN",
"playlistVideoCount": 42,
"playlistChannelName": "Example Channel",
"playlistChannelId": "UCxxxxxxxxxxxxxxxxxxxxxx"
}

Video row

{
"type": "playlist_video",
"playlistId": "PLOzDu-MXXLljymo0oXEkTSLKf5TqxY-JN",
"playlistTitle": "Example course playlist",
"position": 1,
"videoId": "abc123xyz01",
"title": "Lesson 1",
"author": "Example Channel",
"views": 120000,
"duration": 612,
"url": "https://www.youtube.com/watch?v=abc123xyz01"
}

How to use

  1. Open YouTube Playlist Scraper
  2. Add playlists and set maxResults
  3. Run → filter by type (playlist vs playlist_video)

Input example

{
"playlists": [
"https://www.youtube.com/playlist?list=PLOzDu-MXXLljymo0oXEkTSLKf5TqxY-JN"
],
"maxResults": "50",
"lang": "en",
"country": "us"
}

API (Node.js)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('scrapemamba/youtube-playlist-scraper').call({
playlists: ['PLOzDu-MXXLljymo0oXEkTSLKf5TqxY-JN'],
maxResults: '100',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Local run

cd youtube-playlist-scraper-js
cp .env.example .env
npm install
node src/main.js

Input parameters

ParameterRequiredDefaultDescription
playlistsYesPlaylist URLs or IDs
maxResultsNo"100"Max videos per playlist. Free users capped at 200; paying users uncapped.
langNoYouTube hl (e.g. en)
countryNoYouTube gl (e.g. us)

Output

Each successful playlist yields one type: "playlist" meta row and up to maxResults type: "playlist_video" rows. Failures are type: "error" without stopping sibling playlists.


Why choose this Actor

  • Position preserved — Ordered catalogs for courses and albums
  • Meta + videos together — One run covers playlist and entries
  • Cap-friendly — Control cost before enriching every ID
  • Public / unlisted ready — Works with public and unlisted playlists you can open without owner login (not private)

Pricing

$0.39 per 1,000 results on Apify (meta + video rows count). Free users: maxResults capped at 200 per playlist. See the Store page.


FAQ

Does it download playlist videos?

No. Metadata and links only.

Private playlists?

Not supported — owner login would be required. Public and unlisted playlists that open without login work.

Default maxResults?

"100". Free users capped at 200; paying users uncapped.

How do I enrich videos afterward?

Collect videoIds from playlist_video rows and run Video Scraper or Subtitles Scraper.


ActorUse it for
YouTube Video ScraperPer-video details
YouTube Subtitles ScraperCourse transcripts
YouTube Search ScraperDiscover related keywords first

Use only on public (or unlisted-accessible) playlist data per YouTube’s terms and applicable law.