YouTube Transcript API

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
bash
curl "https://transcriptfetch.com/api/v1/transcripts/video" \
  -H "Authorization: Bearer $TRANSCRIPTFETCH_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "video": "https://youtu.be/dQw4w9WgXcQ" }'
json
{
  "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 }
}
Comparison01

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.

FeatureTranscriptFetchPython youtube-transcript-apiYouTube Data API
TypeREST API (any language)Python library onlyGoogle Cloud API
SetupGet an API key, make a requestpip install, Python requiredGCP project, OAuth, quota setup
AI fallbackWhisper-class transcription when no captions existFails with an errorNot available
Blocks & proxiesHandled for you — rotating infrastructureYour IP, blocked at scaleN/A
TimestampsPer-segment start + durationPer-segment timestampsNot available via captions
BatchUp to 50 videos per callManual loops10,000 units/day hard cap
Channels, playlists & searchBuilt in, paginatedNot includedSeparate, quota-heavy calls
MCP serverYes — Claude, Cursor & moreNoNo
SDKsPython & JavaScript/TypeScriptPython onlyGoogle client libraries
AI fallback02

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.

TranscriptFetchMost tools
Video has no captionsTranscribed with AI speech-to-textRequest fails silently
API changes neededNone — same video endpointSeparate fallback logic
Extra costCharged only on a successful transcriptPremium tier or unavailable
Blocks & rate limitsHandled by our infrastructureYour problem to solve
Built for developers03

Cached and captioned videos return in well under a second.

One predictable envelope — text plus timestamped segments.

Batch endpoint and concurrent jobs with no hard daily cap.

Rotating infrastructure fetches through IP blocks and rate limits.

OpenAPI spec, SDKs, and copy-paste examples for every endpoint.

Start free, then one credit per successful fetch. No per-character billing.

Use cases04
  • AI chatbots and agents
  • Content repurposing tools
  • Brand & mention monitoring
  • Research dashboards
  • Research and data mining
  • Topic & trend detection
  • Competitive analysis
  • Search indexing
  • Retrieval-augmented generation (RAG)
  • Fine-tuning datasets
  • Sentiment analysis pipelines
  • Video summarization
Code examples05

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.

Native captions when available
AI transcription fallback when no captions exist
Per-segment timestamps (start + duration)
Transcripts in the languages YouTube provides
Batch endpoint for up to 50 videos per call
Plain text and segmented JSON in one response
Channels, playlists, and keyword search
MCP server + Python & JavaScript SDKs
curl https://transcriptfetch.com/api/v1/transcripts/video \
  -H "Authorization: Bearer $TRANSCRIPTFETCH_KEY" \
  -H "Content-Type: application/json" \
  -d '{"video":"dQw4w9WgXcQ"}'

Start free with 100 credits. After that it's one credit per successful fetch — no hidden fees, no per-character billing.

View pricing
FAQ06

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.

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.

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.

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.

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.

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.

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.

Get your API key in seconds. 100 free requests, no credit card required.

YouTube Transcript API with Python & JS SDKs | TranscriptFetch