Documentation Python quickstart Blog Free tools Enterprise solutions hello@quanticdata.ioLog in

YouTube transcript APIs compared (2026): what each returns, measured

The same three YouTube videos read on 20 October 2026: a comparison grid of six transcript options with the frames column lit, and the QuanticData Video API card with the transcript as spoken and [m:ss] stamps, 12 and 25 chapters as headings, 12 frames of 160×90 per read and 1.7 to 7.3 seconds per read; the open-source package was blocked 9 of 9 times from a cloud server.
The same three YouTube videos read on 20 October 2026: a comparison grid of six transcript options with the frames column lit, and the QuanticData Video API card with the transcript as spoken and [m:ss] stamps, 12 and 25 chapters as headings, 12 frames of 160×90 per read and 1.7 to 7.3 seconds per read; the open-source package was blocked 9 of 9 times from a cloud server.

The best YouTube transcript API is the one that returns what your model needs. On 20 October 2026 the QuanticData Video API read three videos in 1.7 to 7.3 seconds, with the transcript as spoken and 12 frames each; the open-source Python package was blocked 9 of 9 times from a cloud server. Hosted alternatives return text and timestamps, no frames.

Most comparisons of transcript APIs are written by a vendor from the vendors' own pages. This one adds two measurements of our own, both taken on 20 October 2026: three public videos read through our Video API, and the open-source package run from our server in a datacenter, first directly and then through a residential exit. The hosted services were not called: their rows come from their own pricing and API pages, read the same day. Their names are given so you can recognize them, without links.

What one call returns, option by option

OptionWhat one call returnsChaptersFramesMCP tool
QuanticData Video APITranscript stamped [m:ss], description, chapters and frames in one Markdown timeline, plus the same parts as JSON and a token countYes, the author's chapters as headingsUp to 30, 160×90, where the speaker points, says a price or starts a chapterYes, read_video, frames inline as images
youtube-transcript-api, the open-source Python packageTimed snippets: text, start, durationNoNoNo, you write the wrapper
YouTube Data API v3, captions.downloadOne caption file (SRT, VTT, SBV, SCC or TTML) of a video you are allowed to editNoNoNo
TranscriptAPI.comTranscript with text, start and duration, plus the title and the lengthNot in its documented responseNot listedYes
SupadataTranscript with timestampsNot listedNot listedYes
youtube-transcript.ioTranscripts for up to 50 video IDs per requestNot listedNot listedNot listed

"Not listed" means the feature does not appear on the service's own pricing, API or feature page on 20 October 2026. Language is the other difference that matters to a model. The Video API returns the language that is spoken and lists every track the video offers. The Python package asks for English unless you pass languages, and can machine-translate a track. The Data API returns a track in its original language, and its tlang parameter returns a machine translation. A model translates better from the original than from a translated caption track, which carries the translator's errors on top of the captioner's.

Where it runs, what happens on a block, what it costs

OptionWho fetches, and what happens on a blockBillingFree tier
QuanticData Video APIOur servers. A refused address is retried through a residential exit inside the same call, as all three reads of 20 October werePer successful read, one price whatever the length; failed reads never billed$2 of API usage every month, no card
youtube-transcript-apiYour machine. It raises RequestBlocked or IpBlocked, 9 of 9 times from our cloud server, and you add and pay a proxyFree software; about 1.6 MB of proxy traffic per transcript in our runFree
YouTube Data API v3Google, with your OAuth token. No IP block, but a quota: 200 units per caption downloadFree quota10,000 units a day, so 50 caption downloads
TranscriptAPI.comIts serversCredits, 1 per successful request; $5 a month for 1,000100 credits once, at signup
SupadataIts serversCredits, 1 per transcript; unused credits do not roll over100 credits a month; paid plans from $5 a month billed annually, for 300 credits
youtube-transcript.ioIts servers. Above 5 requests per 10 seconds it answers 429Plans on its pricing pageOn its pricing page

Two rows need a word. The Data API is the official route, but captions.download only works on a video you have permission to edit, so it does not read other people's videos at all. The Python package costs nothing to install, and the bill moves to the proxy you put under it: in our run each transcript moved about 1.6 MB through the proxy, because the package downloads the full watch page before it asks for the captions. At the Residential Basic price of $1.00 per GB that is about $1.60 per 1,000 transcripts in bandwidth alone, with the code and the retries still yours to maintain.

Measured: three videos through the Video API

On 20 October 2026 we sent three public YouTube videos to the production endpoint with the default settings, one call each, and timed the whole round trip from a client outside our network.

Video and lengthCaptionsChaptersFramesTokensTime
Product review in Italian, 8:23it, automatic0122,3421.7 s
Maths lesson, 18:40en, manual12125,7802.6 s
Developer tutorial, 12:22en, automatic25124,2707.3 s

Each read fetched between 442 KB and 565 KB from the platform: the player data, the captions and the storyboard sheets, never the media file. The Italian review came back in Italian, not as an English translation. All three reads took the residential retry inside the same call, with no parameter set by the caller, and still came back in 1.7 to 7.3 seconds.

Measured: the open-source package from a cloud server

Same three videos, same day, from our production server in a datacenter in Frankfurt (DigitalOcean). Version 1.2.4 of youtube-transcript-api from PyPI, Python 3.12, three rounds two seconds apart, 17:48 to 17:49 UTC. Then the same code with the package's GenericProxyConfig pointed at a rotating United States exit of our residential proxies.

RouteAttemptsResultTime per attempt
Direct, from the datacenter address9RequestBlocked 9 of 90.78 to 1.11 s
Same server, rotating residential exit99 of 9 read: 192 Italian snippets, 286 and 338 English ones1.57 to 2.61 s, median 2.09 s

