The verdict:use the Data API's captions endpoints to manage caption tracks on videos your account can edit — that is what they are for, and nothing else here can write captions. Use a caption-reading tool for transcripts of public videos you cannot edit: the free youtube-transcript-api for prototypes, or the managed YouTube Transcript Scraper for production batches. For public videos the endpoints are not a slower alternative; they are not an option at all.
The two tools barely overlap because captions.download only serves requests authorized with edit permission on the video — the free library and the actor are compared here with first-hand tests.
Unlike our library comparison, this page contains no side-by-side run: exercising captions.downloadrequires a Google Cloud project and OAuth from an account with edit permission on the video, and that permission state is not observable from outside. Every claim about the Data API below links Google's own documentation; our 403 deep-dive walks the endpoint's behavior in detail.
The edit-permission gate, per Google's docs
- Both
captions.listandcaptions.downloadrequire OAuth with theyoutube.force-sslscope. A plain API key — sufficient forvideos.listorsearch.list— is never enough here. captions.downloadadditionally checks that the authorized account owns or can edit the video; the documented 403 reason for anyone else isforbidden. More scopes, service accounts, retries, and new API keys do not change this — the gate is edit permission on the video, not authentication strength.
The quota math, even for owners
Per Google's quota documentation and quota cost table, a project gets 10,000 units per day by default; captions.list costs 50 units and captions.downloadcosts 200. A normal workflow lists a video's tracks and then downloads one — 250 units, or roughly 40 videos per project per day. Up to 50 download calls fit only when the caption-track IDs are already known or cached. Quota increases require an application and review. For a channel exporting its own captions occasionally, that is plenty; for anything shaped like "process thousands of videos," the arithmetic fails before the permissions do.
The decision, by dimension
| Dimension | Data API captions endpoints | YouTube Transcript Scraper |
|---|---|---|
| Videos it can read | Videos the authenticated account owns or can edit. Google documentation. | Public videos with a caption track, whoever uploaded them. apihq documentation; first-hand tested on 11 public videos. |
| Auth required | Google Cloud project + OAuth consent with edit permission on the video. Google documentation. | Apify API token. By design — Apify platform auth. |
| Cost | No fees documented; quota-limited (roughly 40 list-plus-download workflows per day by default). Google documentation; arithmetic from documented costs. | $3.00 per 1,000 delivered transcripts; failed items $0. apihq list pricing. |
| Output | Caption file formats via tfmt (e.g. SRT). Google documentation. | Time-coded JSON segments plus video metadata and track list. apihq documentation; shown in the first-hand library test. |
| Caption management (upload, edit, delete) | Yes — this is what the endpoints are for. Google documentation. | No. By design — the actor is read-only. |
| Terms-of-service posture | Official API, unambiguous. First-party assessment. | Reads public data outside the official API; not affiliated with or endorsed by YouTube. First-party assessment. |
When the Data API is the better choice
- Exporting, uploading, or editing captions on videos your account can edit — it is the only tool in this comparison that can write captions at all.
- Workflows that must stay inside Google's official API surface for compliance reasons.
- Low-volume exports of your own catalog that fit inside the daily quota, with no per-call fee documented.
When the actor is the better choice
- Transcripts of public videos you cannot edit — the Data API has no path here at any price or quota level.
- Volume beyond the default quota's roughly 40 list-plus-download workflows per day, without a quota-increase application.
- Pipelines that need JSON segments, metadata, and typed, unbilled failure rows (the error contract) rather than caption files.
Methodology and sources
- No first-hand Data API run:the endpoints' restrictions are authorization rules, so this page relies on Google's documentation (linked at every claim) rather than a test we could only run against our own channel.
- Actor rows: pricing and failure behavior come from the actor's documentation and the first-hand test published alongside this page.
- Corrections:if Google's documented behavior changes or a row is wrong, use the support and corrections route; the page carries its last-verified date at the top.