How do I extract my first YouTube transcript with TubeTranscript?
By TubeTranscript · Content updated
View as MarkdownTubeTranscript parses a captioned YouTube video into a semantic JSON payload in seconds via the Tier-1 Fast Path. Use the web app (no account, 10 transcripts per 24 hours; 24 with a free account), the REST API POST /api/v1/extract, or the MCP servers /api/mcp and /api/mcp/tools; the API and MCP require a Pro plan API key.
If you plan to call it from code, the REST API page shows a first request in curl, Python and JavaScript.
| Surface | Account | Limit | Best for |
|---|---|---|---|
Web app (https://tubetranscript.io) |
None required | 10 transcripts / 24 h | One-off transcripts |
REST API (POST /api/v1/extract) |
Pro API key | 1,000 requests / 24 h | Scripts, n8n, Make |
MCP servers (/api/mcp, /api/mcp/tools) |
Pro API key | 1,000 tool calls / 24 h | Claude Code, Cursor, Windsurf |
How do I extract a transcript in the web app?
Open https://tubetranscript.io, paste a YouTube link into the "Drop a YouTube link." field and submit. Accepted links include watch, youtu.be, shorts, embed and live URLs. Guests get 10 transcripts per 24 hours per IP address; a free account gets 24. Captioned videos return in seconds; videos without captions are transcribed with Whisper (guests: at most 5 per 24 hours).
- Open
https://tubetranscript.ioin a browser. - Click the "Drop a YouTube link." field.
- Paste a YouTube URL, for example
https://www.youtube.com/watch?v=jNQXAC9IVRw; pasting starts extraction. - Wait until the live progress log reports the transcript as ready.
- Click Download .txt to save the transcript.
A URL typed by hand instead of pasted starts extraction when you press Enter.
| Transcript action | Result |
|---|---|
| Download .txt | Saves the transcript as a .txt file. |
| Copy RAG JSON | Copies the timed chunks [{ start, duration, text }] to the clipboard. |
| Generate mindmap | Builds a Mermaid mindmap of the video's topics. |
| Share | Copies or shares the transcript page link. |
Who can see transcripts extracted in the web app?
Transcripts extracted by guests and free accounts are public: each becomes an indexable transcript page under /c/<channel>/<video>. Transcripts extracted by Pro teams stay private to the team. Do not submit a video through a free account if its transcript page must stay unlisted. Retention details are in Security & Rate Limits.
| Extracted by | Visibility | URL |
|---|---|---|
| Guest | Public, indexable | /c/<channel>/<video> |
| Free account | Public, indexable | /c/<channel>/<video> |
| Pro team | Private to the team | Dashboard only |
How do I get an API key?
API keys require the Pro plan. Sign in, upgrade at /pricing, then create a key at /dashboard/api. Keys start with tt_live_ followed by 32 characters and are shown exactly once, so store the key in a secret manager or environment variable such as TUBETRANSCRIPT_API_KEY immediately after creating it.
- Sign in at
https://tubetranscript.io/sign-in. - Open
https://tubetranscript.io/pricing. - Upgrade the team to the Pro plan.
- Open
https://tubetranscript.io/dashboard/api. - Create a new API key.
- Copy the key, which is shown only once.
- Store the key in the
TUBETRANSCRIPT_API_KEYenvironment variable (command below).
export TUBETRANSCRIPT_API_KEY="tt_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
How do I extract a transcript with the REST API?
Send POST https://tubetranscript.io/api/v1/extract with Authorization: Bearer <API_KEY> and a JSON body containing url. The response is a JSON envelope: success, data, error. The transcript is in data.transcript.text (plain) and data.transcript.chunks (timed). Set the client timeout to 300 seconds, because videos without captions need Whisper transcription.
- Set your HTTP client timeout to 300 seconds.
- Send the
curlrequest below. - Check that
successistruein the response. - Read the transcript from
data.transcript.chunks.
curl -X POST https://tubetranscript.io/api/v1/extract \
-H "Authorization: Bearer $TUBETRANSCRIPT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.youtube.com/watch?v=jNQXAC9IVRw"}'
{
"success": true,
"data": {
"video_id": "jNQXAC9IVRw",
"source": "captions",
"transcript": {
"text": "…",
"chunks": [{ "start": 0, "duration": 4.2, "text": "…" }]
},
"features": {}
},
"error": null
}
The full field list, AI features and error codes are in the API Reference.
What should I do when the API returns 202?
A 202 EXTRACTION_IN_PROGRESS response means the video has no captions and Whisper transcription is still running after the route's wait budget. The body contains data.job_id and the response carries Retry-After: 60. Wait that many seconds, then send the identical request again; it resumes the same job instead of transcribing twice.
- Read the
Retry-Afterheader value. - Wait that many seconds.
- Send the identical request again.
- Repeat steps 1–3 until the response status is
200.
How do I connect TubeTranscript to an AI agent?
Connect an MCP-capable client to https://tubetranscript.io/api/mcp using the Streamable HTTP transport and the header Authorization: Bearer <API_KEY>. The server exposes the get_transcript tool, which returns clean plain text for a video_url or video_id together with a job_id. To generate hooks, mindmaps or blog drafts, also register https://tubetranscript.io/api/mcp/tools and pass that job_id to its tools. A video without captions first returns status: "processing"; the agent calls get_transcript again about a minute later. Client-specific setup for Claude Code, Cursor, Windsurf and n8n is in MCP Setup.
- Get a Pro API key (see "How do I get an API key?").
- Run the
claude mcp addcommands below. - Start a new Claude Code session.
- Ask the agent for the transcript, hooks or a mindmap of a YouTube URL.
claude mcp add --transport http tubetranscript https://tubetranscript.io/api/mcp \
--header "Authorization: Bearer $TUBETRANSCRIPT_API_KEY"
claude mcp add --transport http tubetranscript-ai https://tubetranscript.io/api/mcp/tools \
--header "Authorization: Bearer $TUBETRANSCRIPT_API_KEY"