YouTube Playlist Scraper — Public Video Metadata
Pricing
from $5.00 / 1,000 playlist video saveds
YouTube Playlist Scraper — Public Video Metadata
Extract public YouTube playlist videos in order. Use for course, content, and competitor research; returns video IDs, titles, channels, durations, thumbnails, and source URLs. Not for private playlists or video downloads. $0.005 per saved video plus a $0.00005 start event.
Pricing
from $5.00 / 1,000 playlist video saveds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
7 days ago
Last modified
Categories
Share
Extract the ordered videos from public YouTube playlists into structured, exportable records. It is designed for creators, content strategists, researchers, and AI workflows that need a clean list of a course, competitor series, or curated collection—not video downloads, private data, or channel-wide crawling.
What it returns
Each dataset row represents one public playlist entry.
| Field | Meaning |
|---|---|
playlistId, playlistTitle, playlistOwnerName | Public playlist identity and context |
videoId, videoUrl, position, title | Ordered video identity and public watch link |
channelName, channelUrl | Public source channel when returned |
durationText, durationSeconds, thumbnailUrl | Lightweight media metadata |
viewCountText, publishedText | Values shown by YouTube when included in the playlist response |
isPlayable | Whether YouTube exposed a usable public video reference |
source, scrapedAt | Extraction route and freshness timestamp |
Use it for public course inventories, content-gap analysis, playlist-to-spreadsheet exports, or as a seed list for a separate public-video enrichment workflow. Do not use it for private playlists, personal data, downloading video/audio, comments, transcripts, or playlist discovery from a channel.
Input
Pass full public playlist URLs, watch URLs that include list=, or raw playlist IDs. The actor deduplicates inputs and applies maxResults across the entire run.
{"playlists": ["https://www.youtube.com/playlist?list=PL590L5WQmH8fJ54F369BLDSqIwcs-TCfs"],"maxResults": 25,"includeUnavailable": false}
maxResults is a strict 1–500 cap. includeUnavailable preserves entries that YouTube publicly labels as deleted, private, or unavailable when they are returned; it does not grant access to their content.
Example output
{"playlistId": "PL590L5WQmH8fJ54F369BLDSqIwcs-TCfs","playlistUrl": "https://www.youtube.com/playlist?list=PL590L5WQmH8fJ54F369BLDSqIwcs-TCfs","playlistTitle": "Year in Search","playlistOwnerName": "Google","videoId": "KIViy7L_lo8","videoUrl": "https://www.youtube.com/watch?v=KIViy7L_lo8&list=PL590L5WQmH8fJ54F369BLDSqIwcs-TCfs","title": "2016 — Year in Search","position": 1,"channelName": "Google","durationText": "2:01","durationSeconds": 121,"thumbnailUrl": "https://i.ytimg.com/vi/KIViy7L_lo8/hqdefault.jpg","isPlayable": true,"source": "scrapecreators","scrapedAt": "2026-07-22T00:00:00.000Z"}
Null fields mean YouTube did not expose a stable public value for that entry. The actor never invents missing metadata.
Pricing and cost cap
This actor is configured for Pay per event. It charges:
- $0.00005 when valid input is accepted and public extraction starts.
- $0.005 for each validated video row that is persisted.
Apify platform usage is additional when the live actor is configured with Pay per event + usage. The run status message shows the maximum event-charge estimate before requests begin; maxResults: 25 has an event-charge ceiling of $0.12505, plus platform usage. A video is never billed unless its complete validated row is saved.
Reliability and sources
The primary route uses the documented ScrapeCreators public playlist endpoint when the owner-managed SCRAPECREATORS_API_KEY secret is configured. If that provider route is unavailable, the actor attempts YouTube’s public playlist payload and its continuation tokens without requiring user credentials. Both routes normalize into the same schema; source identifies which one supplied each record.
If neither route can return useful public data, the run fails honestly as UPSTREAM_FAILED rather than reporting an empty success. Private or restricted playlists remain out of scope. YouTube can change public response shapes, so release evidence should include separate short and long public playlist canaries, pagination, unavailable-entry handling, invalid inputs, and fallback routing.
Terminal outcomes
Every terminal path writes OUTPUT and RUN_SUMMARY in the default key-value store.
COMPLETE: all accepted public playlist work succeeded.PARTIAL: useful videos were saved, with skipped input, upstream, validation, or billing-limit warnings.VALID_EMPTY: valid public input produced no playlist entries.INVALID_INPUT: no valid public playlist target or an invalid result cap was supplied.UPSTREAM_FAILED: no useful output was produced because all available public routes failed.CONFIG_ERROR: deployment configuration prevented the advertised work.
The first four terminal outcomes succeed; the last two deliberately fail so downstream automations can distinguish an upstream outage from an empty playlist.
API example
import { ApifyClient } from "apify-client";const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor("khadinakbar/youtube-playlist-scraper").call({playlists: ["https://www.youtube.com/playlist?list=PL590L5WQmH8fJ54F369BLDSqIwcs-TCfs",],maxResults: 25,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Agent prompt card
Extract the public videos from this YouTube playlist in order. Return video ID, title, channel, duration, thumbnail, and watch URL. Cap the output at 25 videos and report if the playlist is private, unavailable, or only partially retrieved.
Responsible use
Use only publicly available metadata in a manner consistent with YouTube’s terms, privacy expectations, and applicable law. Do not use this actor to access private/restricted content, collect personal data, or automate spam.