# Fast YouTube Playlist Scraper API | Extract Videos & Metadata (`apidojo/youtube-playlist-scraper`) Actor

The ultimate solution for detailed YouTube playlist information. Enjoy unmatched speed and thoroughness in both search and direct video retrieval from playlists. Additionally, it's remarkably cost-effective at just $0.50 per 1000 videos!

- **URL**: https://apify.com/apidojo/youtube-playlist-scraper.md
- **Developed by:** [API Dojo](https://apify.com/apidojo) (community)
- **Categories:** Videos, Social media, Lead generation
- **Features:** Limited permissions
- **Stats:** 696 total users, 46 monthly users, 100.0% runs succeeded, 16 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.50 / 1,000 youtube video items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Fast YouTube Playlist Scraper API: Extract Videos, Metadata & Content Series at Scale

**The most comprehensive YouTube playlist data extractor for course research, content auditing, and video curation.**

Extract YouTube playlist videos including video titles, view counts, channel data, video position/order, and playlist metadata from any public playlist. This **YouTube playlist scraper API** works without login—no proxies, no authentication, no API keys required. Built for educators, content strategists, and researchers who need to **scrape YouTube playlist** data at scale.

💰 **Transparent Event-Based Pricing**

- **Playlist Query**: $0.05 per playlist (~100 videos FREE!)
- **Additional Videos**: $0.0005 each

⚡ **Speed:** Up to 13 videos/second\
📊 **Coverage:** All videos in playlist with position, duration, engagement metrics\
🎯 **Output:** JSON/CSV with video titles, view counts, channel data, thumbnails, and tags\
🚀 **Setup:** Zero configuration—no authentication or proxy required

Perfect for **course & curriculum research**, **competitor content auditing**, **video curation**, and **content gap analysis** at a fraction of traditional API costs.

### 📋 Table of Contents

- [⚡ Features & Capabilities](#features--capabilities)
- [💰 Pricing: Transparent Event-Based Costs](#pricing-transparent-event-based-costs)
- [🍚 Input Parameters](#input-parameters)
- [💡 YouTube Playlist Scraper Strategy Guide](#youtube-playlist-scraper-strategy-guide)
- [📦 Output Format](#output-format)
- [🧩 Custom Map Function](#custom-map-function)
- [🔌 Send Results to Notion, Todoist and More (MCP Connectors)](#send-results-to-notion-todoist-and-more-mcp-connectors)
- [🌴 Related Scrapers & Data Extraction Tools](#related-scrapers--data-extraction-tools)
- [🆓 Demo Mode & Free Testing](#demo-mode--free-testing)
- [🔧 Troubleshooting Common Issues](#troubleshooting-common-issues)
- [🎯 Use Cases & Industries](#use-cases--industries)
- [💡 Quick Start Guide](#quick-start-guide)
- [❓ Frequently Asked Questions](#frequently-asked-questions)
- [📞 Contact](#contact)

##### 🧭 What Does the YouTube Playlist Scraper Do?

**YouTube playlist scraper** is a tool that automates the process of collecting playlist IDs, playlist titles, video counts, and all per-video data from YouTube playlists. This **YouTube playlist data extractor** enables course research, competitor content auditing, and large-scale video curation.

The **Api Dojo YouTube Playlist Scraper API** retrieves comprehensive playlist data—including video IDs, video titles, video positions, durations, view counts, and channel information—from any public playlist URL. This tool operates at speeds up to 13 videos per second without requiring proxies, authentication, or official YouTube API quotas.

This **YouTube playlist scraper** serves as a practical alternative to the YouTube Data API v3 (playlistItems resource) for bulk playlist data collection. No quota limits, no API key management—just straightforward data access through Apify's infrastructure. **Extract YouTube playlist videos** from any public playlist in minutes.

#### What You Get From Every Playlist

When you **extract YouTube playlist videos**, you receive comprehensive content series intelligence:

**📝 Playlist Information**

- Playlist ID, playlist title, playlist URL
- Playlist description, playlist thumbnail URL
- Channel ID, channel name, channel URL (playlist owner)
- Video count (total items in playlist)
- Playlist visibility (public, unlisted)

**🎬 Per-Video Data**

- Video ID, video title, video URL
- Video position/order in playlist
- Video duration, video description
- View count, like count, comment count
- Channel name, channel ID (video uploader)
- Publish date, thumbnail URLs
- Tags, category, language
- Is deleted / unavailable video flag

#### What Data Can You Extract?

This **YouTube playlist data extractor** captures all key playlist and video information:

| Data Type               | What You Extract                       | Use Case                          |
| ----------------------- | -------------------------------------- | --------------------------------- |
| 📝 **Playlist Metadata** | Title, description, owner, video count | Content series analysis           |
| 🎬 **Video Details**     | Title, duration, description, tags     | Course research, content auditing |
| 📊 **Engagement**        | Views, likes, comments per video       | Performance analysis              |
| 📍 **Position Data**     | Video order/position in playlist       | Learning path analysis            |
| 📺 **Channel Info**      | Uploader name, ID, URL per video       | Creator mapping                   |

### ⚡ Features & Capabilities

Complete, structured access to YouTube's public playlist data—including playlist metadata, video positions, engagement metrics, and channel information. This **YouTube playlist scraper API** is built for content series intelligence at scale.

#### Query Types for Complete Coverage

| Query Type           | What It Extracts                    | Example Input                                 |
| -------------------- | ----------------------------------- | --------------------------------------------- |
| 📝 **Playlist URL**   | All videos from a specific playlist | `https://www.youtube.com/playlist?list=PL...` |
| 🔍 **Keyword Search** | Playlists matching search terms     | `python tutorial`, `music hits 2024`          |

#### Core Features

| Feature                   | Description                          | Benefit                                    |
| ------------------------- | ------------------------------------ | ------------------------------------------ |
| 💰 **Event-Based Pricing** | Pay only for videos you extract      | Cost control: Only pay for what you scrape |
| 🎁 **~100 Free Videos**    | Free tier with every playlist query  | Budget-friendly: Substantial free data     |
| ⚡ **13 Videos/Second**    | High-speed extraction                | Time savings: Extract hundreds in minutes  |
| 🔑 **No Authentication**   | Works without YouTube login          | Simple: Start scraping immediately         |
| 🚀 **No Proxy Required**   | Infrastructure handled on Apify      | Cost savings: No proxy management          |
| 🌍 **Multi-Language**      | Support for any language/region      | Global: International playlist research    |
| 📍 **Position Tracking**   | Video order preserved in output      | Structure: Maintain playlist sequence      |
| 📥 **JSON/CSV Export**     | Clean structured output for analysis | Integration-ready: Direct pipeline import  |

### 💰 Pricing: Transparent Event-Based Costs

Pay only for what you scrape—no subscriptions, no hidden fees. Significantly more affordable than traditional YouTube data APIs for bulk playlist extraction.

#### 📊 Event Costs by Query Type

| Event Type         | Price       | Free Videos Included | What Triggers It                      |
| ------------------ | ----------- | -------------------- | ------------------------------------- |
| **Playlist Query** | **$0.05**   | **~100 videos FREE** | Scraping videos from a playlist       |
| **Dataset Item**   | **$0.0005** | N/A                  | Each video beyond the first free page |

#### � Cost Examples

| Scenario                     | Charges               | Calculation                   | Total Cost |
| ---------------------------- | --------------------- | ----------------------------- | ---------- |
| **1 playlist, 100 videos**   | 1 query               | $0.05 × 1                     | **$0.05**  |
| **1 playlist, 200 videos**   | 1 query + 100 items   | $0.05 + ($0.0005 × 100)       | **$0.10**  |
| **1 playlist, 500 videos**   | 1 query + 400 items   | $0.05 + ($0.0005 × 400)       | **$0.25**  |
| **5 playlists, 500 videos**  | 5 queries             | $0.05 × 5                     | **$0.25**  |
| **5 playlists, 1000 videos** | 5 queries + 500 items | ($0.05 × 5) + ($0.0005 × 500) | **$0.50**  |

#### Important Usage Guidelines

This **YouTube playlist scraper** is built to collect meaningful playlist data. Use it for course research, content auditing, and video curation at scale.

**Free users**: Limited to **5 runs per month**, each capped at **10 items**.

### 🍚 Input Parameters

Flexible input options for targeting YouTube playlists with simple configuration.

| Field               | Type   | Description                                   | Default    |
| ------------------- | ------ | --------------------------------------------- | ---------- |
| `startUrls`         | array  | YouTube playlist URLs to scrape               | `[]`       |
| `keywords`          | array  | Search keywords to find playlists             | `[]`       |
| `gl`                | string | Region code / country code (US, UK, DE, etc.) | `us`       |
| `hl`                | string | Language parameter (en, es, de, etc.)         | `en`       |
| `sort`              | string | Sort search results (`r` = relevance)         | `r`        |
| `maxItems`          | number | Maximum number of videos to retrieve          | `Infinity` |
| `customMapFunction` | string | JavaScript function to transform each output item. Ignored with a warning if it is not a usable function | `null`     |
| `outputConnector`   | string | MCP connector to deliver the results to — pick one (see [Send Results to Notion, Todoist and More (MCP Connectors)](#send-results-to-notion-todoist-and-more-mcp-connectors)). | `null`     |
| `deliverTarget`     | string | Where the connector writes — paste the URL or ID (Notion example: `https://www.notion.so/My-Posts-24f8a1b2c3d44e5f8a9b0c1d2e3f4a5b`); some services need none. | `null`     |
| `deliverMode`       | string | `perPost` (one record per item) or `summary` (one roll-up per run). | `perPost`  |
| `deliverMaxItems`   | number | Optional cap on how many records `perPost` delivers (ignored in `summary`). | `null`     |

#### Supported Input Types

| Input Type         | Format                                        | What It Extracts                |
| ------------------ | --------------------------------------------- | ------------------------------- |
| **Playlist URL**   | `https://www.youtube.com/playlist?list=PL...` | All videos from the playlist    |
| **Keyword Search** | `python tutorial`, `music hits`               | Playlists matching search terms |

***

### 💡 YouTube Playlist Scraper Strategy Guide

Choose the right extraction approach based on your data needs and budget. Each strategy optimizes for different use cases when you need to **scrape YouTube playlist** or **extract YouTube playlist videos** at scale.

#### Strategy 1: Single Playlist Extraction (Course Research)

**Best for:** Course & curriculum research, learning path analysis, educational playlists

```json
{
  "startUrls": ["https://www.youtube.com/playlist?list=PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf"],
  "maxItems": 100
}
```

| Cost Breakdown      | Calculation |
| ------------------- | ----------- |
| 1 playlist query    | $0.05       |
| 0 additional videos | $0.000      |
| **Total**           | **$0.05**   |

**Use case:** Extract all videos from an educational playlist for **course research** and curriculum analysis.

***

#### Strategy 2: Multiple Playlist Comparison (Competitor Auditing)

**Best for:** Competitor content auditing, content gap analysis, series comparison

```json
{
  "startUrls": [
    "https://www.youtube.com/playlist?list=PLAYLIST_1",
    "https://www.youtube.com/playlist?list=PLAYLIST_2",
    "https://www.youtube.com/playlist?list=PLAYLIST_3"
  ],
  "maxItems": 500
}
```

| Cost Breakdown        | Calculation           |
| --------------------- | --------------------- |
| 3 playlist queries    | $0.05 × 3 = $0.15     |
| 200 additional videos | $0.0005 × 200 = $0.10 |
| **Total**             | **$0.25**             |

**Use case:** Compare competitor playlists for **content gap analysis** and series strategy.

***

#### Strategy 3: Keyword-Based Playlist Discovery

**Best for:** Niche research, playlist discovery, lead generation

```json
{
  "keywords": ["python machine learning tutorial"],
  "gl": "us",
  "hl": "en",
  "maxItems": 200
}
```

| Cost Breakdown        | Calculation           |
| --------------------- | --------------------- |
| 1 search query        | $0.05                 |
| 100 additional videos | $0.0005 × 100 = $0.05 |
| **Total**             | **$0.10**             |

**Use case:** Discover playlists in your niche for **lead generation** and partnership opportunities.

***

#### Strategy 4: Large Playlist Extraction (Music/Content Series)

**Best for:** Music playlist tracking, podcast-to-video tracking, sports highlight archiving

```json
{
  "startUrls": ["https://www.youtube.com/playlist?list=LARGE_PLAYLIST"],
  "maxItems": 1000
}
```

| Cost Breakdown        | Calculation           |
| --------------------- | --------------------- |
| 1 playlist query      | $0.05                 |
| 900 additional videos | $0.0005 × 900 = $0.45 |
| **Total**             | **$0.50**             |

**Use case:** Extract large music playlists for **music playlist tracking** and record label monitoring.

***

#### Strategy Comparison Table

| Strategy             | Best For            | Cost per Run | Free Videos |
| -------------------- | ------------------- | ------------ | ----------- |
| 📚 Single Playlist    | Course research     | $0.05        | ~100        |
| 🔍 Multiple Playlists | Competitor auditing | $0.15-0.25   | ~300        |
| 🎯 Keyword Discovery  | Niche research      | $0.10        | ~100        |
| 🎵 Large Playlist     | Music tracking      | $0.50        | ~100        |

#### Pro Tips for Cost Optimization

##### ✅ Maximize Free Videos

- **Each playlist includes ~100 free videos**—often enough for most playlists
- **Use direct URLs**—more efficient than keyword search for known playlists
- **Batch similar playlists**—extract multiple in one run

##### ✅ Control Spending

- **Set `maxItems`**—limit total videos to control costs
- **Start with smaller playlists**—test with 100-200 videos first
- **Use keyword search wisely**—narrow to specific niches

### 📦 Output Format

Clean, structured JSON output with comprehensive YouTube playlist video data. Each video object contains video ID, title, position in playlist, view counts, channel information, and metadata—everything you need to **extract YouTube playlist videos** at scale.

#### Minimal Example (Core Fields)

```json
{
  "id": "lL2ZwXj1tXM",
  "title": "Three Days Grace - Never Too Late",
  "url": "https://www.youtube.com/watch?v=lL2ZwXj1tXM",
  "description": "Three Days Grace's official music video...",
  "duration": 211,
  "views": 272272914,
  "likes": 272272914,
  "status": "OK",
  "channel": {
    "id": "UCK-VRwguZP3cokOAxI0F1HA",
    "name": "ThreeDaysGraceVEVO",
    "url": "https://www.youtube.com/channel/UCK-VRwguZP3cokOAxI0F1HA"
  },
  "keywords": ["three days grace", "rock", "music", "official video"],
  "isLive": false,
  "isPrivate": false,
  "thumbnails": [
    {
      "url": "https://i.ytimg.com/vi/lL2ZwXj1tXM/hqdefault.jpg",
      "width": 480,
      "height": 360
    }
  ]
}
```

#### Field Availability Guarantees

Understanding which fields are always present vs. conditionally available helps you build reliable integrations when you **scrape YouTube playlist** data.

| Field          | Availability | Data Type | Notes                           |
| -------------- | ------------ | --------- | ------------------------------- |
| `id`           | ✅ Always     | string    | Unique video ID                 |
| `title`        | ✅ Always     | string    | Video title                     |
| `url`          | ✅ Always     | string    | Full video URL                  |
| `views`        | ✅ Always     | number    | Total view count                |
| `likes`        | ✅ Always     | number    | Total like count                |
| `duration`     | ✅ Always     | number    | Video duration in seconds       |
| `channel.id`   | ✅ Always     | string    | Channel ID                      |
| `channel.name` | ✅ Always     | string    | Channel display name            |
| `thumbnails`   | ✅ Always     | array     | Thumbnail URLs (multiple sizes) |
| `description`  | ⚠️ Sometimes  | string    | Video description               |
| `keywords`     | ⚠️ Sometimes  | array     | Video tags and keywords         |
| `isLive`       | ✅ Always     | boolean   | Livestream indicator            |

#### Export Options

- **JSON:** Complete datasets with nested objects—ideal for content analysis and research
- **CSV:** Direct download from Apify Console—perfect for spreadsheets and databases
- **API:** RESTful endpoints for Python, Node.js, or any HTTP client

### 🧩 Custom Map Function

Transform output using the `customMapFunction` parameter. This JavaScript function receives each video object and returns your desired format—flatten nested data, extract specific fields, or restructure for your pipeline.

**Important:** Custom map function is for data transformation—**not for filtering**. Filtering items may result in automatic restrictions. Returning an empty object does not remove the item from the dataset—it is saved as `{ "noResults": true }` instead.

#### Example: Simplified Output for Content Analysis

```javascript
(object) => ({
  videoId: object.id,
  title: object.title,
  views: object.views,
  likes: object.likes,
  channelName: object.channel?.name || null,
  channelId: object.channel?.id || null,
  duration: object.duration,
  keywords: object.keywords?.join(', ') || null
})
```

#### Common Transformations

| Use Case                   | What to Add                                 |
| -------------------------- | ------------------------------------------- |
| **Course Research**        | `title`, `duration`, `description`          |
| **Content Auditing**       | `title`, `views`, `likes`, `keywords`       |
| **Channel Research**       | `channel.id`, `channel.name`, `channel.url` |
| **Learning Path Analysis** | `title`, `duration`, position data          |

#### Requirements & Error Handling

The value must be a **single JavaScript function** that takes one item and returns the transformed item. Arrow functions and regular functions both work; `async` and generator functions are not supported.

**Limits:** the function runs in an isolated sandbox. It must be synchronous and finish within about 1 second per item, and only plain JavaScript is available (no network requests, `require` or `console`). Each item is passed in as plain JSON data.

**An unusable function never stops your run.** The actor logs a warning, ignores the function, and saves the original, unmodified items instead—so you still get your data:

| Situation | What happens |
| --------- | ------------ |
| Not valid JavaScript (for example, plain text pasted into the field) | Rejected before the first request; original items are saved |
| Valid JavaScript but not a function (for example, an object) | Rejected before the first request; original items are saved |
| `async` or generator function | Rejected before the first request; original items are saved |
| Returns a Promise (for example, `(object) => Promise.resolve(object)`) | Rejected at that point; the remaining items are saved unmodified |
| Returns something other than an object (for example, a number or `null`) | Rejected at that point; the remaining items are saved unmodified |
| Throws while transforming an item | Rejected at that point; the remaining items are saved unmodified |
| Takes longer than about 1 second on one item (for example, an endless loop) | Rejected at that point; the remaining items are saved unmodified |

If your output does not look transformed, check the run log for a warning that starts with `Your "customMapFunction" input was rejected:`—it explains exactly what was wrong.

If you do not need to transform the output, simply leave this field empty.

### 🔌 Send Results to Notion, Todoist and More (MCP Connectors)

Skip the manual exports — the YouTube Playlist Scraper can deliver its results directly into the tools you already work in, through [Apify MCP Connectors](https://apify.com/store/collections/mcp-connectors).

1. Authorize a connector (Notion, Todoist, or any service whose MCP server offers non-destructive write tools) once in [Console → Settings → API & Integrations → MCP connectors](https://console.apify.com/settings/integrations).
2. Pick it from the **Send results to Notion, Todoist, …** dropdown.
3. Fill in where and how to write:
   - **Destination target** — paste the URL or ID (Notion example: `https://www.notion.so/My-Posts-24f8a1b2c3d44e5f8a9b0c1d2e3f4a5b`); share it with your connector first via Notion's **•••  → Connections** menu. For structured columns use a **page** URL (the Actor builds the database for you) or a database that **already has columns** — an empty database only receives titles. (Some services need no target.)
   - **Write mode** — `perPost` writes one record per video; `summary` writes a single roll-up for the run.
   - **Max records to deliver** *(optional)* — cap on how many records `perPost` delivers.

**Notion, structured like a spreadsheet:** for a table of typed columns, point the target at a Notion **page** — the Actor auto-creates a database from the data, one matching, correctly-typed column per field (URL, number, date, text). Pointing at an **existing database** fills the columns it already has (matched by name); an **empty database** receives only the title, and the rest of each record goes to the row body — the connector can't add columns to an existing database without destructive access it never requests. Nested fields are flattened into columns too — a `channel` object becomes `channel.id`, `channel.name`, … and a list like `keywords` becomes a comma-joined column — so everything is sortable and filterable in the grid. Fields that don't fit a column go to the row's page body, so nothing is lost.

Your credentials stay yours: the Actor talks to your services exclusively through your own authorized connector and only ever uses non-destructive write tools — it cannot delete or overwrite anything you already have. Delivery is best-effort and runs after the scrape: if a connector is misconfigured or a delivery fails, your run still finishes normally with all results intact — the failure is reported in the run log, never by failing the run. If the run is about to hit its timeout, delivery stops early so the run still succeeds, and the log tells you how many records were delivered.

### 🌴 Related Scrapers & Data Extraction Tools

Expand your **YouTube data extraction** capabilities with our complete suite of specialized scraper APIs. Each tool focuses on specific data types for comprehensive video intelligence.

#### 📦 Complete Apidojo YouTube Scraper Ecosystem

| Tool                                                                                                     | What It Extracts                        | Best For                               |
| -------------------------------------------------------------------------------------------------------- | --------------------------------------- | -------------------------------------- |
| 📝 **YouTube Playlist Scraper**                                                                           | Playlist videos, positions, metadata    | Course research **(You are here)**     |
| 📺 **[YouTube Scraper](https://apify.com/apidojo/youtube-scraper?fpr=yhdrb)**                             | Videos, shorts, search results          | Content analysis, video discovery      |
| 💬 **[YouTube Comments Scraper](https://apify.com/apidojo/youtube-comments-scraper?fpr=yhdrb)**           | Comments, replies, engagement data      | Sentiment analysis, audience research  |
| 🏯 **[YouTube Channel Scraper](https://apify.com/apidojo/youtube-channel-information-scraper?fpr=yhdrb)** | Channel profiles, subscribers, metadata | Creator discovery, influencer research |
| 🔥 **[YouTube Trending Scraper](https://apify.com/apidojo/youtube-trending-scraper?fpr=yhdrb)**           | Trending videos, viral content          | Trend spotting, viral detection        |

***

#### 🎯 Choose the Right Extractor for Your Use Case

##### 📝 Need Playlist & Content Series Data?

→ **YouTube Playlist Scraper (You are here)**\
Extract all videos from playlists with positions, durations, and metadata

##### 📺 Need Video & Search Data?

→ **[YouTube Scraper](https://apify.com/apidojo/youtube-scraper?fpr=yhdrb)**\
Extract videos, shorts, playlists, view counts, and search results

##### 💬 Need Comment & Engagement Data?

→ **[YouTube Comments Scraper](https://apify.com/apidojo/youtube-comments-scraper?fpr=yhdrb)**\
Extract comments, replies, sentiment data, and user interactions

##### 🏯 Need Channel & Creator Data?

→ **[YouTube Channel Scraper](https://apify.com/apidojo/youtube-channel-information-scraper?fpr=yhdrb)**\
Extract channel IDs, subscriber counts, descriptions, and profile metadata

#### 🌐 Cross-Platform Social Media Scrapers

| Platform    | Tool                                                                                 | What It Extracts                     |
| ----------- | ------------------------------------------------------------------------------------ | ------------------------------------ |
| 📸 Instagram | **[Instagram Scraper](https://apify.com/apidojo/instagram-scraper?fpr=yhdrb)**       | Posts, reels, profiles, hashtags     |
| 🎵 TikTok    | **[TikTok Scraper](https://apify.com/apidojo/tiktok-scraper?fpr=yhdrb)**             | Videos, profiles, engagement metrics |
| 🐦 Twitter   | **[Twitter Scraper Lite](https://apify.com/apidojo/twitter-scraper-lite?fpr=yhdrb)** | Tweets, profiles, followers          |

### 🆓 Demo Mode & Free Testing

If you run on Apify's Free plan, you can still use this **YouTube playlist scraper** in Demo Mode. **Free users can run the actor up to 5 times per month**, with each run capped at a maximum of 10 items — just enough to test it out. For unrestricted usage and to unlock the full power of this **YouTube playlist scraper API** at scale, subscribe to a paid Apify plan at [apify.com/pricing](https://apify.com/pricing?fpr=yhdrb).

**Free Plan Benefits:**

- ✅ Test with up to 5 runs per month, each capped at 10 video extractions
- ✅ Each playlist query includes ~100 FREE videos
- ✅ Perfect for testing workflows before scaling
- ✅ Validate output format and data quality risk-free

**Upgrade for Full Access:**

- 🚀 Unlimited playlist video extraction from YouTube
- 🚀 13 videos per second processing speed
- 🚀 API access for automated workflows and integrations
- 🚀 Scheduled runs for playlist monitoring

For unrestricted usage, [subscribe to a paid Apify plan](https://apify.com/pricing?fpr=yhdrb).

### 🔧 Troubleshooting Common Issues

Having trouble with your extraction? Here are solutions to common issues when you **scrape YouTube playlist** data, manage costs, and optimize performance with this playlist extractor.

***

#### ❓ Getting Fewer Videos Than Expected?

**Problem:** Extraction returns fewer videos than anticipated

**Solutions:**

✅ **Check `maxItems` setting**—increase the limit if you need more videos\
✅ **Verify playlist is public**—private playlists cannot be scraped\
✅ **Check for deleted videos**—some videos may be unavailable\
✅ **Remember free tiers**—Free users are limited to **5 runs per month**, each capped at **10 items**

***

#### 💰 Unexpected Costs?

**Problem:** Your run cost more than anticipated

**Key pricing differences to remember:**

| Scenario                     | Cost Calculation    | What You Pay     |
| ---------------------------- | ------------------- | ---------------- |
| 1 playlist, 100 videos       | 1 query             | $0.05 (all free) |
| 1 playlist, 200 videos       | 1 query + 100 items | $0.10            |
| 3 playlists, 100 videos each | 3 queries           | $0.15            |

**Cost control tips:**

✅ **Each playlist creates a separate query**—3 playlists = 3 separate charges\
✅ **Use `maxItems` to cap spending**—set hard limits on total extraction\
✅ **100 videos often sufficient**—most playlists fit within free tier

***

#### ❓ No Results Returned?

**Problem:** Extraction completes but returns empty dataset

**Solutions:**

✅ **Verify playlist URL format**—must be valid YouTube playlist URL\
✅ **Check playlist visibility**—must be public or unlisted\
✅ **Don't use `customMapFunction` for filtering**—this can cause automatic blocks\
✅ **Confirm playlist has videos**—empty playlists return no results

***

#### ❓ Missing Data Fields?

**Problem:** Some expected fields are missing from output

**Solutions:**

✅ **Open Storage tab**—full datasets available in Apify Console\
✅ **Check video availability**—deleted videos have limited data\
✅ **Verify field availability**—`keywords` and `description` may be empty

### 🎯 Use Cases & Industries

This **YouTube playlist scraper** serves professionals who need fast, structured content series insights—from course research to competitor auditing and video curation. Use it to **download YouTube playlist data** for any business intelligence need.

***

#### 📚 Course & Curriculum Research

Analyze educational playlists for learning path analysis and curriculum development.

- Extract all videos from educational playlists for **course research**
- Analyze **learning path analysis** and video sequencing
- Research **e-learning research** patterns and content structure
- Build curriculum databases from educational content

**Example:** Extract all videos from a Python tutorial playlist for **curriculum research** and course planning.

***

#### 🔍 Competitor Content Auditing

Analyze competitor playlists for content gap analysis and series strategy.

- Monitor **competitor content auditing** across multiple playlists
- Identify **content gap analysis** opportunities
- Track competitor video series and content strategies
- Research successful playlist structures

**Example:** Compare 5 competitor playlists for **content gap analysis** and series strategy.

***

#### 🎵 Music & Entertainment Tracking

Monitor music playlists and entertainment content series.

- Track **music playlist tracking** for record label monitoring
- Monitor **podcast-to-video tracking** for content series
- Archive **sports highlight archiving** playlists
- Research **news channel episode tracking**

**Example:** Extract large music playlists for **record label monitoring** and chart analysis.

***

#### 🎓 E-Learning & Educational Research

Build datasets for academic research and educational content analysis.

- Collect **dataset building for ML / NLP training**
- Research **academic research, media studies** patterns
- Analyze **learning path analysis** and video sequencing
- Build educational content databases

**Example:** Extract educational playlists for **academic research** and media studies.

***

#### 🎯 Lead Generation & Niche Discovery

Discover channels and creators curating content in your niche.

- Identify **lead generation** opportunities from playlist curators
- Research **influencer content mapping** and creator networks
- Discover channels that curate your niche content
- Build partnership and outreach lists

**Example:** Search for playlists in your niche for **lead generation** and partnership opportunities.

### 💡 Quick Start Guide

Simple setup—whether extracting videos from a single playlist or building a database of content series. This **YouTube playlist scraper API** makes it easy to **extract YouTube playlist videos** in minutes.

#### Copy-Paste Examples by Persona

**For Analysts (Playlist → CSV):**

```json
{
  "startUrls": ["https://www.youtube.com/playlist?list=PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf"],
  "maxItems": 100
}
```

→ Run, then export to CSV from Storage tab.

**For Developers (API → JSON):**

```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("apidojo/youtube-playlist-scraper").call(run_input={
    "startUrls": ["https://www.youtube.com/playlist?list=PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf"],
    "maxItems": 100
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
```

**For Educators (Course Research):**

```json
{
  "startUrls": ["https://www.youtube.com/playlist?list=COURSE_PLAYLIST"],
  "maxItems": 500
}
```

#### 3 Steps to Get Started

1. **Add playlist URL:** Paste YouTube playlist URL
2. **Configure:** Set `maxItems` limit
3. **Run & Export:** Click Start, then download JSON/CSV from Storage tab

***

#### 📋 Method 1: Scrape by Playlist URL

**Best for:** Single playlist extraction, course research

```json
{
  "startUrls": ["https://www.youtube.com/playlist?list=PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf"],
  "maxItems": 200
}
```

***

#### 📋 Method 2: Scrape Multiple Playlists

**Best for:** Competitor auditing, content comparison

```json
{
  "startUrls": [
    "https://www.youtube.com/playlist?list=PLAYLIST_1",
    "https://www.youtube.com/playlist?list=PLAYLIST_2",
    "https://www.youtube.com/playlist?list=PLAYLIST_3"
  ],
  "maxItems": 500
}
```

***

#### 🔧 Best Practices for YouTube Playlist Scraping

##### ✅ DO:

- **Use direct playlist URLs**—more efficient than keyword search
- **Start with 100 videos**—often sufficient for most playlists
- **Batch similar playlists**—extract multiple in one run
- **Set `maxItems`**—control costs by limiting total extraction

##### ❌ DON'T:

- **Use customMapFunction for filtering**—this causes automatic blocking
- **Scrape private playlists**—only public/unlisted playlists work
- **Ignore video positions**—playlist order is valuable data

### ❓ Frequently Asked Questions

#### What is a YouTube Playlist Scraper API?

A **YouTube playlist scraper API** is a tool that programmatically extracts playlist video data—video titles, positions, view counts, channel information, and metadata. This **YouTube playlist data extractor** serves as an alternative to the YouTube Data API v3 (playlistItems resource) without quota limits or API key requirements.

#### How much does it cost to scrape a YouTube playlist?

**$0.05 per playlist** with ~100 free videos included. Additional videos cost $0.0005 each. A 500-video playlist costs approximately **$0.25**.

#### Can I scrape YouTube playlists without login?

Yes! This **YouTube playlist scraper** requires **no authentication** or login. Start extracting playlist data immediately without any YouTube account or API key.

#### What YouTube playlist data can I extract?

Extract **video IDs**, **video titles**, **video positions**, **view counts**, **like counts**, **channel names**, **channel IDs**, **video descriptions**, **keywords**, **thumbnails**, **duration**, and **publish dates**—all in structured JSON or CSV format.

#### Can I export scraped YouTube playlist data to CSV?

Yes. **Download YouTube playlist data** directly from Apify Console in JSON, CSV, or Excel format. Perfect for spreadsheet analysis and content research.

#### Can I use Python to scrape YouTube playlists?

Yes! Full Python support via the Apify Client library. See the [copy-paste examples](#copy-paste-examples-by-persona) above for **YouTube playlist scraper Python** integration.

#### Is this faster than the YouTube Data API?

Yes. 13 videos/second without quota limits. The official YouTube Data API v3 has strict rate limits and requires complex OAuth setup.

#### Can I scrape multiple playlists at once?

Yes. Add multiple URLs to `startUrls` for **bulk YouTube playlist extraction**. Each playlist is processed efficiently with ~100 free videos per query.

#### Can I preserve video order/position in playlist?

Yes. Video position/order is preserved in the output, making this tool ideal for **learning path analysis** and course research.

#### Can I scrape unlisted playlists?

Yes. Both public and unlisted playlists can be scraped. Private playlists require authentication and are not supported.

#### Can I use this for course research?

Yes. Perfect for **course & curriculum research**, **learning path analysis**, and **e-learning research**. Extract educational playlists with video positions preserved.

#### Can I track music playlists?

Yes. Use this tool for **music playlist tracking**, **record label monitoring**, and entertainment content analysis.

#### Can I use this for competitor content auditing?

Yes. Perfect for **competitor content auditing**, **content gap analysis**, and researching competitor video series strategies.

#### Is this a real-time YouTube playlist API?

Yes. Extract current YouTube playlist data in real-time with 13 videos/second processing speed. Data reflects the latest publicly available information.

### 📞 Contact

If you need any sort of support, please send an email to **apidojo10@gmail.com**. You name it, we get it.

***

**Ready to start extracting YouTube playlist data?** With transparent event-based pricing, position tracking, and support for any public playlist, this **YouTube Playlist Scraper API** is the perfect tool for course research, content auditing, and video curation. Start scraping today! 🏯

# Actor input Schema

## `startUrls` (type: `array`):

Paste the Youtube URLs, and get the results immediately. Playlist  URLs are supported.

## `keywords` (type: `array`):

Search keywords you want to search on YouTube.

## `gl` (type: `string`):

Location for the search results, which is passed to YouTube as the gl URL query parameter. (US, AF, AL, etc...)

## `hl` (type: `string`):

Language for the search results, which is passed to YouTube as the hl URL query parameter. (af, tr, de, etc...)

## `sort` (type: `string`):

Sorts search results by the given option. Only works with search keywords.

## `maxItems` (type: `integer`):

Maximum number of items that you want as output.

## `customMapFunction` (type: `string`):

JavaScript function to transform each output video. Use to add computed fields, modify values, or remove unnecessary data. NOT intended for filtering - filtering may result in automatic bans. Must be a single synchronous function, e.g. (object) => { return {...object} }. It runs in a sandbox with plain JavaScript only (no network or require) and about 1 second per item. Leave empty if you do not need to transform the output - an unusable function is ignored and the original items are saved instead.

## `outputConnector` (type: `string`):

Pick an MCP connector you authorized in Console → Settings → API & Integrations → MCP connectors (e.g. Notion, Todoist — any service whose MCP server offers non-destructive write tools works best-effort). The scraped results are written through your own connector — the Actor never sees your third-party credentials. Only non-destructive write tools are used; it can never delete or overwrite your existing data.

## `deliverTarget` (type: `string`):

Where to write into the connector — paste the URL or ID. Notion example: https://www.notion.so/My-Posts-24f8a1b2c3d44e5f8a9b0c1d2e3f4a5b. Leave empty for services that need no target (e.g. Todoist Inbox, Slack). For Notion, share the page or database with your connector first (Notion's ••• → Connections menu), and point at a PAGE for structured columns (the Actor builds the database for you) — an empty database receives only the title (the rest of each record goes to the row's body).

## `deliverMode` (type: `string`):

perPost writes one record per scraped item; summary writes a single roll-up for the run.

## `deliverMaxItems` (type: `integer`):

Cap on how many records perPost mode writes to the connector; ignored in summary mode. Leave empty to deliver everything scraped.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.youtube.com/watch?v=kXYiU_JCYtU&list=PL6Lt9p1lIRZ311J9ZHuzkR5A3xesae2pk"
  ],
  "gl": "us",
  "hl": "en",
  "sort": "r",
  "maxItems": 1000,
  "customMapFunction": "(object) => { return {...object} }",
  "deliverMode": "perPost"
}
```

# Actor output Schema

## `overview` (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 = {
    "startUrls": [
        "https://www.youtube.com/watch?v=kXYiU_JCYtU&list=PL6Lt9p1lIRZ311J9ZHuzkR5A3xesae2pk"
    ],
    "sort": "r",
    "maxItems": 1000,
    "customMapFunction": (object) => { return {...object} }
};

// Run the Actor and wait for it to finish
const run = await client.actor("apidojo/youtube-playlist-scraper").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 = {
    "startUrls": ["https://www.youtube.com/watch?v=kXYiU_JCYtU&list=PL6Lt9p1lIRZ311J9ZHuzkR5A3xesae2pk"],
    "sort": "r",
    "maxItems": 1000,
    "customMapFunction": "(object) => { return {...object} }",
}

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

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://www.youtube.com/watch?v=kXYiU_JCYtU&list=PL6Lt9p1lIRZ311J9ZHuzkR5A3xesae2pk"
  ],
  "sort": "r",
  "maxItems": 1000,
  "customMapFunction": "(object) => { return {...object} }"
}' |
apify call apidojo/youtube-playlist-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,apidojo/youtube-playlist-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/10GVbdIrueLyN5eZY/builds/9xNCugkXDlqQ0kPaS/openapi.json