The block is not about volume: the very first request from the datacenter address was refused. What the package returned through the proxy was the transcript and nothing else, with no chapters, no description and no frames, and the Italian review still had to be asked for by passing languages=["it", "en"]. The three ways out of that error, with code for each, are in the RequestBlocked and IpBlocked guide.

What frames add to a transcript

A transcript says "as you can see" and stops there. The Video API places a frame at the moments the words point to, using five rules. Over the 36 frames of the three reads above, this is where they landed:

ReasonWhen a frame is takenFrames out of 36
cueThe speaker points at the screen: "as you can see", "come vedete", "regardez" and the like21
priceA price is said out loud2
chapterThree seconds into a chapter the author wrote6
sceneThe picture changes on a stretch nobody points at6
intervalPeriodic coverage when nothing else claims the stretch1

Each frame comes with its timestamp, its reason and the quote that earned it, so a model can say what was on screen when a price was said, and a reader can jump to that second. The frames are small by design, 160×90: they show a product, a slide or a chart, not small text.

Which option for which job

JobOptionWhy
An agent that must see what the speaker showsVideo APIFrames where the words point, inline as images through MCP
Summaries that cite the second a claim is madeVideo API[m:ss] stamps and the author's chapters in one timeline
Transcripts from a cloud server or a serverless functionVideo API, or the package with a rotating residential proxy9 of 9 blocked direct in our run; the Video API retries inside the call
A few transcripts from your own laptopThe open-source packageNo account, works from a home connection
Captions of videos on your own channelYouTube Data API v3Official, but only for videos you may edit, 50 downloads a day on the default quota

How to read a video with the Video API

One POST with the URL. Set max_frames to 0 for the transcript alone, start and end to read a window of a long video, and max_tokens to keep the timeline inside a prompt.

import os, requests

r = requests.post("https://api.quanticdata.io/v1/scraper/video",
    headers={"Authorization": f"Bearer {os.environ['QD_API_KEY']}"},
    json={"url": "https://www.youtube.com/watch?v=aircAruvnKk",
          "max_frames": 8, "max_tokens": 6000},
    timeout=120)
video = r.json()["payload"]

print(video["transcript"]["language"], len(video["chapters"]), "chapters")
print(video["content"][:800])       # the timeline: Markdown with [m:ss] stamps
for f in video["frames"]:
    print(f["n"], f["at"], f["reason"], f.get("quote", ""))

Agents get the same call as the read_video tool of the QuanticData MCP server: Claude, Cursor or any MCP client passes a URL and receives the timeline with the frames as images. The step by step, with the MCP setup and a REST loop side by side, is in Train an agent with the Video API. Every field is in the API reference, and the rest of the data layer is on the web data API for AI page.

How we compared, and the limits

  • The Video API and the Python package were measured by us on 20 October 2026, on three public videos of 8 to 19 minutes.
  • The hosted services were not called. Their rows come from their own pages, read the same day, and prices change: check them before you buy.
  • The package run used one datacenter address. Other providers' ranges may answer differently, and a home connection usually works.
  • Proxy traffic per transcript is the bandwidth meter of our proxy order over nine reads with the retry code of the RequestBlocked guide: 14.4 MB, about 1.6 MB each, retries included.
  • The Video API costs $0.02 per successful read ($20 per 1,000 reads), list price since 22 October 2026.

Sources & further reading

FAQ

Quick answers on best youtube transcript api.

Something else? Ask us

What is the best YouTube transcript API for AI agents?

One that returns more than text. The QuanticData Video API answers with the transcript in the spoken language stamped [m:ss], the author's chapters and up to 30 frames where the speaker points at the screen, in one Markdown timeline, and exposes the same call to Claude, Cursor and other MCP clients as the read_video tool. In our reads of 20 October 2026 it took 1.7 to 7.3 seconds per video.

Is there a free YouTube transcript API?

The open-source youtube-transcript-api package is free software, but from a cloud server it was blocked 9 of 9 times in our run, so in production you pay for a proxy instead. QuanticData gives every account $2 of API usage each month, with no card, and bills the Video API only for successful reads.

Which YouTube transcript API returns chapters and frames?

Of the six options compared on 20 October 2026, only the QuanticData Video API returns both: the chapters the author wrote, as headings in the timeline, and up to 30 frames of 160×90 placed where the speaker points, says a price or starts a chapter. The others return the transcript with timestamps; none lists frames on its own pages.

Why does youtube-transcript-api work locally but not on a server?

YouTube refuses most addresses that belong to cloud providers. On 20 October 2026 version 1.2.4 got RequestBlocked on 9 of 9 attempts from our server in a Frankfurt datacenter, and read 9 of 9 through a rotating residential exit. A home connection is a residential address, which is why the same code works on a laptop.

Can the official YouTube Data API download any video's transcript?

No. The captions.download method of the YouTube Data API v3 needs an OAuth token from a user who has permission to edit the video, and costs 200 quota units per call, so the default 10,000 units a day cover 50 downloads. It fits captions of your own channel, not videos published by others.

How much does the QuanticData Video API cost?

You pay per successful read: one price per video, whatever its length, and the same for a window read with start and end. Reads that fail for any reason are never billed, and $2 of API usage is free every month. A read costs $0.02 ($20 per 1,000 reads).

Read your first video in a minute

Transcript in the spoken language, the author's chapters and frames where the speaker points, in one call. $2 of free API usage every month, no card, failed reads never billed.

Related reading