Hosted YouTube transcript API, or run your own

You have a scraper that works from your desk, a cloud bill, and a question: pay per transcript, or pay for proxies and the hours to keep the scraper alive. This page puts numbers on both sides and says plainly what you lose by buying.

What a hosted YouTube transcript API buys you

Reading captions from YouTube is not hard; reading them from a server, every day, is. The library does the parsing. Everything else is operations, and that is what a hosted service is selling.

  • Residential exits. YouTube blocks caption requests from cloud IP ranges. We fetch through a residential pool pinned to one region, so RequestBlocked and IpBlocked stay on our side of the line.
  • Format changes. YouTube changes the player response shape a few times a year. When it does, we fix the parser; you do not redeploy.
  • Caching. Transcripts are cached indefinitely. A second request for the same video, from any of your services, costs nothing. Search results are cached for an hour, channel and playlist listings for six.
  • Refunds and structured errors. A video with captions off, private, deleted or age-restricted returns a 404 with retryable: false and a hint, and the credit comes back. A block or an upstream failure is a 5xx, also refunded.
  • Uptime. The proxy vendor going down, the pool getting burned, the consent wall in the EU: those are our pages, not yours. GET /health is free and needs no key.
  • The rest of YouTube. Search, channel uploads, channel search and playlists sit next to /transcript, one credit each, and a free webhook for new uploads.

What it does not buy: video or audio download, comments, rich metadata, or anything that needs the channel owner's login. And captions must exist. There is no speech-to-text fallback.

The real cost of self-hosting

The line item people forget is not the compute. It is the proxy bandwidth and the hours.

A transcript fetch through youtube-transcript-api pulls the whole watch page, not just the caption track. On the wire that is roughly 300 to 400 KB per successful fetch; decompressed the page is closer to 1.5 MB. Residential proxies are metered on bandwidth, and a blocked attempt pays for the page again. The library's default of ten retries can turn one bad video into 10 to 15 MB. Budget at least 0.5 MB per transcript once retries and consent-wall redirects are counted.

Residential bandwidth pricing moves; as of September 2026 the mainstream vendors quote somewhere in the low single-digit dollars per gigabyte on small plans, falling with commitment. The numbers below use a conservative $3 to $8 per GB range so you can plug in your own quote.

Then the hours. Someone notices the error rate climb, works out whether it is a burned pool or a format change, bumps the library, redeploys, and re-runs the failed batch. Call it two to four hours in a quiet month and a day when YouTube ships a change. At a contractor rate that is the largest number on the self-hosted side.

One thing the proxy does not fix

A video with captions turned off fails through a residential proxy exactly as it fails without one, and the retry loop spends bandwidth finding that out. The blocked-errors page separates the IP-side errors from the video-side ones.

Cost at 1,000, 25,000 and 200,000 transcripts a month

Self-hosted assumes 0.5 MB of proxy traffic per transcript including retries, $3 to $8 per GB, and a small server. Hosted uses our list prices: 1 credit per transcript, cache hits free. Engineering time is listed separately because your rate is not ours to guess.

Volume / monthSelf-hosted: proxy bandwidthSelf-hosted: server + hoursTranscriptAPI
1,000~0.5 GB → $2–4, but most vendors have a minimum plan well above that$5–10 VPS + 2–4 h/month$10 top-up (2,500 credits) lasts two and a half months, so ~$4/month. Never expires.
25,000~12.5 GB → $38–100$10–20 VPS + 2–4 h/month, more in a format-change month$49/month Production plan, 25,000 credits
200,000~100 GB → $300–800$20–40 VPS, a queue, and someone who owns the error rate$249/month Enterprise (1,000,000 credits), or a one-time 200,000-credit top-up for $449

The bandwidth column alone is close to the hosted price at every row, before the hours. Where self-hosting wins is at very low volume from a residential connection, where there is no proxy at all, or when video IDs cannot leave your network. Where hosted wins is everywhere a proxy vendor is on the invoice. Repeated videos tilt it further: a summarizer that gets the same trending video from many users pays us once.

