YouTube Transcript Scraper — Subtitles, Captions & LLM Text avatar

YouTube Transcript Scraper — Subtitles, Captions & LLM Text

Pricing

Pay per usage

Go to Apify Store
YouTube Transcript Scraper — Subtitles, Captions & LLM Text

YouTube Transcript Scraper — Subtitles, Captions & LLM Text

Extract YouTube transcripts, subtitles and captions without an API key. Bulk videos, playlists and channels. Output timestamped segments, LLM-ready text, readable paragraphs, SRT and VTT. Resilient multi-client engine with automatic residential fallback. Free — you only pay Apify usage.

Pricing

Pay per usage

Rating

5.0

(1)

Developer

D N

D N

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Categories

Share

YouTube Transcript Scraper — Subtitles, Captions & LLM-Ready Text

Extract the transcript, subtitles and captions of any YouTube video — no API key, no browser, no sign-in. Feed it a single video, a list of thousands, a playlist or a whole channel, and get back clean timestamped segments, LLM-ready plain text, readable paragraphs, and SRT / VTT subtitle files.

Built for reliability first: a multi-client engine keeps working when YouTube shifts, and a surgical residential fallback rescues the few videos that datacenter IPs can't reach — so you get the uptime of premium tools while staying on the free datacenter path for almost everything.

What it does

This actor is a fast, resilient YouTube transcript API / subtitle extractor / caption downloader. Give it YouTube URLs (or bare video IDs, youtu.be links, Shorts, /live/, /embed/, playlist URLs, or channel URLs like /@handle, /channel/UC…, /c/name, /user/name) and it returns each video's transcript in the formats you choose. It handles manual and auto-generated (ASR) captions, lets you pick a language or translate, and pulls rich video metadata alongside the text.

Common searches this solves: youtube transcript, youtube subtitles download, youtube captions to text, youtube transcript api, bulk youtube transcript, youtube to srt, transcript for LLM / RAG / summarization.

Key features

  • Resilient multi-client engine. Requests cascade across several YouTube clients (Android, iOS, mobile web, TV, web). When one surface changes, the others keep delivering — far sturdier than single-path scrapers that break on every YouTube update.
  • Smart residential fallback. Most videos are fetched over the free datacenter proxy. Only the ones that trip YouTube's "confirm you're not a bot" check are retried over residential proxies, so you get near-100% success while paying the residential rate on just a handful of videos.
  • Parallel processing. A configurable concurrency pool fetches many videos at once, each on its own rotating session — large playlists and channels finish quickly.
  • Five output shapes. Timestamped segments, flat text (LLM-ready), grouped paragraphs (merged into readable prose, not choppy one-second lines), plus srt and vtt subtitle files.
  • Rich metadata. Title, channel, channel ID, duration, view count, publish date, category, keywords, description, thumbnail, and the list of available caption languages.
  • Language & translation. Ask for a specific language (with en matching en-US), fall back gracefully, or translate captions to another language.
  • Playlist & channel expansion. Point it at a playlist or channel and it collects the videos for you, up to a cap you set.
  • Never fails silently. Every input yields a record with an explicit status (found / not_found / error) and a precise error code — no mystery empty rows.

Input

FieldTypeDescription
videosarray (required)Video URLs, video IDs, youtu.be links, Shorts, /live/, /embed/, playlist URLs, or channel URLs. Playlists and channels are expanded into their videos.
languagestringPreferred caption language code (e.g. en, fr, es). Matches en-US when you ask for en. Empty = first available. Default en.
includeAutoGeneratedbooleanAllow automatic (ASR) captions when no manual captions exist. Manual is always preferred. Default true.
outputFormatsarrayAny of segments, text, paragraphs, srt, vtt. Default ["segments", "text"].
translateTostringTranslate captions to this language code using YouTube's own translation. Empty = keep original.
includeMetadatabooleanAttach title, channel, duration, views, keywords, description, thumbnail, etc. Default true.
maxVideosPerChannelintegerCap on how many videos to take from each playlist/channel. Default 20.
maxConcurrencyintegerHow many videos to fetch in parallel. Default 5.
proxyConfigurationobjectProxy used to reach YouTube. Apify Proxy (datacenter) by default — free on the platform.
autoResidentialFallbackbooleanRetry bot-checked videos over residential proxies automatically. Default true.

Output

One dataset item per video. Example (found, with segments, text and paragraphs):

{
"input": "https://youtu.be/jNQXAC9IVRw",
"videoId": "jNQXAC9IVRw",
"url": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
"status": "found",
"language": "en",
"isAutoGenerated": false,
"availableLanguages": ["en", "de"],
"clientUsed": "ANDROID",
"video": {
"title": "Me at the zoo",
"channel": "jawed",
"channelId": "UC4QobU6STFB0P71PMvOGN5A",
"durationSeconds": 19,
"viewCount": 398413203,
"isLive": false,
"publishDate": "2005-04-23",
"category": "People & Blogs",
"keywords": ["me at the zoo", "jawed karim", "first youtube video"],
"description": "The first video on YouTube...",
"thumbnail": "https://i.ytimg.com/vi/jNQXAC9IVRw/hqdefault.jpg"
},
"segments": [
{ "start": 0.85, "dur": 3.2, "text": "All right, so here we are, in front of the elephants" }
],
"text": "All right, so here we are, in front of the elephants, the cool thing about these guys...",
"paragraphs": [
{ "start": 0.85, "dur": 18.1, "text": "All right, so here we are, in front of the elephants..." }
],
"error": null
}

Videos without captions return status: "not_found"; unavailable/blocked videos return status: "error" with a code such as NoCaptionsAvailable, VideoUnavailable, AgeRestricted, or IpBlocked.

Use cases

  • Feed LLMs and RAG pipelines — turn any video or channel into clean text for summarization, Q&A, or embeddings.
  • Repurpose content — pull transcripts to write articles, show notes, chapters, or social posts.
  • Subtitle files — export ready-to-use SRT/VTT for editing or re-uploading.
  • Research & analysis — batch-collect transcripts across a channel or topic for search and NLP.

How it works & reliability

YouTube no longer serves caption data to the plain web player without a proof-of-origin token, which is why many transcript tools broke in late 2025. This actor instead asks YouTube through its mobile-app and TV clients, whose caption URLs remain accessible, and rotates between them automatically. If an IP is challenged with a bot-check, the video is transparently retried over residential proxies. The result is high success rates without forcing residential costs on every request. When YouTube does change something, fixing it is usually a small update to the client table — and a daily healthcheck flags breakages early.

Limitations & fair use

  • Only videos that actually have captions (manual or auto) can produce a transcript.
  • Private, deleted, or membership-only videos can't be accessed; they're reported clearly.
  • Auto-generated captions reflect YouTube's speech recognition and may contain errors.
  • Please use transcripts in line with YouTube's Terms of Service and applicable copyright. You're responsible for how you use the extracted text.

Pricing

This actor is free — the developer charges nothing. You only pay for your own Apify platform usage (compute units and, when the residential fallback is triggered, a small amount of residential proxy traffic). Typical costs are a fraction of a cent per video.

More actors by this developer

Explore the rest of the collection on the author's Apify profile: https://apify.com/fit_melon


Feedback and feature requests are welcome via the Issues tab — response time is public and taken seriously.