YouTube Playlist Scraper with transcript avatar

YouTube Playlist Scraper with transcript

Pricing

from $0.00005 / actor start

Go to Apify Store
YouTube Playlist Scraper with transcript

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

Akash Kumar Naik

Maintained by Community

Actor stats

0

Bookmarked

65

Total users

2

Monthly active users

9 days ago

Last modified

Security

Limited permissions

Share

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

ParameterTypeRequiredDefaultDescription
startUrlsstringYes—URL of a YouTube playlist to scrape (must contain youtube.com/playlist)
maxItemsintegerNo0Maximum 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

FieldDescription
idYouTube video ID
titleVideo title
urlFull YouTube video URL
thumbnailUrlVideo thumbnail URL
viewCountNumber of views
likeCountNumber of likes
dislikeCountNumber of dislikes
likeRatioRatio of likes to total votes
uploadDateUpload date (YYYY-MM-DD)
durationVideo duration in seconds
channelNameChannel name
channelUrlChannel URL
playlistIdPlaylist ID
playlistTitlePlaylist title
transcriptTextTranscript flattened into a single text field
transcriptLanguageLanguage name of the selected transcript
transcriptLanguageCodeLanguage code of the selected transcript
transcriptIsGeneratedWhether the transcript is auto-generated
transcriptIsTranslatableWhether the transcript can be translated
transcriptErrorError returned when transcript extraction fails

How to Use

  1. Create a new task in Apify Console or open the Actor page on Apify Store.
  2. Add one or more YouTube playlist URLs to scrape (must contain youtube.com/playlist).
  3. Set the maximum number of videos to extract (optional; 0 for unlimited).
  4. Run the Actor.
  5. 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 requests
response = 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:

EventPriceWhen it's charged
Video Extracted (video-extracted)$0.01 per videoEach video successfully extracted with core metadata
Transcript Extracted (transcript-extracted)$0.0075 per videoEach video whose transcript is successfully retrieved
Proxy Used (proxy-used)$0.001 per videoEach video processed through the configured residential proxy
Synthetic Actor Start (apify-actor-start)$0.00005Synthetic 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/playlist are 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.

If you need more YouTube data from Apify, check out my other Apify Actors:


Built and maintained by akash9078 on the Apify platform.