All guides

How to scrape YouTube Transcript Extractor

Get YouTube transcripts and subtitles from videos, Shorts, channels, playlists or searches as plain text, timed segments, SRT or VTT, with title, channel, views, duration and caption languages. Pick languages, manual or auto. No login, no API key.

Open YouTube Transcript Extractor on Apify

Get the transcript of any YouTube video, or of every video on a channel, playlist or search, as plain text, timed segments, SRT or WebVTT. Each row also has the title, channel, views, duration, description and the full list of caption languages. You choose the language and whether to take human or auto-generated captions. You don't need a login or an API key, and you only pay for videos that actually return a transcript.

What it outputs

One row per video:

Example input

{
  "startUrls": [{ "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" }],
  "languages": ["en"],
  "outputFormats": ["text", "segments"]
}

Sample output

{
  "videoId": "dQw4w9WgXcQ",
  "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
  "channelName": "Rick Astley",
  "channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
  "durationSeconds": 213,
  "viewCount": 1826323732,
  "status": "ok",
  "language": "en",
  "languageName": "English",
  "isAutoGenerated": false,
  "isTranslated": false,
  "availableLanguages": [{ "languageCode": "en", "name": "English", "isAutoGenerated": false }, { "languageCode": "ja", "name": "Japanese", "isAutoGenerated": false }],
  "wordCount": 487,
  "segmentCount": 61,
  "transcript": "[♪♪♪] ♪ We're no strangers to love ♪ ♪ You know the rules and so do I ♪ ...",
  "segments": [{ "start": 1.36, "duration": 1.68, "end": 3.04, "text": "[♪♪♪]" }],
  "srt": "1\n00:00:18,640 --> 00:00:21,880\nWe're no strangers to love\n...",
  "scrapedAt": "2026-10-13T23:50:00.000Z"
}

Sample taken from the actor's README; values shown as placeholders there are placeholders.

FAQ

Does it work on videos without subtitles?

Most videos have auto-generated captions, and those work. A video with no captions at all (YouTube made none) returns no_transcript and is free. The actor does not run its own speech-to-text.

Which language do I get?

It tries your languages in order, preferring human-made captions. If none of them exist and fallbackToAnyLanguage is on, you get the video's own captions, and languageMatch says fallback.

Is translation reliable?

It uses YouTube's own machine translation, and YouTube often rate-limits it. When YouTube refuses, the row contains the original-language transcript plus a translationError, at the same price. For reliable translations, translate the transcript text yourself.

Can I get SRT or VTT files?

Yes. Add srt or vtt to outputFormats; each row then carries the full subtitle file as text.

Do I need a proxy?

No, not for normal runs. If YouTube starts refusing requests, the run switches to Apify residential proxy on its own. Turn autoProxyFallback off to prevent this.

Is this legal?

The actor reads public captions only. Transcripts are the creators' content, so you are responsible for using them in line with YouTube's terms and copyright law.

Something missing or broken?

Open an issue on the Issues tab with the run URL and we will reply there.

Where do I run it?

On Apify: https://apify.com/transparent_meteorite/youtube-transcript-extractor. Check the Pricing tab there for current prices.

Try YouTube Transcript Extractor on Apify