Current plans, top-ups and the translation surcharge (+1 credit per 40 segments, minimum 2) are on the pricing page. Other paid services are lined up in the YouTube transcript API comparison.

What you give up

  • Control over the fetch path. You do not choose the exit country, cannot supply cookies from your own account to read age-restricted videos, and cannot tune retries. If a video is unreadable for us, it is unreadable, and the hint will say so.
  • Per-call pricing. A credit is spent per transcript, search or listing. Failures are refunded and cache hits are free, but a bill that scales with calls is a different shape from a bill that scales with gigabytes.
  • A third party in the path. Video IDs and the transcript text pass through us. If that is not allowed where you work, self-host.
  • Narrow scope. No downloads, no comments, no descriptions or tags, no analytics, no writes. If you need those, keep the Data API alongside.

If the library is what you are replacing, the youtube-transcript-api alternative page has the side-by-side code and the honest comparison table.

Three ways in: REST, MCP, n8n

The REST API is one bearer token and a GET. Every other route is a wrapper around it.

REST
curl "https://api.transcriptapi.io/transcript?video_id=dQw4w9WgXcQ&format=srt" \
  -H "Authorization: Bearer ta_..."

# format: json (default) | txt | srt | vtt
# language=en, translate_to=de also accepted
  • REST. /transcript, /search, /channel/videos, /channel/search, /playlist, and POST /channel/subscribe for new-upload webhooks. Full parameters in the API reference.
  • MCP. An MIT-licensed server, npx -y transcriptapi-mcp locally or hosted at api.transcriptapi.io/mcp, gives claude.ai, ChatGPT, Claude Code, Cursor and VS Code five tools: transcript, search, channel videos, channel search, playlist. Setup per client is on the MCP page.
  • n8n. An HTTP Request node with the bearer header is all it takes; the n8n guide has a ready-made workflow for summarizing new uploads from a channel.
Run the numbers on your own traffic

Sign in for 20 free credits with no card, point one day of real traffic at it, and read the per-request cost in the dashboard before sizing a plan. The cache-hit rate on your workload is the number the table above cannot know.

Frequently asked questions

What does a hosted YouTube transcript API do that the library does not?

It runs the fetch from residential IPs so YouTube does not block it, absorbs YouTube's page-format changes, caches every transcript so repeats are free, and turns failures into structured errors with a refund. The library gives you the parser; the hosted service gives you the parser plus the network and the on-call.

How much does self-hosting a YouTube transcript scraper actually cost?

The library is free. In the cloud it needs a rotating residential proxy, and each fetch pulls the watch page through it: roughly 300 to 400 KB compressed per success, more with retries. At 25,000 transcripts a month that is on the order of 10 to 20 GB of metered residential bandwidth, plus whoever watches the error rate and redeploys when YouTube changes something.

Is there a free tier?

Yes: 20 credits on signup with no card. One credit is one transcript, search or listing. After that, one-time top-ups start at $10 for 2,500 credits and never expire, or $49 a month covers 25,000.

Can I get the transcript of a video I do not own?

Yes, any public video with a caption track, auto-generated or uploaded. This is the case the official YouTube Data API v3 refuses: captions.download only works with OAuth as the channel owner. What no service can return is a transcript for a video with captions turned off, a private or deleted video, or an age-restricted one.

Does it work from n8n, Zapier or an AI assistant?

Any tool that can make an HTTP request with a header can call the REST API. There is an n8n integration guide, and an MCP server (hosted at api.transcriptapi.io/mcp or via npx transcriptapi-mcp) that gives claude.ai, ChatGPT, Claude Code and Cursor the same transcript, search, channel and playlist tools.

What do I give up by not self-hosting?

Control over the fetch path. You cannot pick the exit country, add cookies from your own account, or change retry behaviour. Video IDs and returned text pass through a third party. And you pay per call rather than per gigabyte, which is cheaper at most volumes but is a different shape of bill.