NewMCP server live - use YouTube transcripts inside Claude Desktop & Cursor.Learn more →
Credits never expire. Not monthly, not ever.

The YouTube Transcript API
that doesn't break in production.

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.

Get Started Free →

No credit card. No subscription. See all plans. Credits never expire.

99.9% uptime · responses in under 1.5 seconds
curl
python
javascript
php
# 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 }
  ]
}
Never expire
Our credits
vs. monthly reset on Supadata
$5 entry
Lowest paid tier
vs. $9–10 elsewhere
<1.5s
Response time
native captions
100+ langs
Languages supported
auto-detect or specify
The problem

You've already tried
the free library.
It broke.

“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.

production.log - 3:14 AM
$ python app.py ← local, works fine
$ git push && railway up
Deploying to prod...
Build complete. ✓

TranscriptsDisabled:
Could not retrieve a transcript
for the video dQw4w9WgXcQ.

RequestBlocked:
YouTube is blocking requests
from this IP address.

# Client demo at 9 AM.
# You are not okay.

$ curl api.youtubetranscripts.co \
-d '{"url":"..."}'
→ {"source":"caption_auto",...} ✓
# Went to bed.
How it works

Get a YouTube transcript
in under 2 minutes.

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.

1

Sign up with email

Enter your email. Click the magic link. Your API key is on screen immediately, no credit card, no approval queue, no waiting.

100 free credits, waiting for you
2

Make your first call

Pass any public YouTube URL. Choose your language, format (segments, plain text, or SRT), and whether to enable AI fallback for videos without captions.

Response back in under 1.5 seconds
3

Ship your product

Timestamped segments, word count, balance remaining, video metadata - all in one response. Pipe it straight into your LLM, vector DB, or content pipeline.

Never worry about IP blocks again
Features

Built for developers
who ship fast.

Under 1.5 seconds

Native caption extraction is fast. You have a transcript before your UI spinner completes its first rotation.

Millisecond timestamps

Every segment returns offset_ms and duration_ms. Build transcript viewers, chapter markers, and searchable archives.

0
credits lost at month-end, ever

Credits that never expire

Buy once. Use whenever. No monthly resets, no “use it or lose it” anxiety.

AI fallback via Whisper

Video has no captions? Set ai_fallback=true. We run OpenAI Whisper automatically. 3 credits per video-minute. Response includes source: "ai_generated".

100+ languages

Auto-detect or pass an ISO 639-1 code. Every language YouTube supports.

enesfrdeptjazhkoar+94

Three output formats

Choose segments, plain text, or srt. Works as a YouTube captions API, subtitles API, or raw transcript source.

Metadata always free

Title, views, likes, duration, thumbnail — bundled with every transcript call at no extra cost. Never a separate API hit.

Works in production

Handles proxy rotation, IP management, and YouTube changes automatically. No more RequestBlocked errors on AWS, GCP, or Railway.

Use cases

What developers build
with the YouTube Transcript API.

The same API. Six completely different products.

AI · RAG

Chatbots & RAG pipelines

Feed transcripts into your vector DB. Let users ask questions about any video. Build knowledge bases from entire channels in hours.

Content

Content repurposing at scale

One 20-minute video becomes a blog post, 10 tweets, a newsletter section, and show notes. No manual copy-paste.

Research

Brand & competitor monitoring

Track what's being said about your brand across YouTube at scale. Mine transcripts for signals competitors haven't noticed.

Accessibility

Captions for uncaptioned videos

Meet ADA, WCAG, and EU accessibility mandates. AI fallback generates captions even when YouTube doesn't provide them.

SEO

Video SEO & search indexing

Search engines can't watch video. Publish the full transcript alongside each video. More text means more index surface.

Training data

AI training datasets

Process entire channels or curated playlists. Clean JSON straight into your labelling pipeline. 25 videos per batch call.

Integrations

Plug into your
existing stack.

LangChain
LlamaIndex
n8n
Make
Zapier
ActivePieces
Claude Desktop
Cursor
Windsurf
Supabase
Pinecone
Weaviate
SDKs & MCP

YouTube Transcript API
in the language you already write.

Native SDKs, MCP server, and no-code connectors, all from one API key.

python - pip install youtubetranscripts
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
javascript / typescript - npm install youtubetranscripts
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
php - composer require youtubetranscripts/client
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;
curl - works anywhere HTTP works
# 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"
Claude Desktop

