YouTube Playlist Scraper - Every Video In Order
Pricing
from $0.50 / 1,000 playlist videos
YouTube Playlist Scraper - Every Video In Order
Export every video in a YouTube playlist with its position, title, views, duration and thumbnail. Handles playlists of any length, including a channel's uploads playlist. Filter by views or title before billing. No API key and no Data API quota.
Pricing
from $0.50 / 1,000 playlist videos
Rating
0.0
(0)
Developer
DONGMIN KIM
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
YouTube Playlist Scraper — Every Video, In Order

Export a playlist to a table: position, title, URL, views, duration and thumbnail. Works on playlists of any length, and on a channel's uploads playlist.
No API key. The Data API caps at 10,000 quota units a day; this has no such ceiling.
What it does well
- Position is a field — the ordering is the thing a playlist has that a channel listing does not, so it ships as
positionrather than being left to the row order of a dataset. - Full pagination — the whole playlist, not the first 100.
- Filters run before billing — minimum views or a title fragment. Filtered videos cost nothing.
- Multiple playlists per run, each row tagged with its playlist.
Honest scope
Playlists are also accepted directly by our Transcript and Comments Actors, which expand them for you. Reach for this one when the playlist itself is the object of study — its order, its length, what is in it — rather than a way of naming a set of videos.
Input
{"playlistUrls": ["https://www.youtube.com/playlist?list=PLbpi6ZahtOH6Blw3RGYpWkSByi_T7Rygb","UUX6OQ3DkcsbYNE6H8uQQuVA"],"maxVideosPerPlaylist": 1000}
Every option
The same wording you see in the Apify console, with the JSON key for API and MCP callers.
| Option | What it does | Default |
|---|---|---|
Playlists — playlistUrls (required) | Playlist URLs, watch URLs carrying ?list=, or bare ids (PL…, UU…, OLAK5…). A channel's uploads playlist works too. | — |
Max videos per playlist — maxVideosPerPlaylist | Videos arrive 100 per request, so this is the main cost control. | 500 |
Minimum views — minViewCount | Drop videos below this view count. Filtered videos are not billed. | 0 |
Title contains any of — titleContains | Case-insensitive fragments. A video is kept if its title contains any of them. | — |
Concurrency — concurrency | Playlists read in parallel. | 3 |
Proxy — proxyConfiguration | Leave the default. Reads listing pages only, so it stays on cheap datacenter proxies. | {"useApifyProxy":true} |
Output
One row per video.
{"playlistId": "PLbpi6ZahtOH6Blw3RGYpWkSByi_T7Rygb","playlistUrl": "https://www.youtube.com/playlist?list=PLbpi6ZahtOH6Blw3RGYpWkSByi_T7Rygb","position": 1,"videoId": "8S0FDjFBj8o","url": "https://www.youtube.com/watch?v=8S0FDjFBj8o","title": "The first video in the playlist","viewCount": 15641909,"durationSeconds": 356,"publishedText": "3 years ago","thumbnailUrl": "https://i.ytimg.com/vi/8S0FDjFBj8o/hqdefault.jpg","scrapedAt": "2026-08-20T09:14:02.113Z"}
Every field
You are billed per video delivered, so here is everything a row can contain.
| Field | What it is |
|---|---|
playlistId / playlistUrl | Which playlist the row came from, so a multi-playlist run reads without a join. |
position | Position in the playlist, counted before filtering — so it still matches the playlist you would see on YouTube even when your filters remove rows. |
videoId | The 11-character id. |
url | watch?v= URL. |
title | Video title. |
viewCount | Views, parsed from the display text. |
durationSeconds | Length in seconds. |
publishedText | YouTube's relative text, when the playlist row carries one. |
isShort | true when the entry is a Short. Playlists mix formats, so this is how you separate them without re-checking each video. |
thumbnailUrl | Largest available thumbnail. |
scrapedAt | When this run read the playlist. |
Who this is for
- Course and curriculum builders — a tutorial playlist becomes a table with runtimes and the order preserved.
- Anyone taking a whole back catalogue — a channel's uploads playlist is every video it has ever published.
- Curation researchers — what a channel groups together, and in what order.
- Data teams feeding other Actors — playlist URLs in, video URLs out, straight into a transcript or comments run.
Common uses
- Course and series export — turn a tutorial playlist into a table with runtimes.
- Back-catalogue export — a channel's uploads playlist (
UUfollowed by the channel id without itsUC) is every video it has published. - Curation research — what a channel groups together, and in what order.
- Feeding other Actors — take the URLs into a transcript, comments or sponsorship run.
Pricing
Pay per video delivered — $0.50 per 1,000. Videos removed by your filters and failed playlists cost nothing.
Starting a run costs $0.00001 — the platform's $0.00001 minimum, charged once per GB of memory, and these Actors run on 512 MB.
Other Actors in this family
Same engines, same billing, no account or API key on any of them.
YouTube & video
- YouTube Scraper — No API Key, Any URL or Search — Any YouTube URL or search term in, videos out — with subtitles, comments and sponsor deals as add-ons.
- Download YouTube Subtitles in Bulk — SRT, VTT & Text — Bulk subtitles from videos, channels or playlists — text, SRT, VTT or RAG chunks.
- Export YouTube Comments to CSV — Replies and Likes — Every comment and reply thread, with likes, authors and creator flags.
- List Every Video on a YouTube Channel — Export to CSV — A channel's whole back catalogue plus a subscriber and RSS summary row.
- Find YouTube Sponsors — Brand Deals, Codes & Links — Which brands pay which creators, with the campaign link, the code and the timestamp.
- YouTube Search API — Bulk Results, No Quota — Many search terms at once, every result as a row, filtered before you are billed.
- Track Deleted YouTube Videos & Title Changes — What a channel quietly changed: deleted videos, rewritten titles, view velocity.
- YouTube Creator Email Finder & Sponsor Lookup — A channel list into leads: the published email, audience bands, and who already sponsors them.
Search demand
- AnswerThePublic Alternative — Autocomplete Keyword API — One seed into hundreds of real keywords from Google, YouTube and Amazon autocomplete.
- Google Trends API — Today's Trending Searches, No Key — Today's trending searches by country, with traffic bands and the news behind them.
E-commerce
- Export Any Shopify Store's Products to CSV or JSON — Any Shopify catalogue: variants, SKUs, live prices, stock, images, collections.
- New Shopify Product Alerts — Competitor Drop Tracker — Only what a store launched since the last run. Scanning is free.
- Shopify Store Email Finder — Qualified B2B Leads — A domain list into qualified leads: contact email, size, price band, and whether the shop still trades.
- Website Tech Stack & Email Finder for B2B Lists — Any domain list into leads: contact email, what the site runs on, and the marketing tags it carries.
Hiring
- Greenhouse, Lever & Ashby Job Scraper — No API Key — Paste a company domain, get its open roles from Greenhouse, Ashby, Lever or SmartRecruiters.
- Ghost Job Detector — Track Reposts, Closures & Edits — What changed on a careers page: opened, closed, quietly reposted, or a ghost job.
Run it from code
Nothing here needs a login to the source, only your Apify token.
HTTP — start a run and wait for the rows:
curl -X POST "https://api.apify.com/v2/acts/gganbukim~youtube-playlist-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "content-type: application/json" \-d @input.json
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('gganbukim/youtube-playlist-scraper').call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();
Python
from apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("gganbukim/youtube-playlist-scraper").call(run_input=input)items = client.dataset(run["defaultDatasetId"]).list_items().items
Scheduled or event-driven — attach a schedule to run it on a cron, or a webhook to push each finished run into your own endpoint. It also connects through Apify's Zapier, Make, n8n and LangChain integrations, and is reachable from an MCP server if you are driving it from an agent.
Standby / API mode — the run above is synchronous: one call in, rows out, no polling. That is the shape to use if you are calling this per request rather than in a batch.
Errors, limits and what you are charged for
- You pay for delivered rows only. A row your filters removed, a page that failed, a retry — none of it is billed. Starting a run costs $0.00001: the platform minimum, charged once per gigabyte, and this Actor runs on 512 MB.
- A run that delivers nothing still costs the start fee and nothing else. If the input resolved to zero items, the run fails loudly with the reason rather than finishing green on an empty dataset.
- Blocking is handled by changing address, not by waiting. The Actor starts on cheap datacenter proxies and moves up only after a tier has actually been refused several times in a row, then drops back down once the cheap tier answers cleanly again. You are not paying for residential bandwidth that was never needed.
- Rate limits belong to the source, not to this Actor. Very large inputs are worked through in batches; the run reports how many items succeeded, were filtered, and failed, so a partial result is never presented as a complete one.
- Dataset retention follows your Apify plan. Export what you need, or push it out with a webhook, if you want it past that window.
Is this legal?
This Actor reads pages and public endpoints that anyone can open in a browser without an account. It does not log in, does not defeat a paywall, and does not touch anything behind authentication.
Scraping public data is broadly lawful in the US and the EU, and courts have repeatedly said so — but "public" is not the same as "unrestricted", and what you may then do with the data is a separate question from whether you may collect it. Personal data pulls in the GDPR and similar regimes whatever the source, so if your rows contain people, you need a lawful basis for keeping them.
Apify publishes a fuller treatment in Is web scraping legal? and an ethical scraping guide. None of this is legal advice; if the use is commercial and the data is personal, ask someone qualified.
Something wrong, or missing?
Open an issue on the Actor's Issues tab — it goes straight to the developer and is the fastest route. Include the run ID; it carries the input and the log, which is usually enough to reproduce the problem without another round trip.
Sources change without warning, and a field that quietly goes null is worth reporting even if the run succeeded. A broken parser looks exactly like a quiet day in the data until someone says so.
FAQ
Will I get blocked, or my account banned? There is no account to ban — no login, no cookies. Playlist pages are listing pages, the least defended surface YouTube has, so this runs on datacenter proxies almost all of the time. YouTube signals throttling with an HTTP 200 and an error body rather than an error code, which is the trap that silently halves most scrapers' results; this one detects it by reason and rotates.
Is it legal to scrape a YouTube playlist? It reads the same public playlist pages a browser requests, with no login and nothing bypassed, and the fields are facts about videos rather than the videos themselves. Public-data scraping is broadly treated as lawful in the US; YouTube's Terms of Service are a separate contract question. Not legal advice.
Does it work on private playlists? No. A playlist must be public or unlisted — private ones are invisible without a login, and this Actor uses none. The run reports that as the failure reason rather than returning an empty result.
Does it need a YouTube API key? No.
How much does 1,000 videos cost? $0.50, plus $0.00002 for the run.
Can I export the results to Excel or Google Sheets? Yes. Every run's dataset downloads as CSV, Excel, JSON, XML or RSS from the Storage tab, or straight from the API.
Can I connect it to Zapier, Make or n8n? Yes — Apify publishes integrations for all three, plus webhooks that fire when a run finishes.
Do I need to write code? No. Fill the form in the console and press Start. It is also available over MCP so an AI agent can call it directly.
Can I run it on a schedule? Yes, via Apify Schedules, webhooks, or the API.