One API call. Timestamped JSON. No proxy setup, no RequestBlocked errors, no credits vanishing at midnight. Extract any YouTube transcript in your language, your format. Works in Python, JavaScript, PHP, and curl.
# 1 credit, under 1.5s, no proxy setup curl https://api.youtubetranscripts.co/v1/transcript \ -H "x-api-key: yt_live_••••••••" \ -d '{"url":"https://youtube.com/watch?v=dQw4w9WgXcQ","lang":"en"}' # Response - clean JSON · ready for your pipeline { "video_id": "dQw4w9WgXcQ", "lang": "en", "source": "caption_auto", "word_count": 438, "requests_used": 1, "balance_remaining": 99, "content": [ { "text": "Never gonna give you up", "offset_ms": 18400 }, { "text": "Never gonna let you down", "offset_ms": 20440 } ] }
“Deployed to Railway Sunday night. Got RequestBlocked within the hour. Client demo Monday morning.”- Actual developer, actual Slack message
The open-source youtube-transcript-api library is brilliant on localhost. The moment it hits a cloud IP - AWS, GCP, Railway, Render, Vercel - YouTube sees it and blocks it. Every time.
So you spend a weekend on proxy rotation. Then the proxies get flagged. Then YouTube updates something and the whole thing breaks again. This is not a problem worth solving yourself.
No infrastructure to manage. No proxies to rotate. No YouTube bot detection to battle. Just a clean YouTube Transcript API that returns what you need.
Enter your email. Click the magic link. Your API key is on screen immediately, no credit card, no approval queue, no waiting.
Pass any public YouTube URL. Choose your language, format (segments, plain text, or SRT), and whether to enable AI fallback for videos without captions.
Timestamped segments, word count, balance remaining, video metadata - all in one response. Pipe it straight into your LLM, vector DB, or content pipeline.
Native caption extraction is fast. You have a transcript before your UI spinner completes its first rotation.
Every segment returns offset_ms and duration_ms. Build transcript viewers, chapter markers, and searchable archives.
Buy once. Use whenever. No monthly resets, no “use it or lose it” anxiety.
Video has no captions? Set ai_fallback=true. We run OpenAI Whisper automatically. 3 credits per video-minute. Response includes source: "ai_generated".
Auto-detect or pass an ISO 639-1 code. Every language YouTube supports.
Choose segments, plain text, or srt. Works as a YouTube captions API, subtitles API, or raw transcript source.
Title, views, likes, duration, thumbnail — bundled with every transcript call at no extra cost. Never a separate API hit.
Handles proxy rotation, IP management, and YouTube changes automatically. No more RequestBlocked errors on AWS, GCP, or Railway.
The same API. Six completely different products.
Feed transcripts into your vector DB. Let users ask questions about any video. Build knowledge bases from entire channels in hours.
One 20-minute video becomes a blog post, 10 tweets, a newsletter section, and show notes. No manual copy-paste.
Track what's being said about your brand across YouTube at scale. Mine transcripts for signals competitors haven't noticed.
Meet ADA, WCAG, and EU accessibility mandates. AI fallback generates captions even when YouTube doesn't provide them.
Search engines can't watch video. Publish the full transcript alongside each video. More text means more index surface.
Process entire channels or curated playlists. Clean JSON straight into your labelling pipeline. 25 videos per batch call.
Native SDKs, MCP server, and no-code connectors, all from one API key.
from youtubetranscripts import Client client = Client(api_key="yt_your_key") # Native captions - 1 credit result = client.transcript( url="https://youtube.com/watch?v=VIDEO_ID", lang="en", format="segments" ) # Full text string text = " ".join(s.text for s in result.content) # Timestamped iteration for seg in result.content: print(f"{seg.offset_ms}ms → {seg.text}") # AI fallback - 3 credits/min, no captions needed result = client.transcript(url=url, ai_fallback=True) print(result.source) # "ai_generated" print(result.balance_remaining) # credits left
import { Client } from 'youtubetranscripts' const client = new Client({ apiKey: 'yt_your_key' }) // 1 credit - native captions const result = await client.transcript({ url: 'https://youtube.com/watch?v=VIDEO_ID', lang: 'en', format: 'segments', aiFallback: true // auto Whisper if no captions }) // Full text const text = result.content.map(s => s.text).join(' ') // TypeScript - full type safety on response const { content, source, balance_remaining, word_count } = result
use YouTubeTranscripts\Client; $client = new Client(['api_key' => 'yt_your_key']); $result = $client->transcript([ 'url' => 'https://youtube.com/watch?v=VIDEO_ID', 'lang' => 'en', 'format' => 'plain', ]); // Full transcript text echo $result->content; // Credits remaining echo $result->balance_remaining;
# Single transcript curl https://api.youtubetranscripts.co/v1/transcript \ -H "x-api-key: yt_your_key" \ -d '{"url":"https://youtube.com/watch?v=VIDEO_ID"}' # Batch - 25 videos per call (Pro pack and above) curl https://api.youtubetranscripts.co/v1/transcript/batch \ -H "x-api-key: yt_your_key" \ -d '{"urls":["ID_1","ID_2","ID_3"]}' # Check balance curl https://api.youtubetranscripts.co/v1/account/balance \ -H "x-api-key: yt_your_key"
Pull transcripts directly inside Claude conversations via MCP
Transcribe YouTube from your code editor, no context switching
MCP server installs in under 30 seconds
The only YouTube Transcript API with never-expire credits, AI fallback, and no subscription. Get YouTube transcripts in production without IP blocks or broken scrapers.
| Provider | Credits expire? | AI fallback | No subscription | Entry price | Works in production? |
|---|---|---|---|---|---|
| YouTubeTranscripts.co us | ✓ Never expire | ✓ Whisper | ✓ Pay once | $5 for 300 | ✓ Always |
| Supadata | ⚠ Monthly reset | ✓ | ✗ Sub only | $5/mo → 300 | ⚠ Intermittent |
| ScrapeCreators | ✓ Never expire | ✓ | ✓ | $10 for 1,000 | ✓ |
| TranscriptAPI.com | ⚠ End of period | ✗ | ✗ Sub only | ~$10/mo | ✓ |
| Transcribr.io | ⚠ 6-month limit | ✗ | ✓ | $9 for 500 | ✗ |
| Open-source library | N/A - free | ✗ | ✓ | $0 | ✗ Blocked by cloud IPs |
No subscriptions. No resets. No auto-charge. Credits stack - buy multiple packs and balances combine.
pip install youtubetranscripts. Initialise a Client with your API key and call client.transcript(url='...'). The response includes .content (list of segments with text, offset_ms, duration_ms), .lang, .source, and .balance_remaining. Full docs with examples at docs.youtubetranscripts.co/python.ai_fallback=true. We download the audio and transcribe it with OpenAI Whisper. Cost: 3 credits per video-minute. A 10-minute video costs 30 credits. The response includes source: "ai_generated" so you always know which path ran. On the free tier, videos without captions return HTTP 422 with a clear upgrade message.npm install youtubetranscripts. Full TypeScript types, Promise-based async/await, works in Node.js 18+, Bun, and Deno. MCP server also available for Claude Desktop, Cursor, and Windsurf - use YouTube transcripts inside your AI assistant without any HTTP calls.balance_remaining. You never need a separate balance-check call.A YouTube Transcript API is a programmatic interface for extracting the text content of YouTube videos: auto-generated captions, manually uploaded subtitles, and AI-generated transcriptions for uncaptioned videos. It is also commonly referred to as a YouTube captions API or YouTube subtitles API — all three terms describe the same underlying capability. YouTube's official Data API v3 does not expose transcripts to third-party developers, so every service in this category works by accessing YouTube's public caption infrastructure directly.
The key differences between providers are: reliability in cloud environments, pricing model, and what happens when a video has no captions. The open-source youtube-transcript-api Python library is the most popular starting point, but it fails consistently when deployed to cloud providers because YouTube blocks their IP ranges.
Common production use cases include:
The YouTubeTranscripts.co Python SDK is the fastest way to get YouTube transcripts in production. Install once, make one function call, get structured data back with timestamps and metadata included.
The response includes balance_remaining in every call. You never need a separate balance endpoint. Full API reference at docs.youtubetranscripts.co.
100 free credits. No card. No subscription. Credits that actually stay in your account.
Get Started Free →No credit card. No subscription. Free credits never expire.
A YouTube transcript is the complete text version of a video's spoken audio, including timestamps for every segment. YouTubeTranscripts.co extracts transcripts from any YouTube video using official captions, auto-generated subtitles, or AI-powered transcription via Whisper. Over 1 million people search for YouTube transcripts every month — this page gives you the fastest way to get one.
Copy the URL from your browser or the YouTube app. We accept all YouTube URL formats including youtu.be short links, youtube.com/watch, and playlist URLs.
Choose from 100+ languages. Pick your output format: plain text, timestamps, SRT subtitles, or structured JSON for developers.
Your full transcript appears in under 1.5 seconds. Copy to clipboard, download as a file, or access via our REST API.
Paste URL
Any YouTube video link
We Extract
Captions or AI transcription
Get Transcript
Text, SRT, VTT, or JSON
Videos with native captions return in under 1.5 seconds. No waiting, no queue.
Videos without captions get AI-transcribed via OpenAI Whisper with 95%+ accuracy.
Auto-detect or specify language. Works with English, Spanish, Japanese, Arabic, Hindi, and 100+ more.
Plain text, timestamped segments, SRT subtitle files, VTT, or structured JSON.
REST API with Python, JavaScript, and PHP SDKs. Batch process up to 25 videos per request.
Use the web tool for free without creating an account. API access starts with 150 free requests.
YouTubeTranscripts.co supports four output formats. Each serves a different use case — from quick reading to programmatic processing.
| Format | Best For | Example |
|---|---|---|
| Plain Text | Reading, blog posts, study notes | Never gonna give you up... |
| Timestamps | Video navigation, quote verification | [0:18] Never gonna give you up |
| SRT | Video editing, subtitle overlays | 1\n00:00:18,400 --> 00:00:20,440\nNever gonna give you up |
| JSON | Developers, API integrations, RAG pipelines | {"text": "Never gonna give you up", "offset_ms": 18400} |
Get transcripts programmatically with a single API call. 150 free requests, no credit card required.
curl "https://api.youtubetranscripts.co/v1/transcript" \
-H "x-api-key: YOUR_API_KEY" \
-d '{"url": "https://youtube.com/watch?v=VIDEO_ID"}'/v1/transcript?url=youtube.com/watch?v=dQw4w9WgXcQ{
"video_id": "dQw4w9WgXcQ",
"lang": "en",
"source": "caption_auto",
"word_count": 438,
"requests_used": 1,
"balance_remaining": 149,
"content": [
{ "text": "Never gonna give you up", "offset_ms": 18400 },
{ "text": "Never gonna let you down", "offset_ms": 20440 },
{ "text": "Never gonna run around", "offset_ms": 22100 },
{ "text": "and desert you", "offset_ms": 23800 }
]
}YouTube transcripts power workflows across content creation, research, AI development, and accessibility.
Feed transcripts into LangChain, LlamaIndex, or custom RAG systems to build Q&A bots over video content.
Turn YouTube videos into blog posts, social media threads, newsletters, and podcast show notes.
Mine competitor videos for keywords, content gaps, and topic ideas.
Build text corpora from video interviews, lectures, and conferences for qualitative analysis.
Provide text versions of video content for hearing-impaired users and screen readers.
Read along with foreign-language videos. Extract vocabulary and practice pronunciation.
See how we compare to the most popular YouTube transcript tools on the market.
| Feature | YouTubeTranscripts.co | NoteGPT | Supadata |
|---|---|---|---|
| Free tier | 150 API + unlimited web | Limited | 100 requests |
| API + SDKs | Python, JS, PHP | No | Python, JS |
| AI fallback | Yes (Whisper) | Yes | Yes |
| Batch processing | 25 videos/request | No | Yes |
| Response time | <1.5s | — | ~2s |
A YouTube transcript is the complete written text of everything spoken in a YouTube video, with timestamps for each segment. Transcripts come from three sources: manual captions uploaded by the creator, auto-generated captions from YouTube's speech recognition, or AI-generated transcription from tools like YouTubeTranscripts.co.
Paste the YouTube video URL into YouTubeTranscripts.co and click 'Get Transcript'. The full text appears in under 2 seconds. You can also use YouTube's built-in transcript viewer (click the three dots under a video), but that only works for videos with captions enabled.
Yes. YouTubeTranscripts.co uses AI-powered Whisper transcription for videos that don't have captions. Set ai_fallback=true in the API, and our system will download the audio and generate an accurate transcript. Accuracy is 95%+ for clear spoken audio.
YouTubeTranscripts.co supports 100+ languages including English, Spanish, French, German, Japanese, Chinese, Korean, Arabic, Hindi, Portuguese, Russian, and many more. Language is auto-detected, or you can specify it with the lang parameter.
Yes. The web tool is free with no signup required. For API access, you get 150 free requests with no credit card. Paid plans start at $5 for 500 additional requests. Credits never expire.
Four formats: plain text (clean readable text), timestamps (text with time markers), SRT (subtitle file format for video editors), and JSON (structured data for developers and API integrations).
Yes. The API supports batch processing of up to 25 videos per request via POST /v1/transcript/batch. This is ideal for building datasets, content pipelines, or research corpora.
AI-generated transcripts via Whisper achieve 95%+ accuracy for clear spoken English. Accuracy varies by language, audio quality, and background noise. For critical applications, we recommend reviewing the output. The response includes source: 'ai_generated' so you always know which transcription method was used.
Yes. YouTubeTranscripts.co provides a REST API at api.youtubetranscripts.co with Python, JavaScript, and PHP SDKs. Authentication uses API keys via the x-api-key header. Get your free API key at youtubetranscripts.co/login.
The open-source youtube-transcript-api Python package works on localhost but gets blocked by YouTube when deployed to cloud servers (AWS, GCP, Vercel). YouTubeTranscripts.co is a hosted API that handles proxy rotation, IP management, and YouTube's anti-bot measures — your production app never breaks.
Generate transcripts with our free online tool
Convert any video to text instantly
REST API with Python, JS, and PHP SDKs
Convert video to readable text online
Extract full text from any video
Get transcripts with Python in 3 lines