Free YouTube Transcript Downloader avatar

Free YouTube Transcript Downloader

Pricing

$5.00 / 1,000 video transcripts

Go to Apify Store
Free YouTube Transcript Downloader

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

SR

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

3

Monthly active users

16 days ago

Last modified

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:

  1. Parses the video ID (accepts full URLs, short URLs, or raw 11-char IDs)
  2. Lists all available transcripts for that video
  3. Picks the best match based on your preferred_languages order and the prefer_manual flag
  4. Falls back to auto-generated captions if no manual transcript exists in your preferred language
  5. Returns the transcript joined as a single string + optional per-segment timing array

Input

FieldDefaultDescription
videoUrlsrequiredArray 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_manualtrueWhen both manual and auto-generated transcripts exist, prefer manual (higher accuracy). Set to false if you only want auto-generated
include_segmentsfalseIf true, include the full segments_data[] array with start/duration per line. If false, only the joined transcript text + metadata (smaller payload, faster)
concurrency10Concurrent 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"
). You're not charged for these.

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=true to 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=10 stays 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.