YouTube Transcript Scraper — $0.50/1k · Subtitles, SRT & VTT
Pricing
from $0.40 / 1,000 transcript extracteds
YouTube Transcript Scraper — $0.50/1k · Subtitles, SRT & VTT
Get YouTube transcripts, subtitles and captions as clean text, timestamps, SRT or VTT. Paste video URLs, playlists, whole channels (@handle) or search terms. Manual or auto-generated captions in any language, chapters with their own text, video metadata. $0.50 per 1,000 transcripts found.
Pricing
from $0.40 / 1,000 transcript extracteds
Rating
0.0
(0)
Developer
tidydata
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
🎬 YouTube Transcript Scraper — Subtitles, Captions, SRT & VTT
Get the transcript of any YouTube video as clean, readable text — plus timed segments, SRT and VTT subtitles, chapters with their own text and the video's metadata. Paste single videos, whole playlists, entire channels (@handle) or just search terms, and get one tidy row per video.
$0.50 per 1,000 transcripts — one of the cheapest on Apify. Videos without captions are listed with the reason and are never charged.
- ✅ Any input: video links (
watch,youtu.be,shorts,live,embed), 11-character IDs, playlists, channels (@handle,/channel/UC…,/c/…), channel Shorts and Live tabs, and plain search terms - ✅ Any language: manual (human-made) captions first, auto-generated as fallback; pick your languages in order of preference or leave empty for the original spoken language
- ✅ Readable text: paragraphs (not one caption per line), or plain, or one
[mm:ss]line per caption - ✅ Timed segments
{start, duration, text}for search, clipping, quotes and AI pipelines - ✅ Chapters with their own text: each chapter's title, start, end and its part of the transcript — perfect for summaries and RAG chunks
- ✅ SRT and WebVTT subtitles ready to download
- ✅ ZIP download: one
.txtand one.srtper video, free - ✅ Metadata: title, channel, duration, views, description, tags, available caption languages
- ✅ Fast and reliable: parallel processing, automatic retries with fresh IPs; ~1 second per video
- ✅ No API key, no login, no cookies needed
Who uses it
- AI & RAG builders — feed transcripts and chapter chunks to ChatGPT, Claude, LangChain, LlamaIndex or a vector database.
- Content creators & marketers — turn videos into blog posts, newsletters, quotes and social posts; research what competitors say.
- SEO — find the exact words top-ranking videos use; build topic clusters from a whole channel.
- Researchers & journalists — search what was said across hundreds of videos, with timestamps as evidence.
- Educators & students — notes, study guides and accessible subtitles.
- Agencies — monitor a channel and get every new video's transcript automatically.
How to use it
- Sources: paste one item per line, mixed as you like:
https://www.youtube.com/watch?v=iCvmsMzlF7ohttps://youtu.be/kJQP7kiw5Fk@lexfridmanhttps://www.youtube.com/@kurzgesagt/shortshttps://www.youtube.com/playlist?list=PLFs4vir_WsTwEd-nJgVJCZPNL3HALHHpFhow to make sourdough bread
- Max videos per source: how many videos to take from each playlist, channel (newest first) or search.
- Optional: languages (e.g.
en,es,pt-BR), text format, SRT/VTT, chapters, ZIP. - Run. Download the results as JSON, CSV, Excel or HTML, or get them through the API.
Output example
{"status": "ok","videoId": "iCvmsMzlF7o","url": "https://www.youtube.com/watch?v=iCvmsMzlF7o","title": "The Power of Vulnerability | Brené Brown | TED","channelName": "TED","channelId": "UCAuUUnT6oDeKwE6v1NGQxug","durationSeconds": 1250,"viewCount": 25322428,"language": "en","languageName": "English","isAutoGenerated": false,"wordCount": 3103,"transcript": "So, I'll start with this: a couple years ago, an event planner called me because I was going to do a speaking event…","segments": [{ "start": 16.86, "duration": 3.46, "text": "So, I'll start with this: a couple years ago, an event planner called me" },{ "start": 20.34, "duration": 2.05, "text": "because I was going to do a speaking event." }],"chapters": [],"srt": "1\n00:00:16,860 --> 00:00:20,320\nSo, I'll start with this: a couple years ago, an event planner called me\n\n2\n…","availableLanguages": [ { "code": "sq", "name": "Albanian", "autoGenerated": false }, { "code": "ar", "name": "Arabic", "autoGenerated": false }, "… 52 languages" ],"charged": true}
For videos with chapters (here a 5-hour podcast), each chapter carries its own text:
"chapters": [{ "title": "Episode highlight", "start": 0, "end": 87, "startTime": "00:00", "text": "- There are decades where nothing happens and weeks where decades happen…" },{ "title": "Introduction", "start": 87, "end": 176, "startTime": "01:27", "text": "- The following is a conversation with David Heinemeier Hansson, also known as DHH…" }]
Videos that can't be transcribed come back as a free row with a clear status and error:
| status | meaning |
|---|---|
no_transcript | the video has no captions at all (manual or auto) |
language_not_available | captions exist, but not in your languages — see availableLanguages |
only_auto_captions | you asked for human-made captions only |
age_restricted_or_private, unavailable, not_found | YouTube doesn't show the video publicly |
failed | YouTube kept refusing after several retries — run it again later |
invalid_source | a line in Sources is not a YouTube link, ID or search |
Turn on Hide videos without a transcript to keep only successful rows.
Pricing
Pay per transcript: $0.0005 each ($0.50 per 1,000). You only pay for rows with "status": "ok".
| You run | You pay |
|---|---|
| 1 video | $0.0005 |
| a 50-video playlist | $0.025 |
| the last 500 videos of a channel | $0.25 |
| 10,000 transcripts | $5 |
Videos without captions, private, deleted or failed videos and invalid inputs are free. Higher Apify plans get an automatic discount. Set a maximum cost per run and the Actor stops cleanly when it is reached.
Get new videos automatically
- Save a task with your channel (
@channel) and Max videos per source = 10. - Add a schedule (e.g. daily).
- To keep only new videos, connect our Merge, Deduplicate & Export Datasets Actor as an integration with Only new rows and deduplicate by
videoId— it can also export everything to CSV/Excel.
Use it from code
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("tidydata/youtube-transcript-scraper").call(run_input={"sources": ["https://www.youtube.com/watch?v=iCvmsMzlF7o", "@lexfridman"],"maxVideosPerSource": 10,"languages": ["en"],})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], item.get("wordCount"))
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('tidydata/youtube-transcript-scraper').call({sources: ['https://youtu.be/kJQP7kiw5Fk'],includeSrt: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0].transcript);
It also works with Make, Zapier, n8n, webhooks, Google Sheets and every other Apify integration, and as a tool for AI agents through the Apify MCP server.
FAQ
Does it work with auto-generated captions?
Yes. Human-made captions are preferred; if there are none, the auto-generated ones are used (isAutoGenerated: true). Turn on Only human-made captions to skip them.
Which language will I get?
With Languages empty you get the video's original spoken language. With a list (e.g. es, en) you get the first one available. Regional variants match too: pt finds pt-BR, es finds es-419.
Can it translate captions?
No — YouTube no longer serves its machine translations to tools like this one. You get the languages the video really has (see availableLanguages).
What if a video has no captions?
It is listed as no_transcript and not charged. For your own audio or video files (MP3, MP4, WAV…) you can use our Audio & Video Transcription Actor.
How many videos can I get from a channel?
Up to 5,000 per source (newest first). Use the /shorts or /streams tab links for Shorts and live streams.
Is the text cleaned?
Yes: HTML entities and tags are removed, line breaks inside captions are joined, and the paragraphs format groups sentences into readable paragraphs at natural pauses. Sound tags like [Music] or (Laughter) are kept because they are part of the captions.
Do I need a YouTube account, API key or proxy? No. Everything is included in the price.
Is it legal? The Actor only reads captions that YouTube shows publicly to any visitor. Transcripts belong to their creators: use them for research, analysis, accessibility or with permission, and respect copyright and YouTube's terms when you republish content.
Something doesn't work? Open an issue in the Issues tab with the video link — we answer fast.