youtu.be short links, /shorts/ paths, and m.youtube.com mobile URLs.
Request
Response
transcript — there is no separate segments field. If you just want the text without timings, read transcript_only_text instead.
Supported URL formats
| Format | Example |
|---|---|
| Standard watch URL | https://www.youtube.com/watch?v=… |
| YouTube Shorts | https://www.youtube.com/shorts/… |
youtu.be short link | https://youtu.be/… |
| Mobile URL | https://m.youtube.com/watch?v=… |
| Live replay (with captions) | Any of the above, completed live streams |
FAQ
Does it work on YouTube Shorts?
Does it work on YouTube Shorts?
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.What about age-restricted or unlisted videos?
What about age-restricted or unlisted videos?
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.
Which languages does the API support?
Which languages does the API support?
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.Do I get timestamps I can use for subtitles?
Do I get timestamps I can use for subtitles?
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.How accurate is the transcript?
How accurate is the transcript?
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.