Turn YouTube videos into clean text.
A simple, performant API to turn any YouTube video into text — with per-segment timestamps, and AI-powered fallback transcription when captions don't exist.
- Fetch transcripts from any public YouTube video — clean text plus timestamped segments
- AI fallback transcription for videos with no captions — same endpoint, charged only on success
- Built for scale: batch up to 50 videos, an MCP server for AI agents, and Python & JS SDKs
No credit card required.
curl "https://transcriptfetch.com/api/v1/transcripts/video" \
-H "Authorization: Bearer $TRANSCRIPTFETCH_KEY" \
-H "Content-Type: application/json" \
-d '{ "video": "https://youtu.be/dQw4w9WgXcQ" }'{
"ok": true,
"request_id": "req_…",
"data": {
"kind": "transcript",
"video_id": "dQw4w9WgXcQ",
"title": "Example video",
"text": "We're no strangers to love …",
"segments": [
{ "start": 0.0, "duration": 3.5, "text": "We're no strangers to love" },
{ "start": 3.5, "duration": 2.8, "text": "You know the rules and so do I" }
]
},
"usage": { "credits_spent": 1, "balance": 99 }
}How TranscriptFetch compares
Not all YouTube transcript solutions are equal. Here's how the API stacks up against the popular open-source Python library and YouTube's own Data API.
| Feature | TranscriptFetch | Python youtube-transcript-api | YouTube Data API |
|---|---|---|---|
| Type | REST API (any language) | Python library only | Google Cloud API |
| Setup | Get an API key, make a request | pip install, Python required | GCP project, OAuth, quota setup |
| AI fallback | Whisper-class transcription when no captions exist | Fails with an error | Not available |
| Blocks & proxies | Handled for you — rotating infrastructure | Your IP, blocked at scale | N/A |
| Timestamps | Per-segment start + duration | Per-segment timestamps | Not available via captions |
| Batch | Up to 50 videos per call | Manual loops | 10,000 units/day hard cap |
| Channels, playlists & search | Built in, paginated | Not included | Separate, quota-heavy calls |
| MCP server | Yes — Claude, Cursor & more | No | No |
| SDKs | Python & JavaScript/TypeScript | Python only | Google client libraries |
Transcripts even when captions don't exist
Live streams, older uploads, and user-generated videos often ship with no captions — and most tools fail silently. When that happens, TranscriptFetch falls back to AI speech-to-text through the same video endpoint, so you still get usable text instead of an empty result. You're only charged when a transcript is actually delivered.
| TranscriptFetch | Most tools | |
|---|---|---|
| Video has no captions | Transcribed with AI speech-to-text | Request fails silently |
| API changes needed | None — same video endpoint | Separate fallback logic |
| Extra cost | Charged only on a successful transcript | Premium tier or unavailable |
| Blocks & rate limits | Handled by our infrastructure | Your problem to solve |
No bloated APIs. No unnecessary complexity.
Fast
Cached and captioned videos return in well under a second.
Clean JSON
One predictable envelope — text plus timestamped segments.
Scalable
Batch endpoint and concurrent jobs with no hard daily cap.
Reliable
Rotating infrastructure fetches through IP blocks and rate limits.
Well-documented
OpenAPI spec, SDKs, and copy-paste examples for every endpoint.
Affordable
Start free, then one credit per successful fetch. No per-character billing.
SaaS products
- AI chatbots and agents
- Content repurposing tools
- Brand & mention monitoring
- Research dashboards
Content analysis
- Research and data mining
- Topic & trend detection
- Competitive analysis
- Search indexing
AI & machine learning
- Retrieval-augmented generation (RAG)
- Fine-tuning datasets
- Sentiment analysis pipelines
- Video summarization
Get transcripts in seconds
No OAuth, no YouTube API key, no quota setup. Authenticate with a bearer token and send a video URL or ID — the same request shape works from cURL, Python, and JavaScript.
Pricing that scales to zero
Start free with 100 credits. After that it's one credit per successful fetch — no hidden fees, no per-character billing.
What is the TranscriptFetch YouTube Transcript API?
It is a REST API that turns any public YouTube video into clean text with timestamped segments. Send a video URL or ID with your API key and get structured JSON back — no YouTube Data API key, OAuth, or scraping required.
What happens when a video has no captions?
The video endpoint falls back to AI speech-to-text (Whisper-class models). It downloads the audio through our infrastructure, transcribes it, and returns the transcript via a follow-up job or webhook. You are only charged when a transcript is delivered successfully.
How do timestamps work?
Every successful transcript includes a segments array where each entry has start (seconds), duration (seconds), and text — plus a joined text field for the full transcript. That makes it ready for subtitles, search indexing, and RAG.
Do you support batch requests?
Yes. The batch endpoint fetches transcripts for up to 50 video IDs in a single call, running concurrently. You are charged one credit per successfully fetched transcript; failed or blocked videos are free.
Can I get transcripts for a whole channel or playlist?
Yes. Dedicated endpoints resolve a channel, playlist, or keyword search into a paginated list of videos, so you can ingest transcripts across an entire creator, course, or topic.
What SDKs and integrations are available?
Official SDKs for Python (pip install transcriptfetch-sdk) and JavaScript/TypeScript (npm install transcriptfetch), plus an MCP server so AI assistants like Claude and Cursor can fetch transcripts as a tool.
Is there a free tier?
Yes. Every new account starts with 100 free credits, no credit card required. After that it is usage-based — one credit per successful fetch — so you only pay for results.
The transcript endpoint is one call in a larger toolkit. Every endpoint below shares the same API key and response shape.
Ready to build?
Get your API key in seconds. 100 free requests, no credit card required.