Overview
What teams build with the YouTube API
Summaries and search over videos
Feed a talk, lecture, or interview to a language model or a search index as text, with timestamps that link back into the video.
Research across channels
Read what competitors, analysts, or creators said in their videos without watching them, and quote the exact moment.
Translation and accessibility
Pick a caption language with language=, or start from the uploader's own captions for subtitles in another format.
Official API restricted
Does the official YouTube API return transcripts?
Only for your own videos. The YouTube Data API downloads a caption track only when the signed-in user can edit the video.
captions.download needs OAuth and, in YouTube's words, "requires the user to have permission to edit the video"; anyone else gets 403 forbidden. captions.list names a video's tracks but, as its page says, does not contain the captions themselves.
Clair reads the caption tracks a public video offers to any viewer and returns one as JSON: the uploader's captions when there are any, YouTube's automatic ones otherwise. A video with no captions returns 404; Clair does not transcribe audio.
Read from these pages on October 27, 2026.
Data samples
From the page to JSON
The page the YouTube API reads, and the response it returns for the same query.
video_id
jNQXAC9IVRw
https://www.youtube.com/watch?v=jNQXAC9IVRw&hl=en&gl=US

{
"engine": "youtube",
"family": "video",
"query": {
"video_id": "jNQXAC9IVRw",
"language": null
},
"transcript": {
"language": "en",
"kind": "manual",
"text": "All right, so here we are, in front of the elephants the cool thing about these guys is that they have really... really really long trunks and that's cool (baaaaaaaaaaahhh!!) and that's pretty much all there is to say",
"segments": [
{
"start_ms": 1200,
"duration_ms": 2160,
"text": "All right, so here we are, in front of the elephants"
},
{
"start_ms": 5318,
"duration_ms": 2656,
"text": "the cool thing about these guys is that they have really..."
},
{
"start_ms": 7974,
"duration_ms": 4642,
"text": "really really long trunks"
},
{
"start_ms": 12616,
"duration_ms": 1751,
"text": "and that's cool"
},
{
"start_ms": 14421,
"duration_ms": 1312,
"text": "(baaaaaaaaaaahhh!!)"
},
{
"start_ms": 16881,
"duration_ms": 2000,
"text": "and that's pretty much all there is to say"
}
]
}
}Source page captured separately from the recorded response, so live values can differ.
Code
Integrate in minutes
One host, one Bearer key for every Clair API. Each call returns JSON with the same envelope, so a second API is a new path, not a new client.
curl -G "https://api.clair.im/v1/youtube/transcript?video_id=jNQXAC9IVRw" \ -H "Authorization: Bearer YOUR_API_KEY"
Reference
Query and response fields
video_id takes an 11-character id or any watch, shorts, embed, live, or youtu.be link. Without language, English is returned when the video has it, else its first uploaded track. A language such as pt matches a regional track such as pt-BR.
GET /v1/youtube/transcript
Authorizationheader · stringrequired
- Bearer <api_key>. Create keys under API keys.
video_idstringrequired
- The 11-character id, such as
dQw4w9WgXcQ, or a watch, shorts, embed, live, or youtu.be link. languagestring
- Caption language code, such as
en,de, orpt-BR.ptalso matchespt-BR. Default: English, else the first uploaded track.
Pricing
What can I pass as video_id?
The 11-character id, such as dQw4w9WgXcQ, or any link to the video: watch, shorts, embed, live, or youtu.be.
Which language do I get?
The one you ask for with language, such as de or pt-BR; pt also matches pt-BR. Without it, English when the video has it, else its first uploaded track. A language the video lacks returns 404 listing the ones it has.
Does it work for videos without captions?
When YouTube made automatic captions for it, yes: they come back with kind auto. A video with no captions at all returns 404: Clair does not transcribe audio.
Are private or age-restricted videos supported?
No. Only videos anyone can watch signed out.
What does the YouTube API return?
Reads the caption tracks of a public YouTube video, by id or link, and returns one track as plain text plus timed segments. The uploader’s captions come before automatic ones. Videos without captions, and languages a video does not offer, return 404 with the languages it has.
How is a request counted?
Each call is one request, and each extra page is a new call. A malformed request (400) is not counted, and a request that fails on our side (5xx) is refunded.
Is there a free tier?
Yes. The free tier is $1 of usage a month across every Clair API, with no card: about 303 YouTube API requests if it all goes here. It resets monthly, and calls stop when the balance runs out.
What happens when I use up my plan's balance?
The API returns 429 until the next period, on every plan, and nothing is billed past the balance. An upgrade starts a new month at once, and the unused balance carries over.
Does my plan cover other Clair APIs?
Yes. One plan and one key cover every Clair API, and every call spends from the same monthly balance. Your first call starts the free tier.
One plan, every API.
Your plan's price is your monthly usage balance, spent across every Clair API. Start free, no card.

Glassdoor API
Crunchbase API
Bloomberg API
Associated Press API