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
15 hours ago
Last modified
Categories
Share
Collects rich records for public YouTube and YouTube Music playlists. The actor uses ordinary public HTML pages and parses the embedded ytInitialData payload that the page itself exposes. It does not use private service calls or signed media URLs.
Dataset fields
Each playlist record includes:
- playlist ID, canonical public URL, title, description, description length, creator/channel details, reported counts, privacy text, thumbnails with dimensions, source and search rank
- deduplicated tracks with video ID, title, description, accessibility text, artist objects, album, duration and seconds, views, publication text, badges, explicit/live/upcoming flags, playlist position, channel details, thumbnails with dimensions, and public YouTube/YouTube Music URLs
- public extraction provenance, locale, request limits, page availability, initial item coverage, continuation visibility, and scrape time
If a public page exposes a continuation marker, the dataset reports it. This implementation keeps requests bounded to public page/search pagination and does not replay opaque continuation commands.
Input
Use at least one search query or direct playlist URL. playlistUrls remains accepted as a compatibility alias for startUrls.
| Field | Default | Description |
|---|---|---|
searchQueries | — | Playlist search terms. |
startUrls | — | Public YouTube or YouTube Music playlist URLs. |
playlistUrls | — | Legacy alias for startUrls. |
maxItems | 20 | Maximum unique playlist records, 1–100. |
maxTracks | 100 | Maximum tracks per playlist, 1–500. |
maxPages | 3 | Maximum 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 | Try one configured Apify Proxy after a direct request fails. |
includeDiagnostics | true | Write bounded four-field diagnostics. |
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:
{"searchQueries": ["indie road trip playlists"],"startUrls": ["https://www.youtube.com/playlist?list=PLxxxx"],"maxItems": 5,"maxTracks": 50,"maxPages": 2,"includeDiagnostics": true,"proxyConfiguration": { "useApifyProxy": false }}
Reliability and verification
Requests use fixed ordinary public-page headers, bounded retries, pacing, and optional account-authorized Apify Proxy routing. There is no CAPTCHA/login bypass, request-identity spoofing, browser automation, or credential storage. When access is blocked or a page lacks playlist data, the actor preserves successful records and emits a bounded diagnostic instead of exposing response bodies or credentials.
Verify locally with npm test, npx apify validate-schema, npx apify run --purge --input-file INPUT.json, and node validate-datasets.js. Deploy with npx apify actors push <actor-id> --version 2.0 --build-tag latest, then call the cloud Actor with the bounded QA inputs and compare playlist IDs, track counts, required fields, duplicates, and provenance.