YouTube Playlist Scraper with transcript
Pricing
from $0.00005 / actor start
YouTube Playlist Scraper with transcript
Scrape YouTube playlist video metadata and transcripts with pay-per-event billing for videos, transcripts, and proxy usage.
Pricing
from $0.00005 / actor start
Rating
0.0
(0)
Developer
Akash Kumar Naik
Maintained by CommunityActor stats
0
Bookmarked
65
Total users
2
Monthly active users
9 days ago
Last modified
Categories
Security
Limited permissionsShare
YouTube Playlist Scraper with Transcript is an Apify Actor that extracts comprehensive data from YouTube playlists — video URLs, titles, thumbnails, view counts, like/dislike ratios, upload dates, duration, and transcript text for every video.
What Is YouTube Playlist Scraper with Transcript?
This Actor extracts full playlist metadata and automatically attaches the transcript for each video, in English by default, running through the Apify residential proxy by default. It handles rate limiting and pagination automatically and returns structured JSON ready for export to JSON or CSV.
Key Features
- Complete metadata for all videos in YouTube playlists
- Transcript extraction for each video, fetched automatically
- Multiple playlists — add one or more playlist URLs per run
- Rate limiting & pagination handled automatically
- Proxy support & user-agent rotation to minimize blocking risks (residential proxy by default)
- Robust error handling and progress tracking
- Export to JSON/CSV formats
- Pay-per-event pricing with separate events for videos, transcripts, and proxy usage
Supported Content
Any YouTube playlist URL (must contain youtube.com/playlist). Each result combines the full video metadata record with transcript fields (transcriptText, language, auto-generated flag, and error status).
Use Cases
- Data analysis and reporting
- Content research workflows
- Social media monitoring systems
- YouTube channel performance tracking
- AI/RAG pipelines that need both metadata and transcript text per video
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrls | string | Yes | — | URL of a YouTube playlist to scrape (must contain youtube.com/playlist) |
maxItems | integer | No | 0 | Maximum number of videos to extract from all playlists (0 for unlimited) |
Transcripts are fetched automatically in English by default. Residential Apify proxy is used by default in the runtime, so there is no proxy field in the public input form.
Example input:
{"startUrls": "https://youtube.com/playlist?list=PLObrtcm1Kw6Ohp5OC9ymNNBVEgTa2DZuh","maxItems": 0}
Sample Output
{"id": "dQw4w9WgXcQ","title": "Rick Astley - Never Gonna Give You Up (Official Music Video)","url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","thumbnailUrl": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg","viewCount": 1000000000,"likeCount": 10000000,"dislikeCount": 100000,"likeRatio": 0.98,"uploadDate": "2009-10-24","duration": 212,"channelName": "RickAstleyVEVO","channelUrl": "https://www.youtube.com/channel/UCuAXFkgsw1L7xaCfnd5JJOw","playlistId": "PL7u4BG8iCLjkCzP5krcHZ-X5DsUl0xdg9","playlistTitle": "Popular Videos","transcriptText": "We're no strangers to love","transcriptLanguage": "English","transcriptLanguageCode": "en","transcriptIsGenerated": true,"transcriptIsTranslatable": true,"transcriptError": null}
Output Fields
| Field | Description |
|---|---|
id | YouTube video ID |
title | Video title |
url | Full YouTube video URL |
thumbnailUrl | Video thumbnail URL |
viewCount | Number of views |
likeCount | Number of likes |
dislikeCount | Number of dislikes |
likeRatio | Ratio of likes to total votes |
uploadDate | Upload date (YYYY-MM-DD) |
duration | Video duration in seconds |
channelName | Channel name |
channelUrl | Channel URL |
playlistId | Playlist ID |
playlistTitle | Playlist title |
transcriptText | Transcript flattened into a single text field |
transcriptLanguage | Language name of the selected transcript |
transcriptLanguageCode | Language code of the selected transcript |
transcriptIsGenerated | Whether the transcript is auto-generated |
transcriptIsTranslatable | Whether the transcript can be translated |
transcriptError | Error returned when transcript extraction fails |
How to Use
- Create a new task in Apify Console or open the Actor page on Apify Store.
- Add one or more YouTube playlist URLs to scrape (must contain
youtube.com/playlist). - Set the maximum number of videos to extract (optional; 0 for unlimited).
- Run the Actor.
- Download results in JSON or CSV format.
How to Use via API
cURL:
curl -X POST "https://api.apify.com/v2/acts/akash9078/youtube-playlist-scraper-with-transcript/runs" \-H "Authorization: Bearer YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls": "https://youtube.com/playlist?list=PLAYLIST_ID", "maxItems": 0}'
Python:
import requestsresponse = requests.post("https://api.apify.com/v2/acts/akash9078/youtube-playlist-scraper-with-transcript/runs",headers={"Authorization": "Bearer YOUR_APIFY_TOKEN"},json={"startUrls": "https://youtube.com/playlist?list=PLAYLIST_ID", "maxItems": 0},)print(response.json())
Node.js with Apify Client:
const { ApifyClient } = require('apify-client');const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('akash9078/youtube-playlist-scraper-with-transcript').call({startUrls: 'https://youtube.com/playlist?list=PLAYLIST_ID',maxItems: 0,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Pricing
The Actor uses pay-per-event billing with separate events for the main cost drivers:
| Event | Price | When it's charged |
|---|---|---|
Video Extracted (video-extracted) | $0.01 per video | Each video successfully extracted with core metadata |
Transcript Extracted (transcript-extracted) | $0.0075 per video | Each video whose transcript is successfully retrieved |
Proxy Used (proxy-used) | $0.001 per video | Each video processed through the configured residential proxy |
Synthetic Actor Start (apify-actor-start) | $0.00005 | Synthetic event automatically charged by Apify for initialization |
This split pricing keeps transcript and proxy costs visible as separate billable events.
Limitations
- Only playlist URLs containing
youtube.com/playlistare accepted - Transcripts are fetched in English by default; other languages depend on caption availability
- Transcripts require the video to have captions (manual or auto-generated)
- Intended use complies with YouTube's terms of service
FAQ
Can I scrape multiple playlists in one run?
Yes — add one or more playlist URLs, and maxItems applies across all playlists combined.
Do I need to configure a proxy?
No. The Actor uses the Apify residential proxy by default in the runtime, and the proxy-used event makes that cost visible separately.
What happens if a transcript can't be extracted?
The video result is still saved with its metadata, and transcriptError explains what went wrong — no transcript-extracted charge for that video.
Is there a version without transcripts?
Yes — YouTube Playlist Scraper extracts the same playlist metadata without transcripts.
Related Actors
If you need more YouTube data from Apify, check out my other Apify Actors:
- YouTube Transcript Scraper — extract transcripts from any YouTube video
- YouTube Transcript Extractor — transcripts with timestamps in 100+ languages
- YouTube Full Channel Transcripts Extractor — transcripts for entire channels
- YouTube Channel Video Scraper — video metadata for entire channels
- YouTube Playlist Scraper — full metadata for every video in a playlist
- YouTube Search Scraper — search YouTube via the official Data API
- YouTube Trending Scraper — trending videos by region and category
Built and maintained by akash9078 on the Apify platform.