YouTube Transcripts Scraper — Bulk Transcripts & Subtitles avatar

YouTube Transcripts Scraper — Bulk Transcripts & Subtitles

Pricing

from $3.00 / 1,000 transcripts

Go to Apify Store
YouTube Transcripts Scraper — Bulk Transcripts & Subtitles

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

astravalabs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

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 maxVideosPerSource videos each. Each row's source field 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

FieldDefaultWhat it does
maxVideosPerSource50How 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.
fallbackToOriginalLanguagetrueIf a video has none of your languages, collect its original-language transcript. Turn off to skip it instead (skipped videos are not charged).
includeAutoGeneratedtrueMost videos only have YouTube's auto-generated captions. Turn off for creator-uploaded captions only. Uploaded captions are always preferred when both exist.
includeSegmentstrueTimestamped lines. Turn off for smaller rows when you only need text.
subtitleFormatnonesrt or vtt adds a ready-to-use subtitle file in subtitles. Cues are clipped so they never overlap.
maxTranscripts10000Whole-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.