YouTube Music Playlist Scraper
Pricing
from $2.99 / 1,000 playlists
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
Maintained by CommunityActor 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
trackswith 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 URLstrackCount/tracksCollectedfor the returned track array andreportedTrackCount/tracksReportedwhen 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.
| Field | Default | Description |
|---|---|---|
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. |
maxItems | 20 | Global maximum of unique playlist records, 1–100. |
maxTracks | 100 | Maximum deduplicated tracks returned from each initial playlist page, 1–100. |
maxPages | 3 | Maximum ordinary public search pages per query, 1–10. |
languageCode | en | Public-page language context. |
countryCode | US | Public-page country context. |
proxyConfiguration | — | Optional account-authorized Apify Proxy or credential-free HTTP/SOCKS URLs. |
enableProxyFallback | true | After a direct request fails, try one ordinary configured Apify Proxy request. |
requestDelayMs | 250 | Delay between requests, 0–5000 ms. |
requestTimeoutSecs | 60 | Per-request timeout, 15–180 seconds. |
maxRetries | 1 | Bounded 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 cinpm testnpx apify validate-schemanpx apify run --purge --input-file INPUT.jsonnode 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.