YouTube Playlist Videos Scraper avatar

YouTube Playlist Videos Scraper

Pricing

from $0.005 / run started

Go to Apify Store
YouTube Playlist Videos Scraper

YouTube Playlist Videos Scraper

Extract public YouTube playlist video lists, positions, titles, channels, durations, views, thumbnails, and playlist metadata.

Pricing

from $0.005 / run started

Rating

0.0

(0)

Developer

Fetch Cat

Fetch Cat

Maintained by Community

Actor stats

0

Bookmarked

20

Total users

3

Monthly active users

13 days ago

Last modified

Security

Limited permissions

Share

Export public YouTube playlist-video rows with playlist context, observed order, video identities and available metadata. Use known playlist URLs or IDs to prepare a bounded inventory for separate research and curation. The Actor exports references and metadata rather than media files, private playlists or a guaranteed complete archive.

Quick start

Choose one known playlist and a small per-playlist cap. The existing example is:

{
"playlistUrls": [
"https://www.youtube.com/playlist?list=PLrEnWoR732-DZV1Jc8bUpVTF_HTPbywpE"
],
"maxVideosPerPlaylist": 25,
"proxyConfiguration": { "useApifyProxy": false }
}

Prefer a video guide? This short Apify walkthrough shows you how to set up and run an Actor. It uses a different Actor, but the setup steps are the same.

Ready-to-run examples

What you get

One saved playlist-video row with playlistId, playlist title and available owner text, video identity, observed position and collection time. Optional duration, relative publish text, views, channel, thumbnail and description snippet depend on the public playlist row. Playlist position is source ordering rather than a quality or popularity rank.

Who is it for?

  • Educators preparing source-linked learning-path inventories.
  • Editorial teams reviewing playlist membership and order.
  • Researchers building bounded public video samples with playlist provenance.
  • Data developers handing video IDs to separate comment or transcript workflows.

How you can use the data

  • Catalog the existing learning playlist. Export a small sample from PLrEnWoR732-DZV1Jc8bUpVTF_HTPbywpE and keep position, title, videoId and playlistId together. Open original links before deciding whether content belongs in a curriculum.
  • Review membership in your own snapshots. Save playlistId, videoId, position and scrapedAt in your destination before comparing repeated runs. A missing row can reflect a cap or source-access gap rather than a confirmed removal.
  • Prepare a channel-attribution sheet. Retain channelName and channelUrl when exposed beside each playlist video. Missing channel or view text is unknown, and playlist ownership is distinct from authorship of every video.
  • Create a separate enrichment handoff. Send saved video IDs or links to the related transcript or comment Actors. This playlist inventory does not download media, establish reuse rights or guarantee those other sources are available.

Input settings

SettingJSON keyWhat to enter
Playlist URLsplaylistUrlsPublic YouTube playlist URLs to export.
Maximum videos per playlistmaxVideosPerPlaylistCost and size cap per playlist.
Proxy configurationproxyConfigurationOptional connection settings. Direct by default. See field help for proxy costs and supported settings.

The main input is playlistUrls.

You can paste full URLs like:

https://www.youtube.com/playlist?list=PLrEnWoR732-DZV1Jc8bUpVTF_HTPbywpE

You can also use playlist IDs.

PLrEnWoR732-DZV1Jc8bUpVTF_HTPbywpE

Output data

The existing illustrative row contains historical metadata rather than fresh evidence of playlist membership:

{
"playlistUrl": "https://www.youtube.com/playlist?list=PLrEnWoR732-DZV1Jc8bUpVTF_HTPbywpE",
"playlistId": "PLrEnWoR732-DZV1Jc8bUpVTF_HTPbywpE",
"playlistTitle": "Learn Something New",
"position": 1,
"videoId": "MhgLasBFr6o",
"videoUrl": "https://www.youtube.com/watch?v=MhgLasBFr6o&list=PLrEnWoR732-DZV1Jc8bUpVTF_HTPbywpE&index=1",
"title": "What was TEKOI? [INCORRECT VERSION]",
"duration": "6:19",
"channelName": "CGP Grey",
"channelUrl": "https://www.youtube.com/@CGPGrey",
"scrapedAt": "2026-06-17T08:47:04.106Z"
}
FieldDescription
playlistUrlCanonical playlist URL
playlistIdYouTube playlist ID
playlistTitlePlaylist title
playlistOwnerPlaylist owner text when available
positionVideo position in the playlist
videoIdYouTube video ID
videoUrlWatch URL with playlist context
titleVideo title
descriptionSnippetPublic snippet when available
durationVideo duration text
thumbnailUrlVideo thumbnail URL
publishedAtTextPublic relative/date text
channelNameVideo channel name
channelUrlVideo channel URL
viewCountTextPublic view count text when available
scrapedAtExtraction timestamp

RUN_SUMMARY reports saved rows and completed, empty, partial or failed playlist entries. RUN_CHECKPOINT reports batch progress when available. These records help you distinguish unavailable targets from incomplete extraction.

Download your results