Pull transcripts directly inside Claude conversations via MCP

Cursor

Transcribe YouTube from your code editor, no context switching

Windsurf / Zed

MCP server installs in under 30 seconds

Comparison

Why developers
switch to us.

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.

ProviderCredits expire?AI fallbackNo subscriptionEntry priceWorks 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 libraryN/A - free$0 Blocked by cloud IPs
Pricing

Buy once.
Use forever.

No subscriptions. No resets. No auto-charge. Credits stack - buy multiple packs and balances combine.

Credits never expire
Packs stack and combine
No subscription ever
Failed requests = 0 credits
Free forever
Trial
$0
100 credits
no card needed
Never expire on active accounts
  • 100 real API calls
  • Native captions only
  • Full dashboard access
  • AI fallback (Whisper)
  • Batch API
Starter
$5
300 credits
$16.67 per 1,000
Never expire
  • 300 transcripts
  • Native captions
  • Full dashboard
  • AI fallback
  • Batch API
Basic
$19
2,000 credits
$9.50 per 1,000
Never expire
  • 2,000 transcripts
  • Native + AI fallback
  • Python & JS SDKs
  • MCP server access
  • Batch API
Most popular
Pro
$59
10,000 credits
$5.90 per 1,000
Never expire
  • 10,000 transcripts
  • Native + AI fallback
  • Batch API (25 videos)
  • Priority support
  • 99.5% uptime SLA
Growth
$149
40,000 credits
$3.73 per 1,000
Never expire
  • 40,000 transcripts
  • Native + AI fallback
  • Batch API (25 videos)
  • Priority + Slack support
  • 99.5% uptime SLA
Scale
$250
100,000 credits
$2.50 per 1,000
Never expire
  • 100,000 transcripts
  • Native + AI fallback
  • Batch API (25 videos)
  • Dedicated Slack channel
  • 99.9% uptime SLA
📄
1 credit = 1 transcript when the video has native captions. Covers ~85% of YouTube.
🤖
AI fallback = 3 credits/minute via Whisper when no captions exist. A 10-min video = 30 credits.
🎁
Metadata always free. Title, views, likes, duration, thumbnail, bundled with every call.
🛡️
Failed requests cost nothing. Credits are restored automatically if we fail for any reason.
FAQ

Everything you
need to know.

How do I use the YouTube Transcript API with Python?+
Install with 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.
Do YouTube Transcript API credits really never expire?+
Yes. Paid pack credits are permanent, no expiry under any conditions. Unlike Supadata (monthly reset) and TranscriptAPI.com (end-of-period expiry), your balance is a permanent asset you spend at your own pace. The only exception: the free-tier 100 credits are forfeited after 180 days of complete account inactivity.
What happens when a YouTube video has no captions?+
On paid plans, set 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.
Is there a YouTube Transcript API for JavaScript / TypeScript?+
Yes. Install with 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.
Is there a free YouTube Transcript API?+
Yes. YouTubeTranscripts.co offers a free YouTube Transcript API tier — your first 100 credits are completely free with no credit card. These never expire on active accounts. Paid packs start at $5 for 300 credits, and those never expire either. There is no subscription, no monthly fee, no auto-charge of any kind.
How is this different from the open-source youtube-transcript-api?+
The open-source library works perfectly on localhost. The moment it hits a cloud provider - AWS, GCP, Railway, Render, Vercel - YouTube sees the cloud IP and blocks it with a TranscriptsDisabled or RequestBlocked error. YouTubeTranscripts.co handles proxy rotation, IP management, and YouTube API changes automatically. Your production app never breaks.
How fast is the API? What are the rate limits?+
Videos with native captions respond in under 1.5 seconds. AI-generated transcripts via Whisper take 15–45 seconds depending on video duration. Rate limits: free tier (2 req/sec), Starter and Basic (10 req/sec), Pro and above (30 req/sec). All responses include balance_remaining. You never need a separate balance-check call.
Can I stack multiple credit packs?+
Yes. Packs stack. If you have 500 credits remaining and buy a Pro pack (10,000 credits), your new balance is 10,500. Credits from different packs are pooled into a single balance. There is no cap on how many packs you can hold.

What is a YouTube Transcript API?

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:

  • Building RAG (Retrieval-Augmented Generation) pipelines from YouTube content
  • Content repurposing - video to blog post, newsletter, or social thread
  • Brand and competitor monitoring across YouTube at scale
  • AI training dataset creation from video content
  • Accessibility compliance - generating captions for ADA and WCAG requirements
  • Video SEO - publishing full transcripts to improve search indexing

