# Scraping Youtube Playlist

> Extracts all videos from a YouTube playlist using apidojo's YouTube Playlist Scraper on Apify. Triggers when the user asks to: get all videos from a YouTube playlist, scrape a YouTube playlist for video data, export playlist video metadata, fetch video stats from a YouTube playlist URL, collect all videos in a YouTube channel playlist, download YouTube playlist contents, or analyze a curated list of YouTube videos. Returns video title, URL, view count, like count, duration, channel info, and description per video. Ideal for content curators, educators, and YouTube channel analysts.

- Skill: `apidojo-io/scraping-youtube-playlist` (Agent Skill)
- Install (CLI): `npx skillmds@latest add apidojo-io/scraping-youtube-playlist`
- Raw SKILL.md: https://api.skillmd.com/api/skills/apidojo-io/scraping-youtube-playlist/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: Apache-2.0
- Author: apidojo-io (https://skillmd.com/u/apidojo-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/apidojo-io/scraping-youtube-playlist

---


# Scraping Youtube Playlist

Raw data collection. No assumed use case — returns the full dataset for downstream analysis.

---

## Inputs

| Parameter | Type | Required | Default | Notes |
|-----------|------|----------|---------|-------|
| `startUrls` | array | Optional | `[]` | YouTube playlist URLs |
| `keywords` | array | Optional | `[]` | Search keywords to find playlists |
| `gl` | string | Optional | `us` | Country code (e.g. `US`) |
| `hl` | string | Optional | `en` | Language code (e.g. `en`) |
| `sort` | string | Optional | `r` | Sort order |
| `maxItems` | number | Optional | Unlimited | Maximum videos to return |
| `customMapFunction` | string | Optional | — | JavaScript function to transform each output object |

## How to Run

### Using run_actor.js (recommended)

```bash
# Quick answer (table)
node scripts/run_actor.js --actor "apidojo~youtube-playlist-scraper" --input '{"startUrls": ["https://www.youtube.com/playlist?list=PLABCDE12345"], "maxItems": 50}'

# Save as CSV
node scripts/run_actor.js --actor "apidojo~youtube-playlist-scraper" --input '{"startUrls": ["https://www.youtube.com/playlist?list=PLABCDE12345"], "maxItems": 50}' --output results.csv --format csv

# Save as JSON
node scripts/run_actor.js --actor "apidojo~youtube-playlist-scraper" --input '{"startUrls": ["https://www.youtube.com/playlist?list=PLABCDE12345"], "maxItems": 50}' --output results.json --format json
```

### REST API fallback

```bash
curl -X POST "https://api.apify.com/v2/acts/apidojo~youtube-playlist-scraper/runs" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startUrls": ["https://www.youtube.com/playlist?list=PLABCDE12345"], "maxItems": 50}'
```

If Apify MCP is available:
Use the Apify MCP `call_actor` tool with actor `apidojo~youtube-playlist-scraper` and the input above.

---

## Output Fields

| Field | Type | Description |
|-------|------|-------------|
| `type` | string | Always `video` |
| `id` | string | Video ID |
| `title` | string | Video title |
| `url` | string | Video URL |
| `description` | string | Video description |
| `duration` | number | Duration in seconds |
| `views` | number | View count |
| `likes` | number | Like count |
| `status` | string | Availability status |
| `channel.id` | string | Channel ID |
| `channel.name` | string | Channel name |
| `channel.url` | string | Channel URL |
| `keywords` | array | Video tags/keywords |
| `isLive` | boolean | Live stream flag |
| `isPrivate` | boolean | Private flag |
| `thumbnails` | array | Thumbnail objects |

## Edge Cases

- **Private playlist**: Returns 0 results. Tell user the playlist is private.
- **Deleted playlist**: Returns error or empty. Check URL.
- **Very large playlist**: Use maxItems to cap results and avoid long run times.
- **Mix playlist (YouTube auto-generated)**: May behave differently than user-created playlists.

