# YouTube Playlist Extractor - Video Metadata (`benthepythondev/youtube-playlist-extractor`) Actor

Extract YouTube playlist videos: playlist title, video title, URL, description, duration, channel, channel URL, views and thumbnails.

- **URL**: https://apify.com/benthepythondev/youtube-playlist-extractor.md
- **Developed by:** [Ben](https://apify.com/benthepythondev) (community)
- **Categories:** Social media, Marketing, SEO tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## YouTube Playlist Extractor - Export Playlist Videos

Extract YouTube playlist videos into structured data in one run. This actor returns playlist metadata and video-level fields such as title, URL, description, duration, channel, channel URL, view count and thumbnail. Export to JSON/CSV/Excel, run on a schedule, call via API, or connect to Make, Zapier or n8n.

### What is the YouTube Playlist Extractor?

YouTube playlists are used for courses, product libraries, podcasts, webinars, music collections, creator series and brand channels. This actor turns a playlist URL into a dataset you can export, analyze or sync into another system.

It uses `yt-dlp` flat extraction and does not download video files. The goal is metadata, not media downloading, which keeps runs lightweight and suitable for repeatable workflows.

#### What data does it extract?

- **Playlist metadata:** playlist id, playlist title and playlist URL.
- **Video metadata:** video id, watch URL, title, description, duration and thumbnail.
- **Channel metadata:** channel name, channel id and channel URL when available.
- **Performance metadata:** view count when exposed in the playlist result.

### Input

Paste one or more playlist URLs into `playlistUrls`. Set `maxResults` to limit the number of videos returned from each playlist.

Good examples include course playlists, company webinar playlists, creator series, educational channels, conference playlists and podcast video playlists.

#### Example input

```json
{
  "playlistUrls": [
    "https://www.youtube.com/playlist?list=PL-osiE80TeTt2d9bfVyTiXJA-UTHn6WwU"
  ],
  "maxResults": 25
}
```

### Output

Each row can include:

```json
{
  "playlist_id": "PL123",
  "playlist_title": "Python Tutorials",
  "playlist_url": "https://www.youtube.com/playlist?list=PL123",
  "video_id": "abc123",
  "url": "https://www.youtube.com/watch?v=abc123",
  "title": "Python Tutorial - Part 1",
  "description": "Learn Python from scratch...",
  "duration_seconds": 1800,
  "channel": "Example Channel",
  "channel_id": "UC123",
  "channel_url": "https://www.youtube.com/channel/UC123",
  "view_count": 250000,
  "thumbnail": "https://i.ytimg.com/..."
}
```

### Use cases

🎓 **Course and content audits:** Export a playlist and review titles, lengths and ordering. This is useful for training teams, creators, educators and agencies that manage large video libraries.

📺 **Competitor monitoring:** Track competitor playlists over time. Run the same playlist weekly and compare new videos, title changes and video counts.

🧩 **Creator and channel research:** Playlist data can reveal how a creator structures a topic. Export playlists around your niche and compare formats, series names, video lengths and channel metadata.

🏢 **Brand video inventories:** Export product playlists, webinar libraries, help-center videos or customer stories and keep an internal catalog up to date.

🔎 **SEO research:** Review playlist naming, sequencing and topic clustering to understand how successful channels package related videos.

### Workflow ideas

Use this actor as the first step in a video intelligence workflow. Export playlist videos, then pass the video URLs to a transcript extractor for topic analysis, summarize the transcript with your own tools, or sync the video rows into Airtable, Google Sheets, Notion or a database.

For agencies and research teams, keep one task per client or topic. Run it weekly, compare the dataset over time and flag new uploads. For educators and training teams, export playlists into a content inventory so you can audit outdated lessons, missing modules and video length balance.

For no-code operations, save the actor as a task and connect the default dataset to Google Sheets, Make, Zapier or n8n. A common setup is: run playlist extraction each morning, append new rows to a spreadsheet, then notify a team when a competitor or partner playlist adds a new video. Product teams can do the same with help-center playlists to catch stale or missing tutorial coverage.

### Reliability notes

The actor does not use a YouTube API key and does not download videos. It extracts public metadata. YouTube may change page behavior, so keep scheduled runs reasonable and avoid unnecessary high-volume scraping.

For larger jobs, split playlist URLs across tasks so individual failures are easier to retry. If a playlist is private, deleted or unavailable in your region, YouTube may not return entries for it.

### Pricing

The actor uses pay-per-result pricing. You are charged per video row pushed to the dataset, plus a tiny actor-start event.

### FAQ

#### Does it download videos?

No. It only extracts metadata.

#### Does it need a YouTube API key?

No. It uses public metadata extraction.

#### Can I extract multiple playlists?

Yes. Add multiple playlist URLs in one run.

#### Can I limit playlist size?

Yes. Use `maxResults`.

#### Can I schedule playlist monitoring?

Yes. Save a task and run it on a schedule to detect new playlist videos.

#### Does it work with course playlists?

Yes. Public course playlists are a good fit because the actor returns the video order, titles, durations and URLs needed for an audit or catalog.

#### Does it include transcripts?

No. This actor focuses on playlist and video metadata. Use a transcript actor separately if you need subtitles or full text.

#### Can I extract a full large playlist?

Yes, but keep `maxResults` sensible for scheduled runs. For very large playlists, increase gradually and test the run time.

#### Is it legal?

This actor extracts publicly available metadata. You are responsible for using the output lawfully, respecting YouTube's terms, copyright, privacy rules and any compliance requirements for your project.

#### Why use this instead of copying playlist pages manually?

Manual copying is slow and inconsistent. This actor gives you repeatable rows, export formats, scheduling, API access and integration into Apify workflows.

### You might also like

- YouTube Search Results Scraper - scrape videos by keyword
- YouTube Transcript Scraper - extract transcripts
- Google News Scraper - monitor news results
- Website Contact Extractor - enrich creator websites

### Keywords

YouTube playlist extractor, YouTube playlist scraper, export YouTube playlist, YouTube playlist API, YouTube video metadata, playlist video data, video catalog exporter, YouTube course playlist scraper.

# Actor input Schema

## `playlistUrls` (type: `array`):

YouTube playlist URLs to extract.

## `maxResults` (type: `integer`):

Maximum videos to return per playlist.

## Actor input object example

```json
{
  "playlistUrls": [
    "https://www.youtube.com/playlist?list=PL-osiE80TeTt2d9bfVyTiXJA-UTHn6WwU"
  ],
  "maxResults": 10
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "playlistUrls": [
        "https://www.youtube.com/playlist?list=PL-osiE80TeTt2d9bfVyTiXJA-UTHn6WwU"
    ],
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("benthepythondev/youtube-playlist-extractor").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "playlistUrls": ["https://www.youtube.com/playlist?list=PL-osiE80TeTt2d9bfVyTiXJA-UTHn6WwU"],
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("benthepythondev/youtube-playlist-extractor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "playlistUrls": [
    "https://www.youtube.com/playlist?list=PL-osiE80TeTt2d9bfVyTiXJA-UTHn6WwU"
  ],
  "maxResults": 10
}' |
apify call benthepythondev/youtube-playlist-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=benthepythondev/youtube-playlist-extractor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/po25AqtJGljDRH25t/builds/YtrpdnaaPym2G6r1T/openapi.json
