Every YouTube transcript, one API call.
YouTube Transcript API with Python and JavaScript SDKs
Captions when the video has them, AI transcription when it does not, from the same request. Per-segment start times, the title and the channel come back with every fetch, so a quote can be checked against the second it was said. One credit per transcript, nothing when a fetch fails.
02:14The part everyone skips is that retrieval quality decides the answer, not the model you picked.02:21We swapped in a model twice the size and the evaluation numbers barely moved at all.02:29Then we fixed how the source documents were chunked and everything jumped in a week.02:37Most of our corpus was video, which meant most of our corpus was not searchable.02:45Transcripts with timestamps turned it into text we could actually index and cite.02:53And citations matter more than people admit, because a claim nobody can check is a liability.Reading captions is the easy part.
A library on your own IP works until you run it at volume, then it gets blocked, and it returns an error rather than a transcript on any video without captions.
Python only, running from your address. No captions means an exception you have to handle. You rent and rotate the proxies yourself, you own every break, and channels, playlists and search are not in the box.
REST from any language, with cache, then captions, then AI transcription behind one call. Blocks and rotation are ours. Batch up to 50 videos, resolve a whole channel or playlist, and pay nothing for a fetch that fails.
Who it is for, and how they use it
Three ways in, depending on how you work. Same endpoint, same credit, same response shape underneath all of them.
Engineers building a product
You need YouTube text in a pipeline, and you do not want an outage the first week you run it at real volume.
01Create a key in the dashboard, send it as a Bearer token.02POST a video URL or id to one endpoint, same shape every time.03Store the segments next to your other sources and move on.
Analysts and teams tracking a topic
You are covering a whole channel, course or category, at more hours of video than anyone can sit through.
01Resolve a channel, playlist or search into a video list.02Send up to 50 ids in one batch call.03Search the text and quote the second something was said.
Teams building with assistants
Your agent needs to read a video mid-conversation and cite it without inventing a timestamp.
01Add the MCP server once, no deploy and no glue code.02Ask in plain language, the assistant calls the tool itself.03Answers come back with the timecode attached.
One request, whichever way you build.
Write code if you want to. If you would rather not, the same fetch runs from a workflow tool or straight inside an assistant.
Call the endpoint
One POST with the URL or the video id. Same JSON every time.
Read the API reference →Drop it in a workflow
An official n8n node. Run it on a schedule or a trigger.
See the n8n node →Let an assistant do it
Connect once and Claude or ChatGPT fetches transcripts mid-chat.
Set up MCP →curl -X POST https://transcriptfetch.com/api/v1/transcripts/video \
-H "Authorization: Bearer $TRANSCRIPTFETCH_KEY" \
-d '{"video": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"}'Let the assistant fetch the video itself.
Add the MCP server once and Claude, ChatGPT or Cursor can pull a transcript mid-conversation. Same key, same credit, no glue code and nothing to deploy.
https://transcriptfetch.com/mcp
Questions people ask first
YouTube Transcript API vs the Python library vs the Data API
The Data API is worth a sentence on its own, because people assume it is the official answer: it does not return caption text for videos you do not own. captions.download requires the video owner's OAuth credentials, so for third-party videos it is not an option at any quota.
What happens when a video has no captions
What the endpoint returns
Guides from the blog
Start with 100 free credits
Paste a YouTube link or copy the curl, whichever suits you. No card, no sales call.