Free YouTube Transcript Downloader
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
SR
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
3
Monthly active users
16 days 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