YouTube Transcript Scraper - Subtitles & Captions API avatar

YouTube Transcript Scraper - Subtitles & Captions API

Pricing

from $8.00 / 1,000 transcript extracteds

Go to Apify Store
YouTube Transcript Scraper - Subtitles & Captions API

YouTube Transcript Scraper - Subtitles & Captions API

Extract YouTube transcripts, subtitles and closed captions from videos, playlists and whole channels. Multi-language, SRT and VTT output. Pay only for transcripts you actually receive.

Pricing

from $8.00 / 1,000 transcript extracteds

Rating

0.0

(0)

Developer

David Chicaiza

David Chicaiza

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a month ago

Last modified

Share

YouTube Transcript Scraper

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.