YouTube Transcript & Subtitle Scraper (SRT, VTT)
Pricing
from $4.00 / 1,000 results
YouTube Transcript & Subtitle Scraper (SRT, VTT)
Get clean, AI-ready transcripts from any YouTube video. Full text, timestamped segments, and optional chunking for RAG and LLM pipelines.
Pricing
from $4.00 / 1,000 results
Rating
0.0
(0)
Developer
Vault
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
What does YouTube Transcript Scraper do?
This Actor turns any YouTube video into clean, ready-to-use text. Paste video URLs and get back the full transcript, timestamped caption segments, and — if you want — the text pre-split into chunks sized for an LLM context window or a vector database.
It handles every common URL shape (youtube.com/watch, youtu.be, /shorts/, /embed/), resolves the video title and channel name automatically, and decodes the HTML entities that make raw caption data unusable.
Results export as JSON, CSV, Excel or HTML, and are available through the Apify API.
Why use this scraper?
- Feed video to an LLM — summarize, extract, classify or answer questions over video content that models can't watch.
- Build a RAG pipeline — the built-in chunking produces sentence-aligned segments ready for embedding, no post-processing needed.
- Repurpose content — turn a webinar or podcast into a blog post, newsletter, or social thread.
- Research and analysis — search across hundreds of videos by what was actually said.
- Accessibility and SEO — publish readable transcripts alongside your videos.
- Subtitle and translation workflows — timestamped segments map straight to caption formats.
How to use it
- Add one or more YouTube videos — full URLs or bare 11-character IDs both work.
- Optionally set a preferred language (
en,es,de…). Leave empty for the video's default. - Turn on Include timestamped segments if you need per-cue start times.
- Set a Chunk size (try
2000) if you're feeding an AI model. Leave0to skip. - Click Start, then export from the Storage tab.
Input
| Field | Type | Description |
|---|---|---|
videos | array | Video URLs or IDs. Required. |
language | string | Two-letter preferred transcript language. |
includeSegments | boolean | Include every caption cue with start time and duration. |
chunkSize | integer | Split transcript into ~N-character chunks on sentence boundaries. 0 disables. |
proxyConfiguration | object | Optional proxy. Recommended for large batches — see below. |
{"videos": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ","https://youtu.be/9bZkp7q19f0"],"includeSegments": false,"chunkSize": 2000}
Output
{"videoId": "dQw4w9WgXcQ","url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)","author": "Rick Astley","thumbnail": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg","language": "en","durationSeconds": 211,"wordCount": 487,"characterCount": 2089,"transcript": "We're no strangers to love. You know the rules and so do I...","segments": [{ "text": "We're no strangers to love", "startSeconds": 18, "durationSeconds": 3 }],"chunks": ["...", "..."],"scrapedAt": "2026-08-25T00:47:12.004Z"}
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Data fields
| Field | Description |
|---|---|
videoId / url | Canonical ID and watch link. |
title / author / thumbnail | Video title, channel name and thumbnail image. |
language | Language of the transcript actually returned. |
durationSeconds | Length covered by the captions. |
wordCount / characterCount | Useful for estimating LLM token cost before you send it. |
transcript | Full text, entities decoded, whitespace normalized. |
segments | Per-cue text with startSeconds and durationSeconds. Only when enabled. |
chunks | Sentence-aligned chunks near your requested size. Only when chunkSize > 0. |
How much does it cost?
Billed per video transcribed, so cost tracks exactly what you get. Videos without captions cost you nothing — they're reported separately, not billed as results.
Tips
- Chunk size 2000 is a good default for most embedding models. Chunks break on sentence boundaries, never mid-word.
- Check
wordCountbefore piping into an LLM — it's a fast proxy for token cost. - Use
segmentsto deep-link back into the video:https://youtu.be/VIDEO_ID?t=START_SECONDS. - Fetching many videos? Enable proxy in the input. YouTube rate-limits datacenter IP ranges, and a proxy avoids partial results on large batches.
FAQ, disclaimers, and support
Some videos returned nothing. Not every video has captions. Videos with captions disabled, private videos, and some region-locked videos have no transcript to fetch. These are listed in the FAILED_VIDEOS record in the run's key-value store, with the reason for each.
Auto-generated captions? Yes — if YouTube generated them, this Actor returns them. Accuracy depends on YouTube's speech recognition, not on this Actor.
Can it do a whole channel or playlist? Not yet. Supply individual video URLs. Open an issue if you want channel support and I'll look at adding it.
Is this legal? Captions are publicly served alongside the video. You are responsible for respecting YouTube's Terms of Service and the copyright of the underlying content in how you use transcripts.
Found a bug or want a feature? Open an issue on the Issues tab.