Youtube Transcript Scraper by Channel & Playlist
Pricing
$19.99/month + usage
Youtube Transcript Scraper by Channel & Playlist
π¬ YouTube Transcript Scraper by Channel & Playlist pulls clean video transcripts/captions with timestamps, multi-language, and batch export (JSON/CSV). π Ideal for SEO, keyword research, summaries, accessibility, and content repurposing. β‘ Fast, reliable, API-ready.
Pricing
$19.99/month + usage
Rating
0.0
(0)
Developer
ScrapeEngine
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
0
Monthly active users
8 days ago
Last modified
Categories
Share
A YouTube transcript scraper that extracts video transcripts/captions directly from YouTube β and unlike a plain video-URL transcript extractor, it also accepts a channel URL/@handle or a playlist URL and automatically discovers the videos inside it, up to a limit you set, so you can pull transcripts for an entire channel's recent uploads or a whole playlist in one run.
What does this YouTube Transcript Scraper do?
Give it YouTube video links, a channel, and/or a playlist. For each individual video URL you list, it fetches that video's transcript directly. For each channel or playlist URL you list, it first discovers the real videos inside it (with real pagination, not just the first page) and then fetches a transcript for every discovered video, respecting an optional published-after recency filter β handy for channel-monitoring workflows where you only want transcripts for what's new.
Every completed video is pushed to the dataset the moment it finishes, so results start appearing immediately instead of waiting for the whole run to end.
Input
| Field | Type | Description |
|---|---|---|
urls | array of strings | Individual YouTube video URLs (watch, youtu.be, /shorts/, /embed/, /live/). |
channelOrPlaylistUrls | array of strings | Channel URLs/@handles or playlist URLs to auto-expand into videos. |
maxVideos | integer | Max videos discovered per channel/playlist entry (default 5). |
publishedAfter | date (absolute or relative, e.g. "7 days") | Only keep discovered videos published after this date. Individually listed video URLs are never filtered by this. |
includeEnglishAG | boolean | Include English auto-generated captions (default true). |
includeNonEnglish | boolean | Include non-English transcripts (default false). |
outputFormat | "text" | "timestamp" | Plain text vs. timestamped segments (default "text"). |
proxyConfiguration | object | Standard Apify proxy configuration. |
Example input
{"urls": ["https://www.youtube.com/watch?v=4KbrxIpQgkM"],"channelOrPlaylistUrls": ["https://www.youtube.com/@TED"],"maxVideos": 5,"publishedAfter": "30 days","includeEnglishAG": true,"includeNonEnglish": false,"outputFormat": "text"}
Output
Every row is a real, live-verified result β never a fabricated placeholder. Fields:
| Field | Description |
|---|---|
id | The extracted YouTube video ID. |
url | Canonical https://www.youtube.com/watch?v=<id> for the video. |
input | The exact input value that produced this row (the video URL, or the channel/playlist URL it was discovered from). |
transcripts | Array of { language, content }. content is a plain string (outputFormat: "text") or an array of { startMs, endMs, startTime, text } segments (outputFormat: "timestamp"). Empty when no transcript could be retrieved β check status/message for why. |
status | One of ok, no_captions, no_matching_language, blocked, video_unavailable, age_restricted, invalid_id, po_token_required, cookie_error, error. |
message | A short, human-readable reason matching status. |
discoveryType | "video" for a directly listed URL, or "channel"/"playlist" when the row was discovered. |
discoverySource | The channel/playlist input that discovered this video, or null for directly listed URLs. |
scrapedAt | ISO-8601 UTC timestamp of when the row was produced. |
Example output row
{"id": "4KbrxIpQgkM","url": "https://www.youtube.com/watch?v=4KbrxIpQgkM","input": "https://www.youtube.com/watch?v=4KbrxIpQgkM","transcripts": [{ "language": "English", "content": "Hey everyone, welcome back..." }],"status": "ok","message": "Transcript(s) retrieved successfully.","discoveryType": "video","discoverySource": null,"scrapedAt": "2026-08-15T12:00:00.000000+00:00"}
Channel & playlist discovery
Add a channel URL (https://www.youtube.com/@handle or /channel/...), a bare @handle, or a playlist URL (https://www.youtube.com/playlist?list=...) to channelOrPlaylistUrls. Each one is expanded β with real pagination, so results aren't limited to the page's first batch β into up to maxVideos videos, and every discovered video goes through the same transcript pipeline as a directly listed URL. Set publishedAfter to a relative value like "7 days" to only pick up recently published videos on repeat runs, which is useful for ongoing channel-monitoring jobs.
Reliability
Each video's transcript fetch runs its own bounded retry loop with a fresh session on every attempt β a temporary block on one attempt doesn't cascade into every other video in the run failing the same way. Every outcome (success, no captions, blocked, unavailable, age-restricted, an invalid ID, or a required extra verification step) is reported explicitly in status/message instead of silently returning an empty result.
Use cases
- Channel monitoring β track a channel's newest uploads and pull their transcripts on a schedule using
publishedAfter. - Playlist research β pull every transcript from a curated playlist (course, series, conference talks) in one run.
- Content repurposing β turn video transcripts into blog posts, show notes, or subtitles.
- SEO & content research β analyze what competitors or creators are actually saying across a channel.
- Accessibility & compliance β build a transcript archive for videos that need captions available elsewhere.
- AI data pipelines β feed clean transcript text into summarization, embedding, or search pipelines.
FAQ
Does this YouTube transcript scraper work on channels and playlists, not just single videos?
Yes β that's its main differentiator versus a single-video transcript extractor. Add a channel or playlist URL to channelOrPlaylistUrls and it auto-discovers the videos.
What if a video has no captions?
The row is still returned with transcripts: [] and status: "no_captions" (or "no_matching_language" if captions exist but were filtered out by your language settings) β never a silent empty result.
Does it fetch video titles, view counts, or channel metadata? No β this actor extracts transcripts only. It does not fetch video metadata (title/views/likes/channel details).
Can I export the results as CSV/JSON/Excel? Yes β that's a standard Apify dataset feature available on any run's Storage tab, independent of this actor.
Is scraping YouTube transcripts legal? It automates access to captions YouTube already makes available on the video page. For research, accessibility, and personal use this is generally fine; check YouTube's Terms of Service before commercial redistribution of transcript text.