YouTube Music Playlist Scraper avatar

YouTube Music Playlist Scraper

Pricing

from $2.99 / 1,000 playlists

Go to Apify Store
YouTube Music Playlist Scraper

YouTube Music Playlist Scraper

Search YouTube Music playlists or browse playlist URLs directly. Saves rich playlist and deduplicated track metadata through first-party YouTube Music endpoints.

Pricing

from $2.99 / 1,000 playlists

Rating

0.0

(0)

Developer

w3crawler

w3crawler

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

YouTube Music Public Playlist Snapshot Scraper

Collects rich records for public YouTube and YouTube Music playlists. The actor searches ordinary public result pages and fetches one initial public playlist-page snapshot for each selected playlist. It parses the page’s embedded ytInitialData; it does not call private YouTube services, replay opaque playlist continuation commands, or retrieve signed media URLs.

This is a public-page snapshot scraper. For authorized applications that need complete playlist traversal or an official API contract, use the YouTube Data API or another permitted integration. The Actor is not affiliated with YouTube.

Scope and limits

The playlist page is the source of truth for the initial snapshot. A page can expose a continuation marker while only exposing its first batch of tracks in the HTML. The actor reports continuationDetected, continuationCount, initialTrackItemsExposed, tracksCollected, tracksReported, and snapshotStopReason, but does not pretend that later continuation pages were fetched. maxTracks is therefore bounded to 1–100, the supported initial-page collection range.

Search pagination is separate: maxPages controls ordinary public search result pages per search query. Playlist-page continuation is not supported. Results are deduplicated globally by playlist ID, and tracks are deduplicated by video ID within each playlist record.

Dataset fields

Each normal playlist record includes:

  • playlist ID, canonical public URL, title, description, creator/channel details, reported counts, privacy text, and thumbnails with dimensions
  • tracks with video ID, title, accessibility text, artist objects, album, duration, views, publication text, badges, explicit/live/upcoming flags, playlist position, channel details, thumbnails, and public YouTube/YouTube Music URLs
  • trackCount/tracksCollected for the returned track array and reportedTrackCount/tracksReported when the public page reports a count
  • public extraction provenance, locale, request limits, initial item coverage, snapshot stop reason, continuation visibility, and scrape time

Failed or incomplete public-page operations are logged and counted in OUTPUT; they are never written as dataset rows. The dataset contains only source-backed playlist snapshots. The OUTPUT key-value record reports status (SUCCEEDED or FAILED), dataStatus (COMPLETE, PARTIAL, NO_RESULTS, or FAILED), playlist, collected-track, reported-track, page, continuation, proxy, and diagnostic counts.

Input

Provide at least one search query or direct public playlist URL. playlistUrls remains accepted as a compatibility alias for startUrls; duplicate URLs and playlist IDs are removed.

FieldDefaultDescription
searchQueries—Playlist search terms. Each query can use up to maxPages public result pages.
startUrls—Public YouTube or YouTube Music playlist URLs.
playlistUrls—Legacy alias for startUrls.
maxItems20Global maximum of unique playlist records, 1–100.
maxTracks100Maximum deduplicated tracks returned from each initial playlist page, 1–100.
maxPages3Maximum ordinary public search pages per query, 1–10.
languageCodeenPublic-page language context.
countryCodeUSPublic-page country context.
proxyConfiguration—Optional account-authorized Apify Proxy or credential-free HTTP/SOCKS URLs.
enableProxyFallbacktrueAfter a direct request fails, try one ordinary configured Apify Proxy request.
requestDelayMs250Delay between requests, 0–5000 ms.
requestTimeoutSecs60Per-request timeout, 15–180 seconds.
maxRetries1Bounded retries per request, 0–3.

Example search input:

{
"searchQueries": ["indie road trip playlists"],
"maxItems": 5,
"maxTracks": 50,
"maxPages": 2,
"proxyConfiguration": { "useApifyProxy": false }
}

Example direct snapshot input:

{
"startUrls": ["https://www.youtube.com/playlist?list=PLxxxx"],
"maxItems": 1,
"maxTracks": 20,
"maxPages": 1,
"enableProxyFallback": false,
"requestDelayMs": 0
}

Reliability and verification

Requests use fixed ordinary public-page headers, bounded retries, pacing, and optional configured Apify Proxy routing. Direct requests are attempted first unless an explicit proxy is supplied. A proxy can improve network reachability but does not defeat access controls. There is no CAPTCHA/login bypass, browser fingerprint evasion, private-client API call, or credential storage.

If a public page is blocked or lacks playlist data, the actor preserves successful records and logs a bounded diagnostic instead of exposing response bodies or credentials. OUTPUT reports run status and counts; the dataset contains only usable source-backed playlist records.

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Cost is driven by the number of search pages, selected playlist pages, retries, pacing, proxy use, and the size of each nested initial track array. Keep maxItems, maxPages, maxTracks, and retries bounded for predictable runs.

Local validation

npm ci
npm test
npx apify validate-schema
npx apify run --purge --input-file INPUT.json
node validate-datasets.js

For cloud runs, inspect the Actor’s Issues and API tabs, compare the exact build and run IDs, and verify source-backed records, track ID uniqueness, provenance, logs, and OUTPUT reconciliation. Users are responsible for complying with YouTube’s terms, copyright rules, and applicable law.