YouTube Transcript API: Python quick start

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.

pip install youtubetranscripts from youtubetranscripts import Client client = Client(api_key="yt_your_api_key") # 1 credit - native captions result = client.transcript( url="https://youtube.com/watch?v=VIDEO_ID" ) # Plain text text = " ".join(s.text for s in result.content) # With millisecond timestamps for seg in result.content: print(f"{seg.offset_ms}ms: {seg.text}") # AI fallback for uncaptioned videos - 3 credits/min result = client.transcript( url=url, ai_fallback=True ) print(result.source) # "ai_generated"

The response includes balance_remaining in every call. You never need a separate balance endpoint. Full API reference at docs.youtubetranscripts.co.

Start in the next
two minutes.

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.

James Chen
James Chen|Senior API Engineer
8 min read

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.

How to Get a YouTube Transcript in 3 Steps

1

Paste any YouTube video URL

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.

2

Select your language and format

Choose from 100+ languages. Pick your output format: plain text, timestamps, SRT subtitles, or structured JSON for developers.

3

Get your transcript instantly

Your full transcript appears in under 1.5 seconds. Copy to clipboard, download as a file, or access via our REST API.

How It Works

🔗

Paste URL

Any YouTube video link

We Extract

Captions or AI transcription

📄

Get Transcript

Text, SRT, VTT, or JSON

Why YouTubeTranscripts.co Is the Fastest Way to Get Transcripts

Instant Extraction (<1.5s)

Videos with native captions return in under 1.5 seconds. No waiting, no queue.

AI Fallback (Whisper)

Videos without captions get AI-transcribed via OpenAI Whisper with 95%+ accuracy.

100+ Languages

Auto-detect or specify language. Works with English, Spanish, Japanese, Arabic, Hindi, and 100+ more.

Multiple Output Formats

Plain text, timestamped segments, SRT subtitle files, VTT, or structured JSON.

Developer API + SDKs

REST API with Python, JavaScript, and PHP SDKs. Batch process up to 25 videos per request.

No Signup Required

Use the web tool for free without creating an account. API access starts with 150 free requests.

YouTube Transcript Output Formats

YouTubeTranscripts.co supports four output formats. Each serves a different use case — from quick reading to programmatic processing.

FormatBest ForExample
Plain TextReading, blog posts, study notesNever gonna give you up...
TimestampsVideo navigation, quote verification[0:18] Never gonna give you up
SRTVideo editing, subtitle overlays1\n00:00:18,400 --> 00:00:20,440\nNever gonna give you up
JSONDevelopers, API integrations, RAG pipelines{"text": "Never gonna give you up", "offset_ms": 18400}

API Quick Start

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"}'
api.youtubetranscripts.co
GET/v1/transcript?url=youtube.com/watch?v=dQw4w9WgXcQ
200 OK1.2s
{
  "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 }
  ]
}

Use Cases for YouTube Transcripts

YouTube transcripts power workflows across content creation, research, AI development, and accessibility.

AI & RAG Pipelines

Feed transcripts into LangChain, LlamaIndex, or custom RAG systems to build Q&A bots over video content.

Content Repurposing

Turn YouTube videos into blog posts, social media threads, newsletters, and podcast show notes.

SEO & Keyword Research

Mine competitor videos for keywords, content gaps, and topic ideas.

Academic Research

Build text corpora from video interviews, lectures, and conferences for qualitative analysis.

Accessibility

Provide text versions of video content for hearing-impaired users and screen readers.

Language Learning

Read along with foreign-language videos. Extract vocabulary and practice pronunciation.

YouTubeTranscripts.co vs Competitors

See how we compare to the most popular YouTube transcript tools on the market.

FeatureYouTubeTranscripts.coNoteGPTSupadata
Free tier150 API + unlimited webLimited100 requests
API + SDKsPython, JS, PHPNoPython, JS
AI fallbackYes (Whisper)YesYes
Batch processing25 videos/requestNoYes
Response time<1.5s~2s
Feature
YouTubeTranscripts.co
Tactiq
Free tier
150 API requests
Limited
API access
AI fallback (Whisper)
Batch (25 videos)
Response time
<1.5s
Output formats
Text, SRT, VTT, JSON
Text only
Languages
100+
50+
Works without extension

Frequently Asked Questions

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.