YouTube Transcript Scraper — subtitles & captions to text
Pricing
$5.00 / 1,000 transcript fetcheds
YouTube Transcript Scraper — subtitles & captions to text
Video URLs or IDs in, full transcripts out: plain text plus timestamped segments, language selection, auto-generated and manual captions. Videos without transcripts are reported and never charged.
Video URLs (or bare IDs) in, complete transcripts out — as clean plain text, readable paragraphs, SRT, WebVTT, or timestamped JSON. Manual subtitles and auto-generated captions both supported, with language preference, optional translation, and video metadata.
- Five output formats in one call: plain
text, readableparagraphs,srt,vtt, and timestampedsegments— all built from the same fetch, one charge - Any URL form:
watch?v=,youtu.be/,/shorts/,/embed/,/live/, or a bare 11-character ID - Language control: pass preference order (
en,de, …); falls back to the first available transcript so you still get text - Translation: set
translateTo(e.g.en) to get the transcript in your target language when the source supports it - Video metadata: title, channel, and thumbnail included by default (public oEmbed, no key)
- Block-resistant: automatic residential-proxy retry when YouTube rate-limits datacenter IPs
- Honest pricing: you pay only when a transcript is actually delivered. No captions, private/removed videos, or blocks → reported clearly, never charged
Input
{"videoUrls": ["https://www.youtube.com/watch?v=jNQXAC9IVRw"],"languages": ["en"],"outputFormats": ["text", "srt"],"translateTo": "","includeMetadata": true,"useApifyProxy": true}
Output (one dataset item per video)
{"video_id": "jNQXAC9IVRw","url": "https://www.youtube.com/watch?v=jNQXAC9IVRw","title": "Me at the zoo","channel": "jawed","thumbnail": "https://i.ytimg.com/vi/jNQXAC9IVRw/hqdefault.jpg","language": "English","language_code": "en","auto_generated": false,"translated": false,"text": "All right, so here we are in front of the elephants…","srt": "1\n00:00:00,000 --> 00:00:03,200\nAll right, so here we are…\n","word_count": 4213,"segment_count": 512,"duration_covered_s": 1180.4}
Only the formats you request appear (plus always text's word_count/segment_count).
Pricing
One event: transcript-fetched — charged only for videos where you actually received a transcript, regardless of how many formats you ask for. Everything else (no captions, video unavailable, temporary block) is free and reported with a clear error field.
Typical uses
- LLM pipelines: summarize, chapterize, or answer questions over video content
- Subtitle files: export ready-to-use
.srt/.vttfor editing or upload - Content research: bulk-pull transcripts of a channel's videos for topic mining
- Accessibility & SEO: publish text versions of video content
- Clip discovery:
segmentsoutput + keyword search overstarttimes
Works with AI agents
Exposed via Apify's MCP server — agents can call "get the transcript of this video and summarize the key claims" as a single tool step.
FAQ
Does it handle auto-generated captions? Yes — flagged as auto_generated: true so you know the quality tier.
Can it translate? Yes — set translateTo to a language code. When the source transcript is translatable, the result comes back translated (flagged translated: true). If not, you get the original with its language reported.
Which format should I use? text for LLMs, paragraphs for reading/publishing, srt/vtt for subtitle files, segments for timestamp-precise clip search.
Bulk? Pass as many URLs as you want; each video is one dataset row, failures never charged.