YouTube Transcripts in n8n: HTTP Request Workflow Guide
How to fetch YouTube transcripts inside an n8n workflow using the HTTP Request node - a downloadable workflow JSON, batch processing multiple videos, handling rate limits, and feeding results into an AI summarizer.
00:09:00 · SEP 13, 2026
Quick answer
Download the workflow
Import this directly via n8n's Import from File option (or paste it into Import from URL):
Download workflow (.json)Set your API key
Get a key from the dashboard (100 free credits, no card required), then set it as an environment variable available to your n8n instance:
GETYOUTUBETRANSCRIPT_API_KEY=sk_live_...The imported HTTP Request node reads it via {{ $env.GETYOUTUBETRANSCRIPT_API_KEY }} in its Authorization header - don't hardcode the key directly into the workflow JSON.
How the request node is configured
The HTTP Request node calls the transcript endpoint with the video ID as a query parameter:
GET https://getyoutubetranscript.com/api/v1/transcript?v={{ $json.videoId }}
Authorization: Bearer {{ $env.GETYOUTUBETRANSCRIPT_API_KEY }}Feed a video ID into the workflow's input (or a previous node's output), and the node returns the transcript, title, author, and thumbnail as JSON at $json.data.transcript.
Processing multiple videos without tripping the rate limit
Feeding a list of video IDs straight into the HTTP Request node fires them all as fast as n8n can - fine for 5 videos, risky for 500 against a 60 req/min free-tier limit. n8n gives you two built-in ways to pace this:
- HTTP Request node → Add Option → Batching. Set Items per Batch (how many requests fire together) and Batch Interval (ms) (delay between batches). For the free plan's 60 req/min, a batch size of 5 with a 5,000ms interval keeps you comfortably under budget.
- Split In Batches + Wait node. The Split In Batches node divides your video list into chunks; a Wait node pauses between chunks before the loop continues to the next one. This is strictly sequential (no parallel burst at all), which is the safer choice if you're close to the limit or the API you're chaining downstream (e.g. an LLM summarizer) has its own throughput ceiling too.
Also set Wait Between Tries (ms) in the node's retry settings higher than your per-request budget - for a 60 req/min plan that's roughly one request per second on average, so 1,000ms+ between retries avoids immediately re-tripping the same limit on a 429.
Handling failures in a batch
When processing many videos, some will fail (private video, no captions, a transient 429). Enable Continue On Fail on the HTTP Request node so one failure doesn't halt the whole run, then add an IF node downstream to branch on the response - route successes to your summarizer and failures to a log or retry queue instead of losing the whole batch to one bad video ID.
Chain it into a summarizer
Add an AI/LLM node after the HTTP Request node and reference {{ $json.data.transcript }} as its prompt input - this turns the workflow into a full "fetch transcript → summarize" pipeline with no manual copy-paste step. For a batch run, this same node runs once per item flowing through the loop, so a 50-video batch produces 50 summaries without additional wiring.
Full endpoint reference, credits, and rate limits are in the API docs. Building an AI agent instead of an n8n automation? See the MCP server setup guide.
n8n workflow FAQs
Do I need a custom n8n node for this?
No. The API is a plain REST endpoint, so n8n's built-in HTTP Request node handles it directly - no community node install required.
How do I pass the API key securely?
Set it as an n8n environment variable (e.g. GETYOUTUBETRANSCRIPT_API_KEY) and reference it in the HTTP Request node's header field, rather than hardcoding the key into the workflow JSON.
What's the difference between the HTTP Request node's Batching option and a Split In Batches node?
HTTP Request node Batching (Items per Batch + Batch Interval) sends multiple requests in parallel per batch, spaced by the interval - faster, but risks bursting past a rate limit if the batch size is too high. Split In Batches + a Wait node processes one batch fully, pauses, then resumes for the next - slower but strictly sequential, which is safer against tight per-minute limits.
How do I avoid hitting the rate limit when processing many videos?
Set the HTTP Request node's "Wait Between Tries" retry option higher than your plan's per-request budget - for the free plan's 60 req/min (1 request/second average), pace requests at roughly 1,000ms+ apart, or lower if you're on a higher-throughput paid plan.
Can I chain this into an AI summarization step?
Yes - add an AI/LLM node (OpenAI, Anthropic, etc.) after the HTTP Request node and reference {{ $json.data.transcript }} as its input to summarize or extract information from the returned transcript.
What happens if a video has no captions or the request fails?
Enable "Continue On Fail" on the HTTP Request node if processing a batch of videos, so one bad video doesn't stop the whole run - then branch on the response status downstream (e.g. an IF node checking success) rather than letting the workflow halt.
What does each run cost?
1 credit per successful transcript fetch, same accounting as calling the REST API directly. Get 100 free credits with no card required from the dashboard.
Related
- YouTube API Quota Exceeded: Causes and Fixes
- YouTube Transcript API Rate Limit: What It Is and How to Handle 429s
- YouTube Transcript MCP Server: Setup Guide for Claude and Other AI Tools
- GetYouTubeTranscript vs TranscriptAPI
- GetYouTubeTranscript vs youtubetotranscript.com
- GetYouTubeTranscript vs youtube-transcript.io