YouTube Transcript Scraper avatar

YouTube Transcript Scraper

Pricing

$20.00 / 1,000 transcript delivereds

Go to Apify Store
YouTube Transcript Scraper

YouTube Transcript Scraper

Get transcripts and subtitles from YouTube videos. Charges only for transcripts it actually delivers.

Pricing

$20.00 / 1,000 transcript delivereds

Rating

0.0

(0)

Developer

munin

munin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Get the transcript of any YouTube video that has subtitles — as plain text, timestamped segments, SRT or WebVTT. Built for feeding video content into LLMs, RAG pipelines, summarizers and search indexes.

You are charged $0.02 for each transcript actually delivered. No charge for starting the run. No charge for videos that turn out to have no subtitles, that are private, or that fail. If a run returns nothing, it costs nothing.

Why this one

Most YouTube transcript scrapers use a single extraction path. YouTube has been tightening that path through 2025 and 2026, which is why published failure rates in this category sit around 11%. This Actor tries three paths per video, in order of cost:

  1. YouTube's own player API through residential IPs
  2. The video watch page
  3. A real browser session, for the videos the first two cannot reach

One video failing never fails the run. Every video comes back with either a transcript or a specific reason.

Input

FieldWhat it does
videoUrlsVideo URLs or 11-character IDs. Watch, Shorts, live and youtu.be links all work.
languagesPreferred language codes in order, e.g. ["en","es"]. Manual subtitles are preferred over auto-generated ones in the same language. Falls back to any available track.
outputFormatplain, segments, srt, vtt, or all.
includeVideoDetailsAdds title, channel, duration and view count.
maxConcurrencyVideos processed at once. Default 5.
useBrowserFallbackLeave on for maximum success rate. Turn off for the fastest possible run.
{
"videoUrls": ["https://www.youtube.com/watch?v=aircAruvnKk", "jNQXAC9IVRw"],
"languages": ["en"],
"outputFormat": "all"
}

Output

One dataset item per video.

{
"videoId": "aircAruvnKk",
"url": "https://www.youtube.com/watch?v=aircAruvnKk",
"transcriptAvailable": true,
"language": "en",
"isAutoGenerated": false,
"availableLanguages": ["en", "es", "ja"],
"segmentCount": 412,
"wordCount": 3187,
"text": "full transcript as one string",
"segments": [{ "start": 0.5, "dur": 2.2, "text": "line of speech" }],
"srt": "1\n00:00:00,500 --> 00:00:02,700\nline of speech\n",
"vtt": "WEBVTT\n\n00:00:00.500 --> 00:00:02.700\nline of speech\n",
"video": { "title": "...", "channel": "...", "durationSeconds": 1140, "viewCount": 18400000 }
}

A video without a usable transcript still produces an item, with transcriptAvailable: false and an error naming the reason — no captions, unavailable, age-restricted, or a fetch failure. These items are free.

What it does not do

  • It cannot transcribe audio. If a video has no subtitle track of any kind, there is nothing to return. Roughly speaking, most talk-based videos have at least auto-generated captions; music and very new uploads often do not.
  • It does not download video or audio.
  • It does not work on private, deleted or members-only videos.
  • Translated subtitle tracks are returned as published by YouTube; no machine translation is applied on top.

Using it from code

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('YOUR_USERNAME/youtube-transcript-scraper').call({
videoUrls: ['https://www.youtube.com/watch?v=aircAruvnKk'],
outputFormat: 'plain',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].text);

Runs work the same way over the API, on a schedule, or through any integration Apify supports.

Subtitles are public content served by YouTube to ordinary viewers. This Actor requests them the way a normal client does; it does not defeat access controls and it does not touch private data or user accounts. You are responsible for how you use the output, including any copyright that applies to the underlying video.