Skip to main content
Works on watch URLs, youtu.be short links, /shorts/ paths, and m.youtube.com mobile URLs.

Request

Response

The YouTube endpoint returns the per-line timed array directly as transcript — there is no separate segments field. If you just want the text without timings, read transcript_only_text instead.

Supported URL formats

FAQ

Yes. Any public YouTube URL works — Shorts (youtube.com/shorts/…), long-form videos, live replays, mobile links, and youtu.be short links are all accepted. Just POST the full URL.
Unlisted videos work as long as you provide the full URL. Age-restricted videos that require sign-in are not supported — the API can only fetch publicly viewable captions.
Whichever caption track YouTube exposes — that covers 100+ languages for auto-captions and every language creators manually publish. The language field on the response tells you which track was returned, and captionTracks lists every available track for the video. Translation is a separate step you run after fetching.
Yes. Each item in the transcript array includes startMs, endMs, and startTimeText — build SRT/VTT, chaptered summaries, or jump-to-moment UI directly from the response. See the response schema page for an SRT generator example.
When the creator has uploaded manual captions, accuracy is essentially 100%. When only YouTube auto-captions exist, accuracy matches YouTube’s own ASR — very good for clear speech, weaker on heavy music.