Developers
BulkTranscripts API & MCP
YouTube transcripts, search, channel and playlist listings — over a plain REST API, an MCP server for AI assistants, and an installable agent skill. No signup: start keyless on the free tier, and your license key becomes your API key when you buy credits.
Try it — live, from your browser
This calls the real production API. The default video is already in the shared cache, so the request is free and comes back in milliseconds — exactly what your users hit.
// The JSON response will appear here.
Quickstart — no key required
Every caller gets 50 free transcript credits (per public IP). This works right now, in your terminal:
curl "https://bulktranscripts.co/api/v1/transcript?video=https://www.youtube.com/watch?v=jNQXAC9IVRw"
Response:
{
"video_id": "jNQXAC9IVRw",
"title": "Me at the zoo",
"channel": "jawed",
"duration": 19,
"language": "en",
"source": "auto_caption",
"cached": true,
"word_count": 43,
"text": "All right, so here we are in front of the elephants...",
"paragraphs": ["All right, so here we are in front of the elephants..."],
"segments": [{"text": "All right, so here we are...", "start": 0.0, "duration": 5.4}],
"billing": {"enabled": true, "remaining": 24, "creditsCharged": 0}
}
Authentication
Your license key is your API key. Buy any credit pack and the key is issued instantly at checkout — there is no account, password, or dashboard to set up. Send it as a Bearer token:
curl "https://bulktranscripts.co/api/v1/transcript?video=VIDEO_ID" \
-H "Authorization: Bearer YOUR_LICENSE_KEY"
Credits & caching
Credits are one-time purchases that never expire — no subscription. One credit buys one successful live operation; failures are never charged, and neither are cache hits:
| Operation | Cost |
|---|---|
| Transcript — not yet cached | 1 credit |
| Transcript — cached | free, served in milliseconds |
| Search / channel videos / playlist videos | 1 credit |
| Latest uploads (RSS) | free |
| Account / balance | free |
| Failed extraction (no captions, video gone) | 0 — automatically refunded |
The transcript cache is shared across all callers, so popular videos are usually free and
instant. Every response carries a billing block with
creditsCharged and remaining so you can meter usage without extra
calls. Packs: $4.99 → 200 · $14.99 → 1,200 · $29 → 3,500 credits.
REST API reference
Base URL https://bulktranscripts.co. All endpoints are plain GET requests returning JSON
(machine-readable spec: /openapi.json).
/api/v1/transcript
1 credit · cached = freeFull transcript of one video (YouTube or TikTok) with metadata, clean paragraph text, and timestamped segments.
curl "https://bulktranscripts.co/api/v1/transcript?video=VIDEO_ID&format=json"
| Parameter | |
|---|---|
video | YouTube URL, youtu.be link, Shorts URL, or bare 11-char video id. TikTok video URLs work too. |
language | Preferred caption language(s), comma-separated. Default en; falls back to whatever the video has. |
format | json (default) or txt, md, srt, vtt, csv, ai to get the rendered file instead of JSON. |
segments | 0 to omit the segment array from JSON (smaller responses). |
timestamps | 1 to include timestamps in txt/md output. |
fresh | 1 to bypass the cache and re-extract (charges a credit). |
/api/v1/search
1 creditSearch YouTube for videos, channels, or playlists. Returns id, title, type, and URL per result.
curl "https://bulktranscripts.co/api/v1/search?q=machine+learning&limit=5"
| Parameter | |
|---|---|
q | Search query. |
type | video (default), channel, or playlist. |
limit | Max results, 1–50. Default 10. |
/api/v1/channel/search
1 creditSearch within one channel's uploads — find a creator's videos on a topic without listing the whole archive.
curl "https://bulktranscripts.co/api/v1/channel/search?channel=@TED&q=AI&limit=10"
| Parameter | |
|---|---|
channel | @handle, channel URL, or UC… channel id. |
q | Topic to search for within the channel. |
limit | Max results, 1–50. Default 10. |
/api/v1/channel/videos
1 creditList a channel's videos — up to 1,000 — without fetching transcripts. Feed the ids into the transcript endpoint (cached ones stay free).
curl "https://bulktranscripts.co/api/v1/channel/videos?channel=@TED&limit=100"
| Parameter | |
|---|---|
channel | @handle, channel URL, or UC… channel id. |
limit | Max videos, 1–1,000. Default 100. |
/api/v1/channel/latest
freeA channel's newest uploads (up to 15) with publish timestamps, served from YouTube's RSS feed. Free because it costs us nearly nothing — poll it for monitoring and only spend credits on what's new.
curl "https://bulktranscripts.co/api/v1/channel/latest?channel=@TED"
| Parameter | |
|---|---|
channel | @handle, channel URL, or UC… channel id. |
/api/v1/playlist/videos
1 creditEvery video in a playlist, in playlist order — courses stay in sequence.
curl "https://bulktranscripts.co/api/v1/playlist/videos?playlist=PLAYLIST_ID"
| Parameter | |
|---|---|
playlist | Playlist URL or bare id (the list= value). |
limit | Max videos, 1–1,000. Default 100. |
/api/v1/account
freeYour current credit balance and plan status for the key (or IP) making the call.
curl "https://bulktranscripts.co/api/v1/account" -H "Authorization: Bearer YOUR_LICENSE_KEY"
MCP server — YouTube for your AI assistant
Connect https://bulktranscripts.co/mcp and Claude, Cursor, ChatGPT, and 20+ other MCP clients can
fetch transcripts, search YouTube, list channels and playlists, and track new uploads — inside
the conversation. The free tier works with zero setup; add your license key for
purchased credits.
Claude Code
claude mcp add --transport http bulktranscripts https://bulktranscripts.co/mcp
claude mcp add --transport http bulktranscripts https://bulktranscripts.co/mcp \
--header "Authorization: Bearer YOUR_LICENSE_KEY"
Claude (web / desktop)
Settings → Connectors → Add custom connector → paste
https://bulktranscripts.co/mcp. No account or authorization step — it connects on the free tier
immediately. Bought credits? Paste https://bulktranscripts.co/mcp?key=YOUR_LICENSE_KEY as the
connector URL instead (the connectors UI cannot send headers).
Cursor
One-click install for Cursor, or add the universal config below
to ~/.cursor/mcp.json.
ChatGPT
Settings → Connectors → Advanced → Developer mode, then add
https://bulktranscripts.co/mcp as a new connector (no authentication → free tier). For purchased
credits use https://bulktranscripts.co/mcp?key=YOUR_LICENSE_KEY as the connector URL.
VS Code
{
"mcp": {
"servers": {
"bulktranscripts": {
"type": "http",
"url": "https://bulktranscripts.co/mcp"
}
}
}
}
Any other MCP client
{
"url": "https://bulktranscripts.co/mcp"
}
If your client cannot send headers, append the key to the URL instead:
https://bulktranscripts.co/mcp?key=YOUR_LICENSE_KEY
Tools exposed
| Tool | What it does |
|---|---|
get_transcript | Full transcript + metadata for one video (1 credit, cached = free) |
get_transcripts | Batch: up to 20 videos in one call |
search_youtube | Search videos, channels, or playlists by keyword (1 credit) |
search_channel | Search inside one channel's uploads (1 credit) |
get_channel_videos | List a channel's videos, up to 1,000 (1 credit) |
get_playlist_videos | List a playlist in order (1 credit) |
get_latest_videos | Newest uploads from a channel (free) |
Agent skill (Claude Code, Cursor & friends)
Prefer a skill over a server? One command installs a skill that teaches your agent the whole API — it works keyless on the free tier immediately:
mkdir -p ~/.claude/skills/youtube-transcripts
curl -fsSL https://bulktranscripts.co/skill.md -o ~/.claude/skills/youtube-transcripts/SKILL.md
Errors
Errors are JSON with a stable code you can branch on:
{
"error": {"code": "no_transcript", "message": "No captions available for this video..."}
}
| HTTP | Code | Meaning |
|---|---|---|
| 400 | invalid_input | Bad URL, id, or parameter. |
| 401 | invalid_api_key | The Bearer key is not a valid license key. |
| 402 | out_of_credits | Balance empty — buy or top up a pack. |
| 404 | no_transcript | The video has no captions at all. Not charged. |
| 400 | resolution_failed | Video/channel unreachable (private, removed, region-locked). Not charged. |
Fair use
Bulk jobs run behind server-side concurrency control; there is no hard rate limit on cached reads. If you are building something high-volume (100k+ transcripts/month), email us for a custom pack.