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
2 days 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.
Access and parsing issues are recorded in bounded run logs and the OUTPUT summary; they are never dataset rows. OUTPUT.status is SUCCEEDED when source-backed rows were saved or the query completed without results, and FAILED only when an actual failure occurs before any row is saved. dataStatus distinguishes COMPLETE, PARTIAL, NO_RESULTS, and FAILED.
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. |
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}
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.