Open your run's dataset, choose Export and select JSON, CSV or Excel. JSON keeps nested fields together. CSV and Excel are useful when you want to review the records in a spreadsheet.

See Apify's download and export guide for the available formats and field options.

Pricing

After input and connection validation identify at least one usable playlist, the run charges the start event.

Each saved playlist-video row has a result event. Collection stops when no further results fit your charge budget. Failed or empty playlist targets do not create result rows, but a start charge can remain when no videos are saved.

See the live Pricing tab for current rates and discounts. Platform compute, storage, proxies or transfer can also apply.

Tips for best results

  • Use a known accessible playlist. Check that the page is visible without logging in.
  • Start with a low explicit cap. Inspect source fields and ordering before expanding toward the 500-row maximum.
  • Keep playlist and video identities together. A video can belong to more than one playlist, so retain context for comparisons.
  • Separate unrelated inventories. Smaller related groups are easier to inspect and reconcile with per-playlist outcomes.
  • Read summaries before interpreting gaps. A failed target, pagination warning or cutoff can leave only part of the requested inventory.

Limits and caveats

Only public or unlisted playlist information exposed without login can be collected. Private, deleted, members-only, age-restricted or region-blocked videos can be absent, and source fields such as publish dates or view text can be missing.

The Actor paginates up to the selected per-playlist cap of 500. Repeating the same input starts from the beginning rather than providing an offset to later entries, so it does not guarantee access beyond that cap. RUN_CHECKPOINT reports the next playlist index and pending IDs, but there is no checkpoint or page-offset input for automatic continuation.

Explicit source messages that a playlist is empty, private or unavailable produce an empty result with a reason. Unknown page layouts, blocked requests and extraction errors are not treated as confirmed empty playlists. Mixed batches retain working playlist rows and report incomplete entries. Essential dataset or billing errors fail the run.

Later page errors, a deadline or a result-charge limit can leave partial coverage. Summary and checkpoint records may be absent after an abrupt stop.

Safety bounds apply to each decoded response (4 MiB), nesting (64 levels) and parsing/traversal work (100,000 structural tokens or visited entries). Exceeding a bound is an extraction failure, not proof of an empty playlist; useful videos fetched before a later-page failure are preserved as a partial export. Text fields are capped at 2,000 characters and image/channel links at 2,048 characters. Playlist identifiers longer than 256 characters or input URLs longer than 8,192 characters are rejected to prevent oversized exports.

Extraction stops no later than 270 seconds after the original run start, with a 30-second reserve before a configured platform timeout. Extending the timeout or setting it to unlimited does not renew that extraction budget. The reserve is for saving collected rows and reporting, not more playlist requests.

A durable run-specific marker prevents automatic re-execution of the same run after restart, migration, reboot or resurrection. Such a restart fails rather than repeating requests, output or custom charges; request a separate new run if needed. Checkpoints are reporting-only, not resume instructions. Saving rows and charging are not transactional: an abrupt failure between them may leave accessible rows uncharged. The Actor does not automatically replay or rebill ambiguous output.

Privacy and data handling

Inputs and collected rows are stored in your Apify storage. Secret-redacted input and technical failure context may also be sent to FetchCat's error-monitoring service to diagnose failures. Do not include private data or credentials in playlist URLs, and review results before sharing them.

Automation and integrations

Save your settings for next time

Once you have an input that works for you, save it as an Apify task. This keeps your settings together so you can use them again without filling in the form from scratch.

Run on a schedule

Need fresh results regularly? You can schedule the Actor or a saved task to run at a time that suits you.

Each scheduled run collects the data again. If you want to compare results or highlight changes, add that step in your own workflow.

Send results to your other tools

Use n8n, Make or Zapier to connect this scraper to the rest of your workflow. For example, you could pass its results to an AI assistant or add records to a spreadsheet. Follow the Apify integration guides for your chosen tool.

For a custom connection, an Apify webhook can notify your app when a run finishes or fails. Your app can then fetch the results or handle the failure.

API usage

Want to collect this data from your own app or automation? The examples below send input to the scraper and show how to collect its results.

The Node.js and Python examples wait for the run to finish before reading its results. The cURL example starts the run and returns its details. Wait for that run to finish, then use its defaultDatasetId to fetch the results.

For setup instructions, see Apify's JavaScript client guide, Python client guide and Actor runs API reference.

cURL

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~youtube-playlist-videos-scraper/runs?token=MY_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"playlistUrls":["https://www.youtube.com/playlist?list=PLrEnWoR732-DZV1Jc8bUpVTF_HTPbywpE"],"maxVideosPerPlaylist":25}'

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/youtube-playlist-videos-scraper').call({
playlistUrls: ['https://www.youtube.com/playlist?list=PLrEnWoR732-DZV1Jc8bUpVTF_HTPbywpE'],
maxVideosPerPlaylist: 25
});
console.log(run.defaultDatasetId);

Python

from apify_client import ApifyClient
client = ApifyClient('MY_APIFY_TOKEN')
run = client.actor('fetch_cat/youtube-playlist-videos-scraper').call(run_input={
'playlistUrls': ['https://www.youtube.com/playlist?list=PLrEnWoR732-DZV1Jc8bUpVTF_HTPbywpE'],
'maxVideosPerPlaylist': 25,
})
print(run['defaultDatasetId'])

MCP and AI agents

You can ask your AI assistant to collect data with YouTube Playlist Videos Scraper and help you work with the results. The scraper returns the data, and your assistant can then summarize it, compare records or prepare notes.

Connect your assistant through the Apify MCP server. MCP gives your assistant a way to find this scraper, run it and read the results. Follow the official setup and sign-in guide for your app.

Easier setup with an Apify plugin

If you use a supported coding assistant, the official Apify plugin can set up the connection for you. It connects your assistant to Apify and includes instructions for common tasks. Follow the guide for your particular app.

Use Apify AI in Console

Prefer to keep everything in Apify? Open Apify AI in Console and ask it to find Fetch Cat's YouTube Playlist Videos Scraper. You can describe the data you want and ask questions about the results.

Apify AI is currently in beta. It asks for confirmation before starting an Actor, and normal run charges apply.

Choose your assistant

Connect just this scraper

To keep your setup focused on this scraper, add this server configuration to a compatible MCP client:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/youtube-playlist-videos-scraper"
}
}
}

Sign in to Apify when your client asks. If your client uses a Bearer token instead, follow its setup guide and keep the token in its secure configuration. Configuration formats vary by app, so use the linked guide if your client needs a different format.

Use Apify's general server

Already connected to the general Apify MCP server at https://mcp.apify.com? You can use it to find this scraper without adding another server. Ask your assistant to use YouTube Playlist Videos Scraper by Fetch Cat, or give it the identifier fetch_cat/youtube-playlist-videos-scraper.

Your assistant can check the available settings and retrieve the results from the returned run. If the run is still working, it should follow that run rather than start it again. Both connection options use Apify's hosted service.

Example requests

  • “Use Fetch Cat’s YouTube Playlist Videos Scraper to collect up to 5 rows from playlist PLrEnWoR732-DZV1Jc8bUpVTF_HTPbywpE. Keep playlist IDs, positions and video URLs without downloading media.”
  • “Retrieve up to 3 playlist-video rows from https://www.youtube.com/playlist?list=PLrEnWoR732-DZV1Jc8bUpVTF_HTPbywpE. Keep channel attribution and missing duration or view text visible rather than inventing values.”
  • “Collect up to 5 rows from that learning playlist and retain playlist ID, video ID, position and collection time for my own later comparison. Do not treat a missing row as a confirmed deletion or promise complete playlist coverage.”

Normal Apify charges apply. Check the live Pricing tab before asking your assistant to run a larger batch.

Pay with x402

If your AI agent has a funded wallet, it can pay for Apify usage through x402. This experimental option lets an agent use Apify without a conventional account.

Apify AGI provides a prepaid API token with a spending cap after payment. Your agent can use that token to run this scraper through the Apify API or an authenticated MCP connection.

Some MCP setups also support paying for each request directly. That is a different payment option, so check the official guide for its availability.

Follow the official guide for wallet setup, supported payment options and current terms. Apify handles the payments. Keep wallet keys and payment tokens in your agent's secure configuration.

Other ways for agents to pay

Apify also supports MPP for prepaid access through AGI and Skyfire for eligible Actors. If your agent already uses one of these, see the agentic payment guide to choose the right setup.

FAQ

Can it scrape private playlists?

No. The actor is designed for public playlist pages only.

Can I use playlist IDs instead of URLs?

Yes. Paste the playlist ID in the input list.

Does it download videos?

No. It extracts metadata and URLs only.

Can it monitor changes over time?

Yes. Schedule repeated runs and compare video IDs or positions between datasets.

Why are some fields empty?

YouTube does not show every metadata field for every playlist row. Empty fields mean the public page did not expose that value.

Troubleshooting

If a run returns no items, confirm that the playlist URL contains a list= parameter.

If the playlist opens only after login, the actor cannot access it as public data.

If a playlist is very large, reduce the limit for a first test run.

If YouTube temporarily blocks your run environment, try enabling Apify Proxy.

Other useful actors from the same catalog:

Use related scrapers when you need data outside playlist video inventories.

Support and feedback

For custom additions or integrations, email hello@fetchcat.dev.

Found an error or have a feature request? Open an issue with the run URL, a non-sensitive input example and what you expected.

Need help sharing it? See Apify’s guide to sharing a run when reporting an issue. Sharing a run can give the developer access to its input, logs and results, so use a run that contains no sensitive data. Please leave out API tokens, passwords, cookies, private documents and personal data. Use a public sample URL or a redacted example instead.

Tried this scraper? We'd love to hear how it worked for you. Leave a review to help others choose the right tool and help us improve it. Your feedback means a lot to us.

Made with care for curious people, AI agents and the possibilities in data. ♥