YouTube Transcript Extractor - Subtitles in Any Language avatar

YouTube Transcript Extractor - Subtitles in Any Language

Pricing

from $3.82 / 1,000 results

Go to Apify Store
YouTube Transcript Extractor - Subtitles in Any Language

YouTube Transcript Extractor - Subtitles in Any Language

Get any YouTube video's transcript in the language you choose — clean text, timestamps, and SRT + VTT files, from single videos, playlists or whole channels. Pay ONLY for delivered transcripts: $4.50 per 1,000. Subtitles in any language, Spanish included.

Pricing

from $3.82 / 1,000 results

Rating

0.0

(0)

Developer

Alex Vega

Alex Vega

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Categories

Features

Limited permissions

Share

🎬 YouTube Transcript Extractor — Subtitles & Captions in Any Language

Turn any YouTube video into a clean, ready-to-use transcript: the full text plus timestamped segments, in the language you choose. Feed single videos, whole playlists, or a channel's latest videos — one run handles them all.

Price: $4.50 per 1,000 transcripts. You pay ONLY for videos that actually return a transcript. Videos without captions are skipped for free and never appear in your results.

Built for the tools that eat transcripts: AI summarizers, clipping and repurposing pipelines, RAG/agent workflows (works great via the Apify MCP server), researchers, and content teams. English and Spanish are first-class citizens: set your preferred languages in order — e.g. ["en", "es"] — and for every video you get a manual caption track whenever one exists, with YouTube's auto-generated captions only as a flagged fallback.

How it works

  1. You give inputs: video URLs or IDs, playlist URLs, and/or channel URLs, plus a cap (Max videos).
  2. The Actor fetches each video's captions through yt-dlp plus a local PO-token server — no browser, no waiting for playback — and picks the best track for your language preferences. Each video is attempted on a fresh residential proxy session and retried on up to 3 sessions if YouTube shows its bot check.
  3. You get one row per video: full plain-text transcript, timestamped segments, and the video's metadata (title, channel, publish date, duration, views), including which language was actually used and whether the captions are auto-generated.

What you get per video

FieldMeaning
transcriptThe full transcript as clean plain text
segments[{startMs, durationMs, text}] — every caption line with its timing in milliseconds
srtThe same captions as a complete SubRip (.srt) subtitle file, ready to save or upload
vttThe same captions as a complete WebVTT (.vtt) subtitle file
sourceWhere the transcript came from: captions (extracted directly from the video's caption track) or api-fallback (delivered by the optional operator-enabled fallback described below)
language / languageNameThe caption language actually delivered (e.g. en, es-419) and its display name
isAutoGeneratedtrue if YouTube's automatic (ASR) captions were used, false for human-made captions
title, channel, channelUrlVideo title and channel
publishedAt, durationSeconds, viewCountPublish date, length and views at extraction time
wordCount, characterCountSize of the transcript
url, videoId, thumbnailCanonical link, ID and thumbnail

Example output (abridged)

{
"videoId": "arj7oStGLkU",
"title": "Inside the mind of a master procrastinator | Tim Urban | TED",
"channel": "TED",
"language": "en",
"isAutoGenerated": false,
"wordCount": 2150,
"transcript": "I have a confession to make. Both in university and now, I am a huge procrastinator...",
"segments": [
{"startMs": 0, "durationMs": 2480, "text": "I have a confession to make."}
]
}

Honest expectations

  • A video must have captions to be transcribed. Most talks, tutorials, podcasts and news videos do (manually or automatically). If a video has no caption track at all, it is skipped and you are not charged. This Actor does not download audio or run speech recognition — that keeps it fast and cheap.
  • Private, age-restricted or login-required videos are skipped, with the reason in the run log.
  • YouTube's bot check is real: YouTube shows many IPs a "confirm you're not a bot" wall, and some subtitle URLs silently return empty without a per-video integrity (PO) token. The Actor counters with yt-dlp's client rotation, a token server, a fresh RESIDENTIAL proxy session per attempt (the default — traffic is tiny, ≈0.2 MB per video) and up to 3 retries per video. A video that still cannot be read is reported honestly in the log as bot_wall, rate_limited or no_captions — and you are never charged for it. Switching the proxy to datacenter saves platform costs at a much lower success rate.
  • Optional operator fallback: the operator running this Actor can enable a backup layer (via a TRANSCRIPT_API_KEY) that retries a video through the third-party TranscriptAPI service only when direct extraction has failed completely. It is off unless the operator turns it on; rows delivered that way are honestly marked with source: "api-fallback".
  • Auto-generated captions are YouTube's own quality: usually good for clear speech, weaker for music, heavy accents or overlapping voices. Every result tells you in isAutoGenerated which kind you got.
  • Language fallback is honest: if none of your preferred languages exists for a video, the first available track is delivered and its real language is reported in language — never silently relabeled.

Inputs at a glance

  • Video URLs or IDs — watch URLs, youtu.be links, Shorts/Live URLs or bare IDs.
  • Playlist URLs — every video in the playlist, in order.
  • Channel URLs — the channel's latest videos.
  • Preferred caption languages — ordered list, default ["en", "es"].
  • Include auto-generated captions — on by default; turn it off to receive only human-made captions.

Questions or a feature request? Message the developer — Spanish and English both welcome.