YouTube Transcript Scraper - Channels, Playlists, Bulk
Pricing
from $2.13 / 1,000 transcripts
YouTube Transcript Scraper - Channels, Playlists, Bulk
Extract YouTube transcripts in bulk - paste video, channel, or playlist URLs, or search queries. Get plain text, SRT, VTT, or timed segments plus video metadata. Only delivered transcripts are charged. No cookies, no API key.
Pricing
from $2.13 / 1,000 transcripts
Rating
0.0
(0)
Developer
Saulius Saulenas
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
YouTube Transcript Scraper — Videos, Channels, Playlists & Search
Extract YouTube transcripts in bulk: paste video URLs, channel URLs, playlist URLs, or plain search queries, and get clean transcripts with video metadata — as plain text, timed segments, SRT, or WebVTT.
Built for AI/RAG pipelines, content repurposing, media monitoring, and research. No cookies, no login, no YouTube API key.
Why this scraper
- Bulk-first — channels, playlists, and search queries expand to their videos automatically. One input handles all formats, mixed freely.
- Reliable on cloud infrastructure — YouTube aggressively bot-checks datacenter IPs. This actor uses a smart proxy ladder with automatic retries; in our benchmark it extracted 200/200 transcripts from a channel in under 2 minutes.
- You only pay for delivered transcripts — videos without captions, unavailable videos, and fetch failures are never charged. Diagnostic rows tell you exactly what happened.
- 4 output formats — plain text for LLMs, timed segments for analysis, SRT/VTT for subtitles.
- Language control — priority list (e.g.
["de", "en"]), manual-vs-auto-generated preference, strict or fallback matching. Every result shows all available caption languages.
Input
{"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ","https://youtu.be/jNQXAC9IVRw","https://www.youtube.com/@mkbhd","https://www.youtube.com/playlist?list=PLFgquLnL59alCl_2TQvOiD5Vgm1hCaGSI","machine learning tutorial"],"languages": ["en"],"transcriptFormat": "text","maxVideosPerSource": 200}
| Field | Default | Description |
|---|---|---|
videoUrls | — | Video URLs/IDs, channel URLs (@handle or /channel/UC…), playlist URLs, or search queries |
languages | ["en"] | Preferred transcript languages, in priority order |
transcriptFormat | text | text, segments, srt, or vtt |
preferAutoGenerated | false | Prefer auto-generated (ASR) captions over manual ones |
fallbackToAnyLanguage | true | Use the best available track if no preferred language exists |
includeFailures | true | Emit uncharged diagnostic rows for videos without transcripts |
maxVideosPerSource | 200 | Cap per channel/playlist/search |
maxResults | 100000 | Global cap per run (spend guard) |
Output
One dataset item per video:
{"type": "transcript","videoId": "dQw4w9WgXcQ","url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","title": "Rick Astley - Never Gonna Give You Up (Official Video)","channelName": "Rick Astley","channelId": "UCuAXFkgsw1L7xaCfnd5JJOw","lengthSeconds": 213,"viewCount": 1697651560,"language": "en","languageName": "English","isAutoGenerated": false,"transcriptFormat": "text","transcript": "We're no strangers to love. You know the rules and so do I…","segmentCount": 61,"wordCount": 488,"availableLanguages": ["en", "en (auto)", "de-DE", "ja", "pt-BR", "es-419"],"sourceInput": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","scrapedAt": "2026-08-11T21:35:20.991Z"}
With transcriptFormat: "segments", transcript is an array of
{ "text": "…", "start": 1.36, "duration": 1.68 } objects. With srt/vtt it contains a
ready-to-save subtitle file.
Videos that can't produce a transcript get a type: "failure" row (free of charge) with an
error code such as NO_CAPTIONS, NO_MATCHING_LANGUAGE, or LOGIN_REQUIRED, so your pipeline
can handle them explicitly.
Pricing
Pay per event — $2.50 per 1,000 transcripts ($0.0025 per transcript) plus a negligible actor-start fee ($0.00005 per GB of actor memory). Platform usage (compute, proxies, storage) is included — the event price is all you pay.
- Videos without captions cost $0 — you pay only for transcripts actually delivered.
- Set Maximum total charge on the run to hard-cap spending; the actor stops cleanly at the cap.
| Run | You pay |
|---|---|
| 100-video playlist, 92 have captions | $0.23 |
| 1,000-video channel backfill | ~$2.50 |
| 20,000-video corpus | ~$50.00 |
Use cases
- AI & RAG pipelines — turn channels into LLM-ready corpora (works great from n8n, Make, LangChain, or the Apify API).
- Content repurposing — transcripts for blogs, newsletters, and social clips.
- Media & brand monitoring — schedule runs on channels and search queries.
- Research — collect interview/lecture transcripts with timestamps for citation.
- Subtitles — batch-export SRT/VTT for re-upload or translation workflows.
Scheduling & API
Run it on a schedule (e.g. daily on a channel URL) from the Schedules tab, or call it from your code via the Apify API — see the API button on this page for ready-made snippets. Results stream to the dataset as they're extracted, so you can consume partial results while a large run is still going.
Limitations
- Transcripts come from YouTube caption tracks (manual or auto-generated). Videos with captions
disabled can't be transcribed — they're reported as
NO_CAPTIONSand not charged. - Live streams in progress and age-restricted videos are generally not extractable.
- Channel expansion returns the channel's regular uploads (newest first), up to
maxVideosPerSource.
FAQ
Do I need a YouTube API key or cookies? No. The actor uses YouTube's public endpoints.
What languages are supported? Anything YouTube has captions for. Set languages to your
priority list; availableLanguages on every item shows what exists.
Can I get word-level timestamps? Segment-level timestamps (a few seconds each) via
segments, srt, or vtt formats.
What happens on a video that's private/deleted? A free failure row with the error code —
never a charge.