Developer API
YouTube transcript API
Extract one video or build a bulk transcript pipeline for thousands. Get clean JSON with timestamps, search, channel and playlist endpoints, plus a hosted YouTube MCP server for AI agents.
Read the API docsWhat is the BulkTranscripts YouTube transcript API?
A hosted REST API that returns clean transcript JSON for any YouTube video, plus endpoints to search YouTube, list a channel's or playlist's videos, and poll a channel's latest uploads for free. It runs on residential proxies so it is not blocked the way self-hosted scrapers are, and repeat reads of a transcript already in your own library are free. Every call needs an API key; creating one is free and includes 30 credits.
Which YouTube transcript workflow does this API fit?
BulkTranscripts is a hosted YouTube transcript API for developers and researchers who need more than a one-video downloader. Use the transcript endpoint for a list of YouTube URLs, the channel endpoint to enumerate up to 1,000 uploads, or the playlist endpoint to preserve a course or series in order. Each successful extraction returns clean text, video metadata, language, word count, and timestamped segments that can be stored as JSON or rendered as TXT, Markdown, SRT, VTT, CSV, or an AI-ready file. Search and latest-upload endpoints cover discovery and monitoring, while your own library makes repeated reads and re-exports free. For Claude, ChatGPT, Codex, Cursor, VS Code, and other MCP-capable assistants, the same capabilities are available through the hosted YouTube MCP server; automation tools such as n8n and Make call the REST API directly. Choose the REST API when your application controls batching and storage; choose MCP when an AI assistant should search YouTube, list channel videos, and retrieve transcripts as tools inside a conversation.
Your first call, right now
One GET request, one free API key, no SDK. Create the key at /app → Connect AI → API keys (Google sign-in, 30 credits, no card). You get title, channel, duration, upload date, language, the full text, clean paragraphs, and a segments array of {text, start, duration} objects.
curl "https://bulktranscripts.co/api/v1/transcript?video=https://www.youtube.com/watch?v=jNQXAC9IVRw" \
-H "Authorization: Bearer YOUR_API_KEY"What you get back
Clean JSON you can use from any language. Need a file instead? Add format=srt (or txt, md, vtt, csv, ai) and the same endpoint returns the rendered document.
{
"title": "Me at the zoo",
"channel": "jawed",
"duration": 19,
"language": "en",
"cached": true,
"word_count": 43,
"text": "All right, so here we are in front of the elephants...",
"segments": [{"text": "All right...", "start": 0.0, "duration": 5.4}],
"billing": {"remaining": 29, "creditsCharged": 1}
}More than transcripts
/api/v1/search finds videos by keyword. /api/v1/channel/videos lists up to 1,000 videos from any channel. /api/v1/playlist/videos keeps playlist order, so courses stay in sequence. /api/v1/channel/latest returns a channel's newest uploads — free, so you can poll it to trigger pipelines and only spend credits on new videos.
A shared cache makes it fast and cheap
Every transcript anyone extracts lands in a shared cache, so cache hits return in milliseconds without another network fetch. The first addition to your library costs one credit; repeat lookups and channel re-runs from your own library are free. Failed extractions are refunded automatically.
No YouTube blocks to fight
Running youtube-transcript-api or yt-dlp from a datacenter IP means bot checks, empty responses, and constant proxy babysitting. That routing is our problem: residential proxies, proof-of-origin tokens, and retries are built in, so the same request that works on your laptop works in production.
Pricing that respects side projects
Credits are one-time purchases, not a subscription: $4.99 for 200, $14.99 for 1,200, $29 for 5,000. They never expire, and credits top up the account your API key already belongs to, so nothing to re-paste. (The license key you get at checkout works as an API key too.) Signing in gets you 30 free transcripts, no card required.
How BulkTranscripts compares
| BulkTranscripts | Python library (youtube-transcript-api) | Single-video web tools | Self-hosted MCP server | |
|---|---|---|---|---|
| Whole channel or playlist in one job | Yes, up to 1,000 videos | Requires channel listing and orchestration around the library | Check the selected tool's bulk limits | Check the selected server's listing and batch tools |
| Nothing to install or run | Yes, hosted | Requires a Python environment | Yes, for browser-based tools | You operate the selected server |
| Handling extraction failures | Residential routing and retries; failures can still occur | Depends on your network and configuration | Depends on provider | Depends on server and network configuration |
| Repeat reads free | Yes, after the first addition to your library | Depends on your caching setup | Check the selected tool's billing policy | Depends on implementation |
| REST API, MCP server and agent skill | All three | Python library; integrations require additional components | Check available integrations | Check available interfaces |
| Exports | TXT, Markdown, SRT, VTT, CSV, JSON, AI-ready combined file | Check the library's supported formatters | Check supported formats | Depends on implementation |
| Price | 30 free, then one-time packs from $4.99 for 200; credits never expire | Free software, plus proxy and hosting costs | Free or subscription | Free software, plus proxy and hosting costs |
Questions
Do I need an API key?
Yes, and it is free. Sign in with Google at /app, open Connect AI → API keys, and create one: it starts with <code>bt_ak_</code> and comes with 30 free credits, no card. Credits follow the account, so buying a pack later keeps the same key working. A license key from checkout also works as an API key.
How is this different from the youtube-transcript-api Python library?
The library runs on your IP, so it gets blocked the moment you deploy to a cloud host. This is a hosted service with residential routing, retries, a shared cache, search and channel endpoints, and JSON you can use from any language.
Does it return timestamps?
Yes — every segment carries start and duration in seconds, and SRT/VTT output is timestamped by definition.
Is there an OpenAPI spec?
Yes, at /openapi.json — generate a typed client in any language, or hand it to an AI agent.