YouTube Transcripts Scraper — Bulk Transcripts & Subtitles
Pricing
from $3.00 / 1,000 transcripts
YouTube Transcripts Scraper — Bulk Transcripts & Subtitles
Turn YouTube videos, whole channels and playlists into clean transcripts: full text plus timestamped lines, in your preferred language with fallback to the original, with title, channel, length and views. SRT/VTT export, no charge for videos without captions.
Pricing
from $3.00 / 1,000 transcripts
Rating
0.0
(0)
Developer
astravalabs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 days ago
Last modified
Categories
Share
Turn YouTube videos, whole channels and playlists into clean transcripts: the full text plus timestamped lines, in your preferred language with a fallback to the video's original language, together with the title, channel, length and view count. Up to 10,000 videos per run. Proxies and retries are handled for you.
Use it to feed RAG pipelines and AI agents, repurpose videos into articles, research interviews and lectures at scale, or build subtitle files.
Quick start
{"videos": ["https://www.youtube.com/watch?v=arj7oStGLkU","https://youtu.be/dQw4w9WgXcQ","jNQXAC9IVRw"],"languages": ["en"]}
A channel's or a playlist's latest videos:
{"videos": ["https://www.youtube.com/@3blue1brown","https://www.youtube.com/playlist?list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi","https://www.youtube.com/@veritasium/shorts"],"maxVideosPerSource": 100}
videos takes watch URLs, youtu.be links, Shorts, embed and live URLs, bare
11-character video IDs, channel URLs (/@handle, /channel/UC…,
/c/…, /user/…), and playlist URLs. You can mix them freely in one
run.
- Channels and playlists are listed newest first, up to
maxVideosPerSourcevideos each. Each row'ssourcefield says which channel or playlist it came from. - Channel tabs: a channel's Videos tab is used by default. Pick Shorts
or Live streams with
channelContent, or paste the tab's own URL (e.g.…/@veritasium/shorts). - Duplicates are removed, including a video that is both pasted directly and listed in a channel.
- Bad entries are skipped and listed in the run report, so one doesn't fail the batch. Search URLs are not supported yet.
What you get
One row per video:
{"videoId": "arj7oStGLkU","url": "https://www.youtube.com/watch?v=arj7oStGLkU","title": "Inside the Mind of a Master Procrastinator | Tim Urban | TED","channelName": "TED","channelId": "UCAuUUnT6oDeKwE6v1NGQxug","lengthSeconds": 844,"viewCount": 62000128,"language": "en","languageName": "English","isAutoGenerated": false,"availableLanguages": [{"language": "en", "name": "English", "isAutoGenerated": false},{"language": "en", "name": "English (auto-generated)", "isAutoGenerated": true}],"text": "So in college, I was a government major, which means I had to write a lot of papers. ...","wordCount": 2277,"segmentCount": 315,"segments": [{"start": 12.645, "duration": 1.37, "text": "So in college,"},{"start": 15.349, "duration": 1.564, "text": "I was a government major,"}],"subtitles": null,"description": "...","keywords": ["TED Talk", "TED Talks", "Tim Urban", "procrastination"],"thumbnailUrl": "https://i.ytimg.com/vi_webp/arj7oStGLkU/sddefault.webp","collectedAt": "2026-10-06T04:08:16+00:00"}
The example is real data from a collected transcript, abridged: text,
segments, availableLanguages (50 entries) and description are shortened.
Options
| Field | Default | What it does |
|---|---|---|
maxVideosPerSource | 50 | How many of each channel's or playlist's most recent videos to collect (up to 5,000). |
channelContent | ["videos"] | Channel tabs to list: videos, shorts, streams. |
languages | ["en"] | Language codes in order of preference. en also matches en-US and en-GB. The first one a video has is used. |
fallbackToOriginalLanguage | true | If a video has none of your languages, collect its original-language transcript. Turn off to skip it instead (skipped videos are not charged). |
includeAutoGenerated | true | Most videos only have YouTube's auto-generated captions. Turn off for creator-uploaded captions only. Uploaded captions are always preferred when both exist. |
includeSegments | true | Timestamped lines. Turn off for smaller rows when you only need text. |
subtitleFormat | none | srt or vtt adds a ready-to-use subtitle file in subtitles. Cues are clipped so they never overlap. |
maxTranscripts | 10000 | Whole-run limit. |
Pricing
$3 per 1,000 transcripts ($0.003 each), plus Apify's small Actor-start fee. Video details (title, channel, length, views, description, keywords) are included at no extra cost.
You only pay for transcripts
A row is written only when a transcript was collected. Videos where the uploader disabled transcripts, removed or private videos, age-restricted videos, and videos without your requested language are reported in the run report and never charged.
Reliability
Measured on 370 real videos in more than ten languages (October 2026):
- 99% of videos that have a transcript were delivered (312 of 315). Each video is retried on a fresh residential connection when YouTube asks to "confirm you're not a bot", which is what makes cheaper datacenter-based scrapers fail.
- Transcript text was identical to YouTube's own caption track on every video we compared it on, and every "transcripts disabled" verdict was confirmed independently.
- About 100 videos per minute.
- Channels and playlists: 300 videos listed from one channel in 10 pages, and 298 of them delivered (99.3%). Playlists were complete against their stated video count, except for videos YouTube hides from logged-out viewers.
Run report
The RUN_REPORT record in the run's key-value store lists each channel and
playlist (how many videos were found and whether the limit was reached, or
"channel not found"), then every video with its
outcome — collected, transcripts disabled, unavailable, private,
age-restricted, language not available — the languages it does have, and how
many attempts it took. Use it to see exactly why a video has no row.
Notes
- Auto-generated transcripts are YouTube's own speech recognition, served as is. Punctuation and accuracy vary by video.
- Translation into other languages is not offered: YouTube refuses automated translation requests.
- Only public videos are supported. No login, cookies or API key are needed.
- Transcripts are creators' content. Respect copyright and YouTube's terms in how you use them.