BulkTranscripts

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.

REST API · MCP server · Agent skill · Auth · Credits · Errors · OpenAPI

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.

Press Send — no key, no signup.
// 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"

The X-License-Key header (used by the web app) is accepted too. Keyless requests draw from the free per-IP allowance.

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:

OperationCost
Transcript — not yet cached1 credit
Transcript — cachedfree, served in milliseconds
Search / channel videos / playlist videos1 credit
Latest uploads (RSS)free
Account / balancefree
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).

GET/api/v1/transcript 1 credit · cached = free

Full 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
videoYouTube URL, youtu.be link, Shorts URL, or bare 11-char video id. TikTok video URLs work too.
languagePreferred caption language(s), comma-separated. Default en; falls back to whatever the video has.
formatjson (default) or txt, md, srt, vtt, csv, ai to get the rendered file instead of JSON.
segments0 to omit the segment array from JSON (smaller responses).
timestamps1 to include timestamps in txt/md output.
fresh1 to bypass the cache and re-extract (charges a credit).
GET/api/v1/channel/videos 1 credit

List 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.
limitMax videos, 1–1,000. Default 100.
GET/api/v1/channel/latest free

A 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.
GET/api/v1/playlist/videos 1 credit

Every video in a playlist, in playlist order — courses stay in sequence.

curl "https://bulktranscripts.co/api/v1/playlist/videos?playlist=PLAYLIST_ID"
Parameter
playlistPlaylist URL or bare id (the list= value).
limitMax videos, 1–1,000. Default 100.
GET/api/v1/account free

Your 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

With a license key:

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

Step-by-step guides with screenshots-level detail: Claude Code · Codex · Cursor · ChatGPT · VS Code · n8n · Make

Tools exposed

ToolWhat it does
get_transcriptFull transcript + metadata for one video (1 credit, cached = free)
get_transcriptsBatch: up to 20 videos in one call
search_youtubeSearch videos, channels, or playlists by keyword (1 credit)
search_channelSearch inside one channel's uploads (1 credit)
get_channel_videosList a channel's videos, up to 1,000 (1 credit)
get_playlist_videosList a playlist in order (1 credit)
get_latest_videosNewest uploads from a channel (free)

Try asking: "Summarize this video: [URL]" · "What did @TED upload this week?" · "Get transcripts for every video in this playlist and build study notes."

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

Set BULKTRANSCRIPTS_API_KEY in your environment once you have a license key. The skill source lives at /skill.md and on GitHub; capabilities, example prompts, and per-agent notes are on the agent skill page.

Errors

Errors are JSON with a stable code you can branch on:

{
  "error": {"code": "no_transcript", "message": "No captions available for this video..."}
}
HTTPCodeMeaning
400invalid_inputBad URL, id, or parameter.
401invalid_api_keyThe Bearer key is not a valid license key.
402out_of_creditsBalance empty — buy or top up a pack.
404no_transcriptThe video has no captions at all. Not charged.
400resolution_failedVideo/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.