YouTube Transcript Scraper
Pricing
Pay per event
YouTube Transcript Scraper
Extract YouTube transcripts & captions from videos, Shorts, channels and playlists. Plain text, timestamped segments, SRT or VTT, language choice, auto-translation and video metadata. Pay only for successful transcripts; failed videos are free.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Markus Essl
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 days ago
Last modified
Categories
Share
Get the full transcript (captions/subtitles) of any public YouTube video, Short, channel or playlist as plain text, timestamped segments, SRT or WebVTT, together with the video's title, channel, publish date, duration and view count. You only pay for transcripts that were actually delivered. Videos with no captions are reported as free error records.
What data can you get
| Field | Example | Notes |
|---|---|---|
transcriptText | "Good morning. How are you? ..." | Full transcript as one string |
segments | [{"start": 27.1, "duration": 2.58, "text": "Good morning. How are you?"}] | Timestamped lines, in seconds |
srt / vtt | 1\n00:00:27,103 --> 00:00:29,678\n... | Ready-to-use subtitle files (optional) |
transcriptLanguage | en | Language of the returned transcript |
isAutoGenerated | false | true = YouTube speech recognition, false = captions provided by the uploader |
isTranslated, translatedFrom | true, ko | Set when you ask for automatic translation |
videoLanguage | fr-FR | Original spoken language when YouTube exposes it |
availableLanguages | [{"languageCode": "de", "isAutoGenerated": false}, ...] | Every caption track available on the video |
title, description, keywords, category | "Do schools kill creativity?" | Video metadata |
channelName, channelId, channelHandle, channelUrl | TED, @TED | Channel info |
publishedAt, durationSeconds, viewCount | 2007-01-07T05:00:34Z, 1203, 25027894 | Publish date in ISO 8601 (UTC) |
wordCount, segmentCount | 3170, 427 | Quick size stats |
status, errorCode, errorMessage | error, NO_TRANSCRIPT | Every video gets a record, including failures (free) |
How to use
- Paste YouTube links into YouTube URLs or video IDs. You can mix videos (
watch?v=,youtu.be/,/shorts/,/live/), bare 11-character video IDs, channels (@handle,/channel/UC…, plus/videos,/shortsor/streamsfor a specific tab) and playlists. - Optionally pick preferred languages, an auto-translation target, and the output formats you want.
- Click Start, then download the results as JSON, CSV or Excel, or read them through the API.
Input example
{"startUrls": ["https://www.youtube.com/watch?v=iG9CE55wbtY","https://youtu.be/9bZkp7q19f0","https://www.youtube.com/@veritasium/videos","https://www.youtube.com/playlist?list=PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf"],"languages": ["en"],"translateTo": "","outputFormats": ["text", "segments", "srt"],"maxVideosPerSource": 20,"maxItems": 100}
Output example
Real output from a test run (long fields shortened):
{"status": "success","videoId": "iG9CE55wbtY","url": "https://www.youtube.com/watch?v=iG9CE55wbtY","title": "Do schools kill creativity? | Sir Ken Robinson | TED","channelName": "TED","channelId": "UCAuUUnT6oDeKwE6v1NGQxug","channelHandle": "@TED","channelUrl": "https://www.youtube.com/channel/UCAuUUnT6oDeKwE6v1NGQxug","publishedAt": "2007-01-07T05:00:34Z","durationSeconds": 1203,"viewCount": 25027894,"category": "Education","transcriptLanguage": "en","transcriptLanguageName": "English","isAutoGenerated": false,"isTranslated": false,"videoLanguage": "en","segmentCount": 427,"wordCount": 3170,"transcriptText": "Good morning. How are you? (Audience) Good. It's been great, hasn't it? I've been blown away by the whole thing. In fact, I'm leaving. (Laughter) ...","segments": [{ "start": 27.103, "duration": 2.575, "text": "Good morning. How are you?" },{ "start": 29.702, "duration": 1.403, "text": "(Audience) Good." },{ "start": 31.129, "duration": 1.668, "text": "It's been great, hasn't it?" }],"srt": "1\n00:00:27,103 --> 00:00:29,678\nGood morning. How are you?\n\n2\n...","inputUrl": "https://www.youtube.com/watch?v=iG9CE55wbtY","scrapedAt": "2026-10-09T14:01:43Z"}
A video without captions gets a free error record:
{"status": "error","videoId": "l9McIeQxwqY","url": "https://www.youtube.com/watch?v=l9McIeQxwqY","errorCode": "NO_TRANSCRIPT","errorMessage": "This video has no captions/transcript (none uploaded and none auto-generated).","scrapedAt": "2026-10-09T14:01:50Z"}
Pricing
$4.00 per 1,000 transcripts ($0.004 per video). You pay only for transcripts that were delivered. Error records cost nothing: videos with no captions, private, deleted, members-only or age-restricted videos, and languages that aren't available. Listing videos from channels and playlists is also free. Set a maximum charge per run in the run options if you want a hard spending cap.
Language and translation options
- Preferred transcript languages: a priority list such as
["en", "es"].enalso matchesen-US,en-GBand other regional variants. - Default (empty list): the transcript comes in the video's original spoken language. Auto-dubbed videos are handled correctly, so a French video with an English AI dub still returns the French transcript.
- Fall back to original language: when none of your languages exists, you get the original-language transcript instead of an error. Turn this off to get a free
LANGUAGE_NOT_AVAILABLErecord instead. - Auto-translate to language: if the video has a native track in that language, the native track is used. Otherwise the transcript is machine-translated (Google Translate) and the timestamps are kept.
isTranslatedandtranslatedFromare set on those records. - Prefer human-made captions: when the uploader provided captions, they are used before YouTube's auto-generated speech recognition.
Use cases
- AI and LLM pipelines: feed transcripts to summarizers, RAG indexes, chatbots or AI agents. The Actor works with the Apify MCP server, so agents such as Claude or ChatGPT can call it as a tool.
- Content repurposing: turn videos into blog posts, newsletters, show notes or social posts.
- Research and monitoring: analyze what channels, competitors, politicians or news outlets say, and search across thousands of videos.
- Subtitles and accessibility: download SRT or VTT files for editing, translation or re-upload.
- SEO and marketing: extract keywords and topics from top-ranking videos in your niche.
- Education: build study notes and searchable archives of lectures and talks.
FAQ
Is it legal to scrape YouTube transcripts? This Actor reads only publicly available data: the same captions anyone can see under a public video. It does not log in, use cookies or touch private data. You are responsible for how you use the content, for example copyright and YouTube's terms. When in doubt, consult a lawyer.
Why did a video return NO_TRANSCRIPT?
The uploader didn't add captions, and YouTube didn't auto-generate any (common for music-only videos, live streams, very new uploads and some Shorts). The Actor checks three times from different connections before reporting this, so the record is reliable. It's free.
Which videos can't be processed?
Private, deleted, members-only and age-restricted videos (those need a signed-in account), and premieres or live streams that haven't started yet. Each one gets a clear errorCode and costs nothing.
How many videos does a channel return?
The newest maxVideosPerSource uploads (default 20). Add /videos, /shorts or /streams to the channel URL to limit the results to that tab. maxItems caps the whole run.
How accurate are auto-generated transcripts?
They come from YouTube's own speech recognition. Quality is usually good for clear speech and weaker for music, heavy accents or crosstalk. The isAutoGenerated field tells you which kind each record contains.
Error codes: NO_TRANSCRIPT, LANGUAGE_NOT_AVAILABLE, TRANSLATION_FAILED, VIDEO_UNAVAILABLE, VIDEO_PRIVATE, AGE_RESTRICTED, MEMBERS_ONLY, LIVE_NOT_STARTED, VIDEO_UNPLAYABLE, CHANNEL_NOT_FOUND, PLAYLIST_NOT_FOUND, NO_VIDEOS_FOUND, INVALID_INPUT, BLOCKED (temporary; please retry).