YouTube Transcript & Subtitle Scraper (SRT, VTT) avatar

YouTube Transcript & Subtitle Scraper (SRT, VTT)

Pricing

from $4.00 / 1,000 results

Go to Apify Store
YouTube Transcript & Subtitle Scraper (SRT, VTT)

YouTube Transcript & Subtitle Scraper (SRT, VTT)

Get clean, AI-ready transcripts from any YouTube video. Full text, timestamped segments, and optional chunking for RAG and LLM pipelines.

Pricing

from $4.00 / 1,000 results

Rating

0.0

(0)

Developer

Vault

Vault

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

What does YouTube Transcript Scraper do?

This Actor turns any YouTube video into clean, ready-to-use text. Paste video URLs and get back the full transcript, timestamped caption segments, and — if you want — the text pre-split into chunks sized for an LLM context window or a vector database.

It handles every common URL shape (youtube.com/watch, youtu.be, /shorts/, /embed/), resolves the video title and channel name automatically, and decodes the HTML entities that make raw caption data unusable.

Results export as JSON, CSV, Excel or HTML, and are available through the Apify API.

Why use this scraper?

  • Feed video to an LLM — summarize, extract, classify or answer questions over video content that models can't watch.
  • Build a RAG pipeline — the built-in chunking produces sentence-aligned segments ready for embedding, no post-processing needed.
  • Repurpose content — turn a webinar or podcast into a blog post, newsletter, or social thread.
  • Research and analysis — search across hundreds of videos by what was actually said.
  • Accessibility and SEO — publish readable transcripts alongside your videos.
  • Subtitle and translation workflows — timestamped segments map straight to caption formats.

How to use it

  1. Add one or more YouTube videos — full URLs or bare 11-character IDs both work.
  2. Optionally set a preferred language (en, es, de…). Leave empty for the video's default.
  3. Turn on Include timestamped segments if you need per-cue start times.
  4. Set a Chunk size (try 2000) if you're feeding an AI model. Leave 0 to skip.
  5. Click Start, then export from the Storage tab.

Input

FieldTypeDescription
videosarrayVideo URLs or IDs. Required.
languagestringTwo-letter preferred transcript language.
includeSegmentsbooleanInclude every caption cue with start time and duration.
chunkSizeintegerSplit transcript into ~N-character chunks on sentence boundaries. 0 disables.
proxyConfigurationobjectOptional proxy. Recommended for large batches — see below.
{
"videos": [
"https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"https://youtu.be/9bZkp7q19f0"
],
"includeSegments": false,
"chunkSize": 2000
}

Output

{
"videoId": "dQw4w9WgXcQ",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
"author": "Rick Astley",
"thumbnail": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg",
"language": "en",
"durationSeconds": 211,
"wordCount": 487,
"characterCount": 2089,
"transcript": "We're no strangers to love. You know the rules and so do I...",
"segments": [{ "text": "We're no strangers to love", "startSeconds": 18, "durationSeconds": 3 }],
"chunks": ["...", "..."],
"scrapedAt": "2026-08-25T00:47:12.004Z"
}

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Data fields

FieldDescription
videoId / urlCanonical ID and watch link.
title / author / thumbnailVideo title, channel name and thumbnail image.
languageLanguage of the transcript actually returned.
durationSecondsLength covered by the captions.
wordCount / characterCountUseful for estimating LLM token cost before you send it.
transcriptFull text, entities decoded, whitespace normalized.
segmentsPer-cue text with startSeconds and durationSeconds. Only when enabled.
chunksSentence-aligned chunks near your requested size. Only when chunkSize > 0.

How much does it cost?

Billed per video transcribed, so cost tracks exactly what you get. Videos without captions cost you nothing — they're reported separately, not billed as results.

Tips

  • Chunk size 2000 is a good default for most embedding models. Chunks break on sentence boundaries, never mid-word.
  • Check wordCount before piping into an LLM — it's a fast proxy for token cost.
  • Use segments to deep-link back into the video: https://youtu.be/VIDEO_ID?t=START_SECONDS.
  • Fetching many videos? Enable proxy in the input. YouTube rate-limits datacenter IP ranges, and a proxy avoids partial results on large batches.

FAQ, disclaimers, and support

Some videos returned nothing. Not every video has captions. Videos with captions disabled, private videos, and some region-locked videos have no transcript to fetch. These are listed in the FAILED_VIDEOS record in the run's key-value store, with the reason for each.

Auto-generated captions? Yes — if YouTube generated them, this Actor returns them. Accuracy depends on YouTube's speech recognition, not on this Actor.

Can it do a whole channel or playlist? Not yet. Supply individual video URLs. Open an issue if you want channel support and I'll look at adding it.

Is this legal? Captions are publicly served alongside the video. You are responsible for respecting YouTube's Terms of Service and the copyright of the underlying content in how you use transcripts.

Found a bug or want a feature? Open an issue on the Issues tab.