scraping-youtube-playlist — Claude Code skill: playlist data
Collects video details from a YouTube playlist through an Apify scraper. Use it to export playlist metadata and stats for analysis.
npx skills add apidojo-io/apidojo-skills --skill scraping-youtube-playlist -a claude-codeWhat scraping-youtube-playlist does
The skill runs Apify’s apidojo~youtube-playlist-scraper actor. You can provide playlist URLs or search keywords, along with options for language, country, sorting, and a video limit using maxItems. Results include video titles and URLs, descriptions, durations, view and like counts, and channel details.
The documented runner is scripts/run_actor.js; it can return a table or save results as CSV or JSON. The skill also describes a REST API call and using Apify MCP’s call_actor tool when available. Private playlists return zero results. For a large playlist, set maxItems to cap the collection.
What it helps with
- export video details from a YouTube playlist
- collect view and like counts for playlist videos
- save playlist results as CSV or JSON
- find playlists using search keywords
Example prompts for the agent
- Collect details for every video in this YouTube playlist and save them as CSV.
- Search for playlists using these keywords, then export their video data.
- Get video details from this playlist and cap the results with
maxItems.
How to install scraping-youtube-playlist
1Skills CLI (Vercel)
npx skills add apidojo-io/apidojo-skills --skill scraping-youtube-playlist -a claude-code2Manually: put the files in place
~/.claude/skills/scraping-youtube-playlist/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/scraping-youtube-playlist/
1Skills CLI (Vercel)
npx skills add apidojo-io/apidojo-skills --skill scraping-youtube-playlist -a codex2Manually: put the files in place
.agents/skills/scraping-youtube-playlist/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add apidojo-io/apidojo-skills --skill scraping-youtube-playlist -a cursor2Manually: put the files in place
.cursor/skills/scraping-youtube-playlist/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install apidojo-io/apidojo-skills scraping-youtube-playlist2Manually: put the files in place
.github/skills/scraping-youtube-playlist/SKILL.md1Skills CLI (Vercel)
npx skills add apidojo-io/apidojo-skills --skill scraping-youtube-playlist -a gemini-cli2Platform CLI
gemini skills install https://github.com/apidojo-io/apidojo-skills --path skills/primitives/scraping-youtube-playlistManually: put the files in place
.devin/skills/scraping-youtube-playlist/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add apidojo-io/apidojo-skills --skill scraping-youtube-playlist -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about scraping-youtube-playlist
How do I install scraping-youtube-playlist in Claude Code?
Run npx skills add apidojo-io/apidojo-skills --skill scraping-youtube-playlist -a claude-code. The skill file is at ~/.claude/skills/scraping-youtube-playlist/SKILL.md.
What does scraping-youtube-playlist do?
It runs an Apify scraper to collect information about videos in a YouTube playlist, including titles, URLs, view counts, likes, and channel details.
What happens with a private playlist?
The scraper returns zero results. You can set maxItems to limit collection from a large playlist.
Source text
SKILL.md · Apache-2.0
---
name: scraping-youtube-playlist
description: >
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.
license: Apache-2.0
metadata:
author: apidojo
version: "1.0"
apify-actor: apidojo/youtube-playlist-scraper
---
# 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.
© apidojo · Apache-2.0 · apidojo-io/apidojo-skills