Pricing
$5.00 / 1,000 video transcripts
Free YouTube Transcript Downloader
Download clean transcripts from any YouTube video URL β manual or auto-generated, in any language. Batch input, high concurrency, ready for LLM context windows and RAG pipelines.
Pricing
$5.00 / 1,000 video transcripts
Rating
0.0
(0)
Developer
Actor stats
0
Bookmarked
22
Total users
11
Monthly active users
2 months ago
Last modified
Categories
Share
Download clean, ready-to-use transcripts from any YouTube video β manual captions or auto-generated, in any language. Built for LLM context windows, RAG pipelines, content repurposing, and SEO research at scale.
No API key. No quota. Bring a list of video URLs (or just video IDs), get back structured transcripts with timestamps, language metadata, and word counts in seconds.
What you get
- Full transcript text as a single clean string (timestamps stripped)
- Per-segment timing data (
start,duration,text) when you need to anchor LLM citations or build interactive video players - Language detection + manual-vs-auto-generated flag so you can filter out lower-quality auto-captions
- Batch input β feed thousands of URLs in one run, parallelized
- Honest error reporting β videos with disabled transcripts are flagged, never silently dropped
- Pay-per-result pricing β $0.005 per video that returns a transcript; failures are free
How it works
The Actor wraps the well-maintained
youtube-transcript-api
Python library, which fetches transcripts directly from YouTube's public
caption endpoint. No scraping browser, no headless Chrome β just
straight HTTP calls to YouTube's transcript JSON endpoint.
For each video URL you submit, the Actor:
- Parses the video ID (accepts full URLs, short URLs, or raw 11-char IDs)
- Lists all available transcripts for that video
- Picks the best match based on your
preferred_languagesorder and theprefer_manualflag - Falls back to auto-generated captions if no manual transcript exists in your preferred language
- Returns the transcript joined as a single string + optional per-segment timing array
Input
| Field | Default | Description |
|---|---|---|
videoUrls | required | Array of YouTube video URLs or video IDs (e.g. https://www.youtube.com/watch?v=dQw4w9WgXcQ, https://youtu.be/dQw4w9WgXcQ, or just dQw4w9WgXcQ) |
preferred_languages | ["en"] | Language codes in priority order. The first available transcript wins; falls back to any language if none match |
prefer_manual | true | When both manual and auto-generated transcripts exist, prefer manual (higher accuracy). Set to false if you only want auto-generated |
include_segments | false | If true, include the full segments_data[] array with start/duration per line. If false, only the joined transcript text + metadata (smaller payload, faster) |
concurrency | 10 | Concurrent transcript fetches (1β50). Higher = faster but may trigger YouTube rate limits on very large batches |
Output
{"input":"https://www.youtube.com/watch?v=dQw4w9WgXcQ","video_id":"dQw4w9WgXcQ","video_url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ","language":"en","is_generated":false,"segments":58,"word_count":218,"duration_seconds":213.5,"transcript":"We're no strangers to love. You know the rules and so do I...","segments_data":[{"start":18.8,"duration":7.0,"text":"We're no strangers to love"},{"start":25.8,"duration":3.7,"text":"You know the rules and so do I"}],"error":null}
When a transcript is unavailable, the Actor returns the same object with
transcript: null and a populated error field (e.g.
"transcripts disabled", "video unavailable",
"no transcript in preferred languages"Use cases
Feed YouTube content into LLMs (RAG / Q&A bots)
The single biggest use case. Pipe transcripts directly into your vector DB or LLM context window. Build a chatbot that answers questions about a creator's catalog, summarizes podcast episodes, or extracts key quotes from earnings calls β without watching a single video.
Bulk content repurposing
Turn YouTube videos into blog posts, newsletters, social clips, or SEO-friendly transcripts hosted on your site. Run an entire channel's back-catalog through this Actor in minutes, then hand the output to your favorite content-rewrite LLM.
Competitive content research
Pull transcripts from a competitor's top 50 videos, extract topics + recurring themes with an LLM, and identify content gaps to attack in your own SEO and social strategy.
Multi-language video translation pipelines
Fetch the original transcript in its source language, then translate to your target market language with DeepL / GPT / Claude. Cheaper and more accurate than YouTube's auto-translate, and you control the post-editing.
Podcast and interview indexing
For long-form content, build searchable transcript databases. With
include_segments=true you get the timing data needed to deep-link
back to the exact moment a quote was said.
Accessibility and compliance
Generate clean text alternatives for video content for WCAG 2.1 compliance, SEO indexing, or internal documentation.
Pricing
Pay-per-event: $0.005 per successfully-returned transcript. Failures (disabled transcripts, deleted videos, unavailable language) are free β you only pay for results.
Typical run: 1,000 videos β $5.00 + Apify compute (usually <$0.50).
No subscriptions, no minimum spend, no per-month fee.
Performance
- Throughput: ~10β15 transcripts per second at default concurrency (10), depending on video length and YouTube's response time
- Cold start: ~3 seconds to spin up the container
- Memory: 512 MB minimum, 2 GB max β fits comfortably on Apify's free tier
Limits and gotchas
- Some videos have transcripts disabled by the channel owner β
there's no workaround; YouTube will not serve them. The Actor returns
error: "transcripts disabled"and skips billing - Auto-generated captions can be wildly inaccurate for videos with
music, accents, or background noise β set
prefer_manual=trueto filter these when manual versions exist - Live streams and Premieres that haven't ended yet have no
transcript (returns
error: "no transcript available") - Age-restricted videos require a logged-in session β this Actor is for public content only; for restricted videos, see our other YouTube Actors
- Rate limits: YouTube tolerates ~50β100 transcript requests per
minute per IP. The default
concurrency=10stays safely below this. For massive batches (>10K videos), consider splitting into multiple runs or contacting us for proxy-rotation guidance
FAQ
Q: Do I need a YouTube API key? No. This Actor uses YouTube's public transcript endpoint, which doesn't require API authentication.
Q: Can I get transcripts in multiple languages for the same video?
Currently the Actor returns one transcript per video (the best match
for your preferred_languages priority). To get multiple languages,
run the same videoUrls list with different preferred_languages
configurations.
Q: How accurate are auto-generated transcripts? For clear English speech, YouTube's auto-captions are 85β95% accurate. For accented, technical, or noisy content, accuracy drops to 60β80%. Manual transcripts (when available) are typically 95%+ accurate.
Q: Can I download the SRT/VTT file?
This Actor returns clean text + per-segment data. If you need SRT/VTT
format, you can reconstruct it from segments_data[] (each item has
start, duration, text). Open an issue if you'd like native SRT
output added.
Q: What about YouTube Shorts? Yes, Shorts work the same as regular videos β paste the Short URL and it'll be transcribed if a transcript exists.
Q: Will this work for private/unlisted videos? No. This Actor only handles publicly accessible videos. For private content, you'd need a logged-in session, which is out of scope for this free Actor.
Related Actors
- Free YouTube Channel Email Extractor β pull business emails from YouTube channels for creator outreach
- Free Spotify Podcast Catalog Scraper β pair with this for cross-platform audio content intelligence
