YouTube Playlist Scraper
Pricing
from $2.99 / 1,000 playlists
YouTube Playlist Scraper
Extract public video listings and playlist metadata from YouTube playlist pages with Playwright.
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
YouTube Public Playlist Scraper
Collect deduplicated video records from public YouTube playlist pages. The actor requests the ordinary rendered playlist page and parses its embedded ytInitialData; it does not call YouTube's private browse API, download media, access private playlists, or bypass authentication or CAPTCHAs.
Dataset
Each video row includes the canonical playlist and watch URLs, playlist title and description when public, playlist owner, playlist video/view counts, last-updated text, playlist thumbnail, video title, ID, position, duration and seconds, channel details, displayed and parsed view counts, publication text, accessibility text, thumbnail sizes, renderer provenance, locale context, continuation visibility, and scrape time.
If the public page is blocked, unavailable, or exposes no video items, the actor writes a diagnostic with exactly url, error, errorCode, and scrapedAt. The OUTPUT key-value record contains per-run counts and proxy state.
Input
| Field | Default | Description |
|---|---|---|
playlistUrls | required | One to 50 HTTPS public YouTube playlist URLs with a valid list parameter. |
maxItems | 100 | Maximum unique video rows retained per playlist page, from 1 to 5000. |
languageCode / countryCode | en / US | Locale context passed to the public page and recorded in each row. |
proxyConfiguration | none | Optional account-authorized Apify Proxy or credential-free HTTP/SOCKS URLs. |
enableProxyFallback | true | Try one ordinary configured Apify Proxy request after a direct page failure. |
includeDiagnostics | true | Keep bounded access and parsing diagnostics in the dataset. |
requestDelayMs / requestTimeoutSecs | 250 / 60 | Bounded pacing and request timeout. |
Example:
{"playlistUrls": ["https://www.youtube.com/playlist?list=PL2JtvykrieUxaLXkeuXRHb-pJB9XpVWtd"],"maxItems": 25,"languageCode": "en","countryCode": "US","proxyConfiguration": { "useApifyProxy": true },"enableProxyFallback": true,"includeDiagnostics": true}
Coverage and reliability
- Uses a fixed ordinary browser User-Agent and public HTML only.
- The initial public playlist page may expose a continuation marker. The actor records that fact but does not call the private continuation endpoint;
maxItemslimits the records retained from the public page response. - Proxy URLs, credentials, cookies, request identities, and operational proxy details are never written to dataset rows.
- No fingerprint spoofing, stealth patches, CAPTCHA/login bypass, private or alternate YouTube clients, or hidden API calls are implemented.
- Public counts, order, metadata, and availability are point-in-time observations. Deleted, age-restricted, private, region-restricted, or layout-changed items may be omitted.
Local verification
npm testnpx --yes apify validate-schema$env:APIFY_LOCAL_STORAGE_DIR = 'storage'npx --yes apify run --purge --input-file INPUT.jsonnode validate-datasets.js
The checked-in storage/ sample is refreshed from the latest local public-page run. Preserve it before replacing it.