Skip to content
IntroductionHow it works, guides, and what you can transcribe.
QuickstartSubmit a link, wait for the job, export the transcript. Three requests.
AuthenticationAPI keys, scopes, Idempotency-Key and X-Request-Id.
JobsCreate, wait for, list, cancel and retry jobs.
TranscriptsThe transcript object and txt, srt, vtt, json exports.
BatchesUp to 50 videos in one request.
UploadsTranscribe your own audio and video files.
WebhooksGet called when a job or batch finishes; verify the signature.
ErrorsEvery error code, what it means and what to do.
Rate limitsSubmits, jobs in progress and reads per plan; the 429 response.
Pricing and credits1 credit per caption transcript, 2 per minute of AI transcription. Plans and extra credits.
SourcesYouTube, TikTok, your files and direct links: accepted URLs and modes.
MCPFind and transcribe videos from Claude, Cursor, Windsurf or your own agent.
OpenAPI SpecificationThe OpenAPI 3.1 spec for codegen and typed clients.
Claude CodeOne command adds TranscriptDock to Claude Code.
Claude appAdd TranscriptDock as a custom connector on claude.ai, Claude Desktop or mobile.
CursorAdd TranscriptDock as an MCP server in Cursor.
WindsurfAdd TranscriptDock to Windsurf so Cascade can find and transcribe videos.
OpenClawConnect TranscriptDock to OpenClaw autonomous agents.
19 results
Compare

TranscriptDock vs youtube-transcript-api

youtube-transcript-api is a free Python library that YouTube blocks on cloud IPs. When a hosted API is worth paying for, and how to switch in a few lines.

Updated


Short answer: keep using youtube-transcript-api for scripts and notebooks on your own connection; it is free and good. Move to a hosted API when it runs on a server, because YouTube blocks most cloud IP addresses and the library then needs a paid residential proxy. A hosted API also covers TikTok and videos without captions.

Library facts were checked on October 9, 2026 against its README (version 1.2.4).

Side by side#

FeatureTranscriptDockyoutube-transcript-api
What it isHosted API and MCP serverOpen source Python library (MIT)
SourcesYouTube, TikTok, file uploads, direct media linksYouTube
Runs from the cloudYes, nothing to set upNeeds a rotating residential proxy
No captionsAI transcription on paid plansNot supported
ExportsTXT, SRT, VTT, JSONText, JSON, SRT, WebVTT formatters
TranslationPick an existing caption languageYouTube's automatic translation
Cost1 credit per transcript; 50 free every monthFree, plus proxy costs in the cloud

The cloud IP problem#

The library's README says YouTube has started blocking most IPs known to belong to cloud providers, and calls then fail with RequestBlocked or IpBlocked. The fix it suggests is a rotating residential proxy, which is a second bill and a second thing to monitor. TranscriptDock runs that part for you, and you pay per transcript instead of per gigabyte of proxy traffic.

Switching takes a few lines#

Segments come back with start and end in seconds, close to the library's snippets.

python
# before
from youtube_transcript_api import YouTubeTranscriptApi
snippets = YouTubeTranscriptApi().fetch("dQw4w9WgXcQ")
 
# after
import requests
API, H = "https://www.transcriptdock.com", {"Authorization": "Bearer td_live_YOUR_KEY"}
job = requests.post(f"{API}/v1/jobs", headers={**H, "Idempotency-Key": "yt-dQw4w9WgXcQ"},
json={"source": {"url": "https://youtu.be/dQw4w9WgXcQ"}, "mode": "captions_only"}).json()
while job["status"] not in ("succeeded", "failed", "cancelled"):
job = requests.get(f"{API}/v1/jobs/{job['id']}", params={"wait": 25}, headers=H).json()
segments = requests.get(f"{API}/v1/transcripts/{job['result_id']}", headers=H).json()["segments"]
# each segment: {"start": 0.0, "end": 2.4, "text": "..."}

Which to pick#

  • Pick the library for YouTube only, small volume, from your laptop or a home server.
  • Pick TranscriptDock for production on a cloud host, TikTok, videos without captions, subtitle exports, or giving Claude and Cursor access through MCP.

More options are in how to get a YouTube transcript.