YouTube Transcript Extractor - Subtitles in Any Language
Pricing
from $3.82 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Features
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
- You give inputs: video URLs or IDs, playlist URLs, and/or channel URLs, plus a cap (
Max videos). - 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.
- 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
| Field | Meaning |
|---|---|
transcript | The full transcript as clean plain text |
segments | [{startMs, durationMs, text}] — every caption line with its timing in milliseconds |
srt | The same captions as a complete SubRip (.srt) subtitle file, ready to save or upload |
vtt | The same captions as a complete WebVTT (.vtt) subtitle file |
source | Where 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 / languageName | The caption language actually delivered (e.g. en, es-419) and its display name |
isAutoGenerated | true if YouTube's automatic (ASR) captions were used, false for human-made captions |
title, channel, channelUrl | Video title and channel |
publishedAt, durationSeconds, viewCount | Publish date, length and views at extraction time |
wordCount, characterCount | Size of the transcript |
url, videoId, thumbnail | Canonical 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_limitedorno_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 withsource: "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
isAutoGeneratedwhich 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.belinks, 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.