YouTube Transcript Scraper avatar

YouTube Transcript Scraper

Pricing

$50.00 / 1,000 transcript extracteds

Go to Apify Store
YouTube Transcript Scraper

YouTube Transcript Scraper

Extract YouTube transcripts and subtitles from videos, playlists and whole channels. Pay only for transcripts you actually receive.

Pricing

$50.00 / 1,000 transcript extracteds

Rating

0.0

(0)

Developer

David Chicaiza

David Chicaiza

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

A stable endpoint for YouTube captions. Built to sit inside a pipeline and keep working.

The output contract

One dataset item per input video, always. Fields:

videoId, url, title, channelName, channelId, durationSeconds, viewCount, availableLanguages, language, isAutoGenerated, isTranslated, transcript[], text

transcript is an array of {start, duration, text}. text is the same content flattened. On success both are present.

The schema is additive-only. New fields may appear. Existing ones will not be renamed, retyped or removed.

Failures are data, not exceptions

A video that cannot be read never aborts the run. You get a record for it carrying an error string, so you can reconcile every input by videoId instead of diffing counts.

You are charged only for a transcript you actually receive. Videos with no captions, or that are private, age-restricted or removed, cost nothing.

Behaviour at volume

YouTube rate-limits by IP, which is what breaks naive transcript scrapers partway through a large job. Each lookup runs a three-client fallback chain (ANDROID, IOS, TVHTML5) over residential proxy, takes a fresh exit IP on every retry, and anything still failing goes through a slower recovery pass at reduced concurrency before it is written off.

Measured on-platform: 40/40 and 20/20 where a single-client fetch returns nothing. Datacenter proxy tested at 0/20, which is why residential is the default.

Input

Video URLs, playlist URLs, or channel URLs and @handles. A channel expands to its uploads. maxVideos caps the job, concurrency (1-25) tunes throughput.

Languages

languages: ["en","es"] selects a preferred track and prefers human-written captions over auto-generated ones. translateTo requests a translated track instead.

Notes

Captions only: this reads YouTube's caption tracks and does not run speech-to-text, so videos with no captions cannot be transcribed.