Extract complete YouTube playlist data with all video details - fast, reliable, and built for scale.
Get comprehensive video lists, metadata, durations, thumbnails, channel information, playlist descriptions, and update history from any public YouTube playlist. Perfect for content creators, researchers, marketers, and developers who need structured playlist data without API limitations.
- Paste your YouTube playlist URL
- Click "Start"
- Download results in JSON, CSV, or Excel
That's it! No API keys required, no complex setup, no coding needed.
{
"playlistUrls": [
{ "url": "https://www.youtube.com/playlist?list=YOUR_PLAYLIST_ID" }
]
}- Full Video Lists with position numbers, titles, and URLs
- Playlist Metadata including title, description, total video count, and total duration
- Playlist History with last updated date and view count
- Owner/Creator Info with channel name, ID, and URL
- Video Details with high-quality thumbnails (multiple resolutions)
- Channel Information with names, IDs, and URLs for each video
- Smart URL Handling - Works with any YouTube playlist URL format
- Lightning Fast - Process 100+ video playlists in seconds
- Unlimited Videos - Automatic pagination extracts ALL videos (no 100-video limit!)
- Smart Metadata Caching - Playlist descriptions and metadata cached (extracted once, reused forever)
- Accurate Video Limiting -
maxVideosPerPlaylistworks correctly during data output - Batch Processing - Handle multiple playlists simultaneously
- Error Recovery - Automatic retry logic for failed requests
- Clean JSON Output - Structured data ready for any pipeline
- Multiple Export Formats - JSON, CSV, Excel, or direct API access
- Flexible Configuration - Control detail levels and processing options
- RESTful API Access - Integrate directly into your applications
- Well-Documented - Comprehensive examples and clear documentation
| Feature | This Actor | YouTube Data API |
|---|---|---|
| API Quotas | β Unlimited | β 10,000 units/day |
| Video Limit | β Unlimited (pagination) | β 50 per request |
| Authentication | β Not required | β OAuth required |
| Setup Time | β Instant | β Complex setup |
| Batch Processing | β Multiple playlists | β One at a time |
| Playlist Description | β Full text | |
| Last Updated | β Included | β Not available |
| Export Formats | β JSON, CSV, Excel | β JSON only |
| Thumbnail URLs | β All resolutions | |
| Total Duration | β Auto-calculated | β Manual calculation |
| Cost | β $0.001 per video |
{
"playlistUrls": [
{ "url": "https://www.youtube.com/playlist?list=PLD8nQCAhR3tT3ehpyOpoYeUj3KHDEVK9h" }
]
}{
"playlistUrls": [
{ "url": "https://www.youtube.com/playlist?list=PLAYLIST_ID_1" },
{ "url": "https://www.youtube.com/watch?v=VIDEO_ID&list=PLAYLIST_ID_2&index=5" },
{ "url": "https://www.youtube.com/playlist?list=PLAYLIST_ID_3" }
],
"includeVideoDetails": true,
"maxVideosPerPlaylist": 100
}| Parameter | Type | Default | Description |
|---|---|---|---|
playlistUrls |
array |
Required | List of YouTube playlist URLs to extract |
includeVideoDetails |
boolean |
true |
Include detailed video info (thumbnails, channels, etc.) |
maxVideosPerPlaylist |
integer |
null |
Limit videos per playlist (useful for testing). Leave empty for unlimited |
This actor works with any YouTube URL containing a playlist:
- β
https://www.youtube.com/playlist?list=PLAYLIST_ID - β
https://www.youtube.com/watch?v=VIDEO_ID&list=PLAYLIST_ID - β
https://www.youtube.com/watch?v=VIDEO_ID&list=PLAYLIST_ID&index=10 - β
https://youtube.com/playlist?list=PLAYLIST_ID
Each video becomes a separate dataset item with complete playlist info attached. Perfect for CSV exports and database imports!
{
"position": 1,
"videoId": "lNtw4yxEydM",
"videoUrl": "https://www.youtube.com/watch?v=lNtw4yxEydM",
"title": "Advanced WordPress Theme Development | Introduction",
"duration": "5:25",
"durationLabel": "5 minutes, 25 seconds",
"isPlayable": true,
"thumbnail": {
"url": "https://i.ytimg.com/vi/lNtw4yxEydM/hqdefault.jpg",
"width": 336,
"height": 188,
"allThumbnails": [...]
},
"channel": {
"name": "Imran Sayed - Codeytek Academy",
"id": "UC0SDxbLAqoKLACyEPz2wXAg",
"url": "https://www.youtube.com/@Codeytek"
},
"videoInfo": "1.2M views β’ 3 years ago",
"playlistInfo": {
"playlistId": "PLD8nQCAhR3tT3ehpyOpoYeUj3KHDEVK9h",
"playlistUrl": "https://www.youtube.com/playlist?list=PLD8nQCAhR3tT3ehpyOpoYeUj3KHDEVK9h",
"playlistTitle": "Advanced WordPress Theme Development Course",
"playlistDescription": "Complete course covering advanced WordPress theme development techniques...",
"lastUpdated": "Dec 28, 2023",
"owner": {
"name": "Codeytek Academy",
"id": "UC0SDxbLAqoKLACyEPz2wXAg",
"url": "https://www.youtube.com/@Codeytek"
},
"viewCount": "12,310,699 views",
"videoCount": 118,
"totalVideosInPlaylist": 118,
"totalDuration": "20 hours 42 minutes",
"totalDurationMinutes": 1242
},
"extractedAt": "2025-10-12T12:00:00.000Z"
}position- Video position in the playlist (1, 2, 3...)videoId- Unique 11-character YouTube video identifiervideoUrl- Direct link to the videotitle- Complete video titleduration- Video duration in MM:SS or HH:MM:SS formatdurationLabel- Human-readable duration descriptionisPlayable- Whether the video is currently availablethumbnail- Thumbnail URLs in multiple resolutions (168px to 336px)videoInfo- Views and upload date (e.g., "1.4M views β’ 7 years ago")
channel.name- Channel display namechannel.id- Unique channel identifierchannel.url- Direct link to the channel
playlistInfo.playlistId- Unique playlist identifierplaylistInfo.playlistUrl- Direct link to the playlistplaylistInfo.playlistTitle- Full playlist titleplaylistInfo.playlistDescription- NEW Complete playlist descriptionplaylistInfo.lastUpdated- NEW Last update date (e.g., "Dec 28, 2023")playlistInfo.owner- NEW Playlist creator/channel infoplaylistInfo.viewCount- NEW Total playlist viewsplaylistInfo.videoCount- Number of videos extractedplaylistInfo.totalVideosInPlaylist- Actual total in playlistplaylistInfo.totalDuration- Human-readable total durationplaylistInfo.totalDurationMinutes- Total duration in minutes (for calculations)
extractedAt- ISO 8601 timestamp of when data was extracted
The actor provides three optimized views for different use cases:
Complete dataset with all fields - perfect for comprehensive analysis and archival.
Best for: Data analysis, archiving, complete records
Flattened essential fields only - ideal for quick reference and spreadsheets.
Fields: Position, Title, Video URL, Duration, Channel Name, Playlist Title
Best for: Content planning, quick scanning, sharing with teams
Focus on visual content with thumbnail images displayed.
Best for: Content curation, visual browsing, presentation materials
- Course Planning - Analyze educational playlists for curriculum design
- Content Curation - Build comprehensive learning resource libraries
- Academic Research - Study content organization and video structures
- Duration Estimation - Calculate total learning time for courses
- Historical Tracking - Monitor playlist updates and changes over time
- Competitor Analysis - Study competitor playlist strategies and organization
- Content Gap Analysis - Identify missing topics in your content library
- Series Planning - Plan video series and optimal playlist structures
- SEO Research - Analyze successful playlist titles and descriptions
- Thumbnail Analysis - Study thumbnail patterns for engagement optimization
- Update Monitoring - Track when competitors update their playlists
- Database Building - Create searchable video content databases
- Playlist Monitoring - Track changes in playlists over time
- API Integration - Feed structured data into applications and tools
- Automated Reporting - Generate playlist analytics and insights reports
- Content Aggregation - Build curated video collections from multiple sources
- Market Research - Analyze industry playlists and content trends
- Channel Analysis - Understand how successful creators organize content
- Engagement Patterns - Identify optimal playlist lengths and structures
- Content Strategy - Make data-driven decisions about video organization
- View Analytics - Track total views and popularity metrics
Extract educational playlists with complete metadata:
const ApifyClient = require('apify-client');
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('dz_omar/youtube-playlist-extractor').call({
playlistUrls: [
{ url: 'https://www.youtube.com/playlist?list=COURSE_PLAYLIST_ID' }
]
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
// Each item includes complete playlist metadata
items.forEach(video => {
console.log(`Lesson ${video.position}: ${video.title}`);
console.log(`Duration: ${video.duration}`);
console.log(`Course: ${video.playlistInfo.playlistTitle}`);
console.log(`Description: ${video.playlistInfo.playlistDescription}`);
console.log(`Last Updated: ${video.playlistInfo.lastUpdated}`);
console.log(`Total course length: ${video.playlistInfo.totalDuration}`);
console.log(`Total views: ${video.playlistInfo.viewCount}`);
});Monitor when playlists are updated:
// Group by playlist and check last updated dates
const playlistUpdates = {};
items.forEach(video => {
const playlistId = video.playlistInfo.playlistId;
if (!playlistUpdates[playlistId]) {
playlistUpdates[playlistId] = {
title: video.playlistInfo.playlistTitle,
lastUpdated: video.playlistInfo.lastUpdated,
owner: video.playlistInfo.owner.name,
videoCount: video.playlistInfo.totalVideosInPlaylist,
views: video.playlistInfo.viewCount
};
}
});
// Display update summary
Object.entries(playlistUpdates).forEach(([id, data]) => {
console.log(`\nPlaylist: ${data.title}`);
console.log(`Last Updated: ${data.lastUpdated}`);
console.log(`Owner: ${data.owner}`);
console.log(`Videos: ${data.videoCount}`);
console.log(`Total Views: ${data.views}`);
});Test extraction with a limited number of videos:
const run = await client.actor('dz_omar/youtube-playlist-extractor').call({
playlistUrls: [
{ url: 'https://www.youtube.com/playlist?list=LARGE_PLAYLIST' }
],
maxVideosPerPlaylist: 20 // Only extract first 20 videos
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Extracted ${items.length} sample videos`);
console.log(`Total in playlist: ${items[0].playlistInfo.totalVideosInPlaylist}`);// The actor automatically supports CSV export
// Just download the dataset as CSV from Apify Console
// CSV will include all new fields:
// - playlistInfo.playlistDescription
// - playlistInfo.lastUpdated
// - playlistInfo.owner.name
// - playlistInfo.viewCount
// Perfect for Excel analysis and reporting!Perfect for API integration and programmatic access:
[
{
"position": 1,
"videoId": "abc123",
"title": "Introduction",
"playlistInfo": {
"playlistTitle": "Complete Course",
"playlistDescription": "Learn everything about...",
"lastUpdated": "Dec 28, 2023",
"owner": {
"name": "Creator Name",
"id": "UC...",
"url": "https://youtube.com/@creator"
},
"viewCount": "12,310,699 views",
"videoCount": 50,
"totalVideosInPlaylist": 50
}
}
]Ideal for Excel, Google Sheets, and data analysis:
position,title,videoUrl,duration,channel.name,playlistInfo.playlistTitle,playlistInfo.lastUpdated,playlistInfo.viewCount
1,"Introduction","https://youtube.com/watch?v=abc123","5:25","Creator Name","Complete Course","Dec 28, 2023","12.3M views"
2,"Setup","https://youtube.com/watch?v=def456","8:15","Creator Name","Complete Course","Dec 28, 2023","12.3M views"Organized sheets with proper formatting and data types - perfect for business reporting.
| Playlist Size | Processing Time | Videos/Second |
|---|---|---|
| 10-20 videos | 2-4 seconds | ~5-10 |
| 50-100 videos | 8-15 seconds | ~6-7 |
| 100-200 videos | 15-30 seconds | ~6-7 |
| 200-500 videos | 30-90 seconds | ~5-6 |
| 500+ videos | 2-3 minutes | ~4-5 |
Note: Times include data extraction, pagination, and processing. Network speed may affect results.
- Memory: 128-512 MB depending on playlist size
- Compute: 0.002-0.01 compute units per run (varies by playlist size)
- Storage: Minimal - Results stored in Apify dataset
- Cache: Metadata cached for faster subsequent runs
- Extraction Success Rate: 99.9% for public playlists
- Data Accuracy: 100% (direct from YouTube's official data)
- Metadata Completeness: 100% for available fields
- Pagination Reliability: 100% (all videos extracted)
- Standard processing speed
- Suitable for small to medium batches
- No additional costs
- Reliable and stable performance
- Dedicated infrastructure for accelerated processing
- Optimized for high-volume batch operations
- Faster extraction of large video collections
- Automatic fallback to free mode if needed
Both modes extract identical, high-quality data. Paid mode is ideal when you need faster throughput for large batches.
This actor uses a pay-per-video pricing model:
- Actor Start: $0.001 (one-time per run)
- Video Extracted: $0.001 per video
| Scenario | Videos | Total Cost |
|---|---|---|
| Small playlist | 20 | $0.021 |
| Medium playlist | 100 | $0.101 |
| Large playlist | 314 | $0.315 |
| Large playlist (500 videos) | 500 | $0.501 |
| Educational course | 150 | $0.151 |
| Batch (5 playlists, 250 videos) | 250 | $0.251 |
| Enterprise (20 playlists, 2000 videos) | 2000 | $2.001 |
Subscribers get automatic discounts:
- Bronze: 10% off
- Silver: 20% off
- Gold: 30% off
Causes:
- Playlist is private or deleted
- Invalid playlist URL format
- Temporary YouTube server issue
Solutions:
- β Verify playlist is public
- β
Use full YouTube URL with
list=parameter - β Try again after a few minutes
Fixed in Version 2.0!
- β
maxVideosPerPlaylistnow correctly limits videos during data push - β You get exactly the number you specify
Causes:
- First-time extraction in progress
- Cache not yet populated
Solutions:
- β Metadata is cached after first extraction
- β Subsequent runs will reuse cached metadata
Causes:
- Large playlists (200+ videos)
- Network latency
- Detailed video information extraction
Solutions:
- β
Set
includeVideoDetails: falsefor 40-50% speed boost - β
Use
maxVideosPerPlaylistfor testing - β Metadata caching speeds up subsequent runs
{
"playlistUrls": [{"url": "..."}],
"maxVideosPerPlaylist": 20,
"includeVideoDetails": true
}{
"playlistUrls": [{"url": "..."}],
"includeVideoDetails": true
}{
"playlistUrls": [{"url": "..."}],
"includeVideoDetails": false
}{
"playlistUrls": [{"url": "..."}],
"includeVideoDetails": true
}This actor extracts publicly available playlist and video metadata from YouTube. All data extracted is information that YouTube makes accessible through normal web browsing.
You are responsible for ensuring your use complies with:
- β YouTube's Terms of Service
- β Applicable copyright laws
- β Data protection regulations (GDPR, CCPA, etc.)
- β Your local jurisdiction's laws
- β Only extract public playlists
- β Respect content creators' rights
- β Don't use data for illegal purposes
- β Follow YouTube's Terms of Service
- β Respect rate limits and don't abuse the service
π§ Email: flowextractapi@outlook.com
π Website: flowextractapi.com
π¦ Twitter: @FlowExtractAPI
πΌ LinkedIn: flowextract-api
π Related Actors by FlowExtract API
Build your complete YouTube data pipeline with our specialized actors:
YouTube Playlist Extractor
Extract all videos from playlists in seconds. Get video URLs, titles, durations. Perfect for feeding into this transcript extractor.
β Use together: Playlist β Transcript Extractor = Full channel analysis
YouTube Channel Scraper Pro
Complete channel extraction: videos, shorts, live streams, playlists. Comprehensive creator analytics.
β Use together: Channel Scraper β Transcript Extractor = Creator deep-dive
YouTube Comments Scraper
Standalone comment extraction with advanced filtering. Perfect for sentiment analysis.
β Integrated in this actor - enable with extractcomments: true
Zoom Scraper | Downloader & Transcript
Extract Zoom meeting recordings and transcripts. Perfect for meeting analysis.
Loom Scraper | Downloader & Transcript
Download Loom videos and extract transcripts. Ideal for training content.
Idealista Scraper API
Spanish real estate listings with API access. Property data at scale.
Screenshot | Ultimate Screenshot
Webpage screenshots with custom options. Perfect for monitoring and documentation.
Network Security Scanner
Website security vulnerability scanning. Comprehensive security reports.