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

YouTube transcript scraper

Social & communities · v1.0.0 · youtube_transcript

$0.002 / video

$2.00 / 1K · pay per delivered video

A YouTube transcript scraper for many videos at once: send up to 50 video ids or URLs and get one row per video with the full transcript as plain text and as timestamped segments, the word count, the caption languages on offer, the chapters, title, channel and length. No YouTube API key or quota, billed per transcript delivered.

$0.002 per delivered video · $2 free every month · Failed runs never billed

What it does

What a YouTube transcript scraper does

Transcripts are how a video becomes text you can search, summarise, quote or embed. The work is rarely one video: it is a channel, a playlist, a list of competitors’ uploads. That is the shape of this collector. Each video comes back as one row, in the language spoken in it, from the creator’s own captions when they exist and from YouTube’s automatic ones otherwise; transcript_source says which. Pass languages to prefer others, in order.

It is the same read as our Video API, measured on 20 October 2026 on three public videos: an 8:23 review in Italian came back from automatic captions, a 12:22 tutorial in English with its 25 chapters, an 18:40 lesson in English with 12 chapters and 31 caption tracks to choose from. The Video API adds frames to one video per call; this collector reads transcripts only, up to 50 videos per run. A video without captions is listed under failed and not billed.

Inputs

The whole request. Anything you leave out falls back to the default shown in the catalog.

InputTypeRequiredWhat it does
videosstring[]yesVideo ids, or watch, shorts and youtu.be URLs, one per line, up to 50.
languagesstring[]noCaption languages to prefer, in order (e.g. en, it). Omit for the spoken language.
include_without_captionsbooleannoDeliver (and bill) a row with has_transcript=false for videos that have no captions (default false).
max_segmentsintegernoTimestamped segments per row (1–5000, default 2000). text always holds the whole transcript.
max_resultsintegernoHow many videos to deliver at most (1–50). You pay only for delivered videos.

Outputs — 17 fields, one row per video

What one video looks like

Every delivered video carries these fields. Nullable means the source did not publish it — the field stays empty instead of being guessed.

FieldTypeWhat it holds
video_idstring11-char video id.
urlstringWatch URL.
titlestringVideo title.
channelstring · nullableChannel name.
channel_idstring · nullableChannel id (UC…).
duration_secondsinteger · nullableLength in seconds.
has_transcriptbooleanTrue when a transcript was read.
transcript_sourcestring · nullablemanual or automatic captions.
languagestring · nullableLanguage of the transcript.
caption_languagesstring[]Caption languages the video offers.
textstring · nullableWhole transcript as plain text.
word_countintegerWords in text.
segment_countintegerTimestamped segments in the transcript.
segmentsobject[]Timestamped segments: start and duration in seconds, text.
segments_truncatedbooleanTrue when max_segments cut the segment list (text stays whole).
chaptersobject[]Author's chapters: start in seconds, title.
rankinteger1-based delivery order.

Integration

One POST, typed rows

Base URL https://api.quanticdata.io/v1, Bearer auth, the same key as every other Data API. Endpoint: POST /v1/scraper/collectors/youtube_transcript/run.

curl -X POST https://api.quanticdata.io/v1/scraper/collectors/youtube_transcript/run \
  -H "Authorization: Bearer $QD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"videos":["dQw4w9WgXcQ"],"max_results":1}'

Example response

POST /v1/scraper/collectors/youtube_transcript/run
$ curl $QD/youtube_transcript/run \
    -H "Authorization: Bearer $QD_API_KEY" \
    -d '{"videos": ["dQw4w9WgXcQ"], "max_results": 1}'
{ "status": "done", "count": 1,
  "results": [
    {
      "video_id": "…",
      "language": "…",
      "word_count": "…",
      "text": "…" } ],
  "cost": 0.002 }
# 1 videos × $0.002 · nothing delivered, nothing charged

Try it

YouTube transcripts, running now

Change the input and run it against the live collector — nothing to install, no sign-up.

Run it from your own code, on your own inputs

Same collector, same rows — $2 of free API credit every month, no card.

Get my free API key
YouTube transcript scraper: from videos, QuanticData reads the YouTube transcript scraper page and returns one row per video with title, channel and duration_seconds, at $0.002 per delivered video.
You send YouTube videos; each comes back as one row with video id, language and word count, plus the full text and timed segments — 17 fields on every row — and you are billed $0.002 for each transcript actually delivered, nothing for a video without captions.
$0.002 / video1,000 videos on the free $2 every month
Semantic inputvideos, languages, include_without_captions — no URL lists
Up to 50videos per run, pagination handled for you
17 fieldsone row per video

Pricing

YouTube Transcript Scraper pricing

$0.002 per delivered video. A run that delivers nothing costs nothing, and the $2 monthly allowance covers about 1,000 videos before you spend anything.

$0.002per delivered video$2.00 per 1,000 delivered videos
1,000 videoson the free allowance$2 every month, no card
Zero rowszero chargea run that delivers nothing is free
−30%on volume tiersthe catalog returns your key's price

Same wallet, same key and same $2 monthly allowance as every other Data API. Prices are launch pricing read live from the billing config — GET /v1/scraper/collectors returns the price your key actually pays.

What people build with the YouTube transcript scraper

Three shapes of work this endpoint was designed around.

Retrieval and RAG

Timestamped segments are ready to chunk and embed, and each one points back to the second of the video it came from, so an answer can cite the moment.

Channel and competitor research

List a channel’s uploads with the YouTube channel scraper API, then pull every transcript in one run: what they talk about, how often, in their own words.

Summaries and repurposing

Plain text plus chapters per video is the input a summary, a blog draft or a newsletter needs, with the word count to size the job before you send it to a model.

YouTube Transcript Scraper versus rolling your own

The differences that actually cost time when you build this in-house.

DIY scraperThis collector
AccessAPI key, quota and the owner’s authorisation to download captionsOne API key, no YouTube quota
Many videosA loop with retries to writeUp to 50 videos in one run
OutputCaption files to convertPlain text plus timestamped segments and word count
LanguagePick a track and hope it existsSpoken language first, your preference order if you give one
Videos without captionsErrors to catchListed under failed, never billed
BillingRequests, successful or notOnly delivered transcripts
YouTube transcript scraper: the POST to the youtube_transcript collector, 1 video delivered and the bill, 1 × $0.002 = $0.002 in usage.cost_usd; zero videos would cost $0.
The same call you would paste into a terminal: a Bearer key, the videos in the body, and back the envelope every QuanticData endpoint returns — type, message, payload — where count is how many transcripts arrived and usage.cost_usd is $0.002, which is 1 × $0.002. A run that delivers nothing costs nothing.

Sources and standards

The platform documentation and standards this collector is built against — check any claim on this page against the primary source:

FAQ

Questions we get about the YouTube transcript scraper.

Something else? Ask us

Does it use my YouTube Data API quota?

No. The collector does not call the YouTube Data API, so there is no quota and no Google project to set up, and no authorisation from the video’s owner, which the Data API asks for to download captions. You need only a QuanticData API key.

Can I scrape transcripts in bulk?

Yes. Up to 50 videos go in one run, by id or by watch, shorts or youtu.be URL. To cover a whole channel, list its videos with the YouTube channel scraper API first and pass the ids here.

What if a video has no transcript?

It is listed under failed with the reason and you are not charged for it. If you want a row for those videos anyway, set include_without_captions and each comes back with has_transcript set to false, billed like any other row.

Can I use it from Python or from an AI agent?

From any language that can send an HTTP request: the samples on this page are cURL, Python and Node. It also runs from our MCP server, so an agent in Claude, Cursor or another MCP client can pull transcripts itself.

Is there a free YouTube transcript scraper?

Every account gets $2 of credit every month with no card, which is about 1,000 delivered videos on this endpoint at $0.002 each. It renews monthly, and a run that delivers nothing is never billed.

How much does one run cost?

Multiply the rows you actually receive by $0.002. A run capped at 50 videos — the maximum for this collector — costs $0.1 if every row comes back, and less when the listing has fewer. Volume tiers take up to 30% off, and GET /v1/scraper/collectors returns the price your key actually pays.

Run the YouTube transcript scraper now

$2 of free credit every month, no card. Your key returns its own prices from GET /v1/scraper/collectors.

Get my free API key
Illustration: three coloured zones of the page that is read (YouTube transcript scraper page) turn into clean JSON with the fields title, channel and duration_seconds; 17 fields on every row.