YouTube Transcript Scraper: Subtitles, Captions, Playlists
Pricing
$3.00 / 1,000 transcript scrapeds
YouTube Transcript Scraper: Subtitles, Captions, Playlists
Bulk-extract YouTube transcripts (manual or auto captions) with timestamps as text, SRT, VTT or JSON, in the original language or auto-translated. Videos, Shorts & playlists; includes title, channel, duration, views, publish date. $3 per 1,000 videos.
Pricing
$3.00 / 1,000 transcript scrapeds
Rating
0.0
(0)
Developer
PulseData
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
YouTube Transcript Scraper
YouTube Transcript Scraper downloads the transcript of YouTube videos, Shorts and whole playlists, from manually created subtitles or from YouTube's auto-generated captions. Each video comes back as one JSON item with the transcript as plain text, timestamped segments, SRT or WebVTT, plus video metadata such as title, channel, duration, views and publish date. It costs $3 per 1,000 transcripts, and videos without a usable transcript are not charged.
No YouTube Data API key is needed and there is no quota.
Features
- Convert a YouTube video to text: the full transcript as one plain text field, with a word count.
- Get a YouTube transcript with timestamps as JSON segments (
start,duration,text). - Download YouTube subtitles as SRT or VTT, ready for video editors and players.
- Download transcripts for a whole YouTube playlist by pasting the playlist URL or ID.
- Translate a YouTube transcript to English (or any language code) with YouTube's own caption translation through
translateTo. - Choose the transcript language: give preferred language codes in order; manual captions are preferred over auto-generated ones within a language.
- Lists every caption track a video has in
availableLanguages, with language code, name, whether it is auto-generated and whether it is translatable.
Use cases
- RAG and LLM apps: build a knowledge base from a channel's or playlist's videos, then summarise, search or answer questions over it.
- Content repurposing: turn videos into blog posts, newsletters, show notes or social posts.
- Research and monitoring: search transcripts for brand or keyword mentions, and analyse what competitors say in their videos.
- Accessibility and localisation: SRT and VTT files in the original language or translated.
- Finding a moment in a video: search the timestamped segments for a word and jump to that second.
Input
{"videoUrls": ["https://www.youtube.com/watch?v=aircAruvnKk","https://www.youtube.com/playlist?list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi"],"languages": ["en", "de"],"fallbackToAnyLanguage": true,"translateTo": "en","outputFormats": ["text", "segments", "srt"],"includeMetadata": true,"maxVideosPerPlaylist": 50}
| Field | Type | Default | What it does |
|---|---|---|---|
videoUrls | array | required | Video URLs (watch, youtu.be, Shorts, embed, live), bare 11-character video IDs, playlist URLs or playlist IDs. |
languages | array | ["en"] | Preferred language codes in order. Leave empty to take the first track. |
fallbackToAnyLanguage | boolean | true | If no preferred language exists, use the first available track. |
translateTo | string | none | Have YouTube translate the transcript into this language code. |
outputFormats | array | ["text", "segments"] | Any of text, segments, srt, vtt. |
includeMetadata | boolean | true | Add title, description, channel, duration, views, publish date, keywords, thumbnail and category. |
maxVideosPerPlaylist | integer | 0 | Limit when expanding playlists; 0 means all. |
concurrency | integer | 5 | Videos processed in parallel, 1 to 20. |
proxyConfiguration | object | no proxy | Optional Apify Proxy settings. |
Output
{"videoId": "aircAruvnKk","url": "https://www.youtube.com/watch?v=aircAruvnKk","source": "https://www.youtube.com/watch?v=aircAruvnKk","scrapedAt": "2026-09-25T09:12:40.118Z","title": "But what is a neural network? | Deep learning chapter 1","description": "What are the neurons, why are there layers …","channelName": "3Blue1Brown","channelId": "UCYO_jab_esuFRV4b17AJtAw","durationSeconds": 1104,"viewCount": 18923411,"publishDate": "2017-10-05","uploadDate": "2017-10-05","category": "Education","keywords": ["neural networks", "deep learning"],"isLive": false,"thumbnail": "https://i.ytimg.com/vi/aircAruvnKk/sddefault.jpg","language": "en","languageName": "English","isAutoGenerated": false,"translatedTo": null,"availableLanguages": [{ "language": "en", "name": "English", "autoGenerated": false, "translatable": true },{ "language": "de", "name": "German", "autoGenerated": false, "translatable": true }],"segmentCount": 304,"wordCount": 3120,"text": "Here is a 28 by 28 pixel image …","segments": [{ "start": 4.2, "duration": 3.1, "text": "Here is a 28 by 28 pixel image" }],"srt": "1\n00:00:04,200 --> 00:00:07,300\nHere is a 28 by 28 pixel image\n"}
Only the formats listed in outputFormats are included. With includeMetadata off, the item keeps only title and channelName from the metadata.
Videos without a usable transcript come back with an error field and are not charged:
NO_CAPTIONS: the video has no caption tracks at all.NO_MATCHING_LANGUAGE: none of yourlanguagesexist andfallbackToAnyLanguageis off.availableLanguagesshows what the video does have.- A playability status such as
LOGIN_REQUIREDorUNPLAYABLE, followed by YouTube's reason, for private, removed or restricted videos. PLAYLIST_FAILEDif a playlist could not be expanded.
Pricing
Pay per event: $0.003 per transcript (transcript-scraped), which is $3 per 1,000. Only items with a transcript are charged; error items are free.
Worked example: a playlist of 200 videos where 190 have captions costs 190 x $0.003 = $0.57. The 10 videos without captions appear in the dataset with an error and cost nothing. Choosing more output formats or turning on translation does not change the price.
FAQ
Does this work for videos without subtitles?
Only if YouTube generated automatic captions for the video, which it does for many videos in widely spoken languages. Videos with no caption track at all return NO_CAPTIONS and are not charged. The actor does not do its own speech recognition.
Can I get the transcript in a different language?
Yes. languages picks the source track, and translateTo asks YouTube to translate that track. Translation works when the track is marked translatable in availableLanguages.
Which formats are supported?
Plain text, timestamped segments (JSON), srt and vtt, in any combination in one run. The whole dataset can be exported as JSON, CSV, Excel and other formats.
Can I process a whole channel?
Not by channel URL. Paste a playlist of the channel, such as its uploads playlist (a playlist ID starting with UU), or list the channel's videos with the YouTube Channel Videos Scraper and pass the URLs here.
Do I need proxies? Usually not. If YouTube asks for a sign-in on a video and you have not set a proxy, the actor retries that video through Apify residential proxy.
Is this suitable for RAG and LLM apps? Yes, that is a main use. You get clean text plus metadata per video. The actor can be called through the Apify API and SDKs, scheduled, and used as an MCP tool by AI agents, or connected through the Apify integrations for LangChain, LlamaIndex, Make, Zapier and n8n.
Related actors
- YouTube Scraper: find videos by search, channel or playlist and pass their URLs here.
- YouTube Channel Videos Scraper: list every video of a channel to transcribe it in full.
- YouTube Comments Scraper: what viewers wrote about the same videos.