YouTube Transcripts Scraper

What was actually said,
as a spreadsheet.

Give it a YouTube video id or URL and get the transcript back as rows - one row per caption segment, each with its text, its start time and how long it lasted, plus the whole transcript as a single field. Eight columns. No YouTube account, no residential proxy, no parser to keep alive.

one-time 500 free rows$0.002 per row after8 columnsCSV · XLSX · JSON
How it works

A video list in,
the spoken words out.

The input is the video. Paste what you already have - the bare id, a watch link, or a short youtu.be link - and the job fetches the caption track behind it.

  1. STEP 1Sign in to the platform.
  2. STEP 2Open the YouTube Transcripts Scraper.
  3. STEP 3Paste YouTube video ids or URLs, one per line - or upload a CSV, XLSX, TXT or Parquet file.
  4. STEP 4Choose your output format.
  5. STEP 5Click Get Data.
  6. STEP 6Download the transcript as CSV, XLSX or JSON.

Every row is tagged with the query it came from and the video id it belongs to - so a run across a playlist's worth of videos still reconciles back to your input list.

Why teams use it

Speech you can
search and cite.

An id, a watch link or a short link

All three go in the same box, one per line. A watch URL carrying extra parameters - a playlist, a radio flag - still resolves to the right video, and the id it resolved to comes back in its own column so you can join on it.

Timed to the second

Each segment carries the moment it starts and how long it runs, both as decimal seconds. That is what turns a wall of speech into something you can jump to - build a deep link, cut a clip, or line a quote up against the frame it came from.

Segments and the whole thing

You get both shapes in one file: a row per segment for anything timed, and the complete transcript as a single field for anything that just needs the text. The data dictionary explains exactly where that full-text field sits, because it is not on every row.

What you get back

Eight columns,
one row per segment.

Each row is one caption segment: what was said, when it starts and how long it lasts, tagged with the video it belongs to and the query you submitted.

The column list below is the header row of real run exports, corroborated by the column array the run UI renders; the two agree exactly. Two of the eight behave differently from the rest - they appear once per video rather than once per row - and that is the thing most likely to surprise you, so it is spelled out in the table and again in the note beneath it.

Data dictionary

Eight columns,
and two of them are special.

Taken from the header row of real runs. The notes describe what each column holds and how it repeats - not how many rows you will get, because that is a property of the video's caption track, not of the scraper.

query
The video id or URL you submitted, repeated on every row that came from it - including the URL’s extra parameters, exactly as you typed them.
video_id
The YouTube id the query resolved to, repeated on every row of that video. This is the column to join on: a watch URL with a playlist attached and the bare id both land here as the same value.
language
The language code of the caption track, repeated on every row of the video. We have only ever run English videos, so en is the only value we have seen - the page does not guess at what else the column can hold.
segments
First row of each video only. How many segments that video’s transcript was split into - which is also how many rows the video contributes. On every other row of the same video it is empty. An integer where it is filled, not a string.
transcript
First row of each video only. The entire transcript as one block of text, with the segments joined together.
text
What was said in this segment. Present on every row - this is the per-row half of the export.
start
When the segment starts, in seconds from the beginning of the video, as a decimal number. Ascends through a video and starts again at the next one.
duration
How long the segment lasts, in seconds, as a decimal number.

Three things to know before you write code against this. A row is a segment, not a video - one video fills as many rows as its caption track has segments, and query, video_id and language repeat down all of them. segments and transcript break that pattern: they are written on the first row of each video only and are empty on the rest, so group by video_id and take the first row rather than expecting them everywhere. And start and duration come back as real numbers while everything else is text - including segments, which is an integer where it is filled and an empty string where it is not, so a strict parser needs to tolerate both.

Run controls

One box,
and nothing to tune.

This scraper has no limit and no sort order - the transcript is what it is. The only thing you decide is how you hand over the videos.

Bare video id watch?v= URL youtu.be short link Paste one per line CSV upload XLSX upload TXT upload Parquet upload
Common workflows

Three jobs people
most often run here.

A few examples of what teams do with spoken words once they are in a spreadsheet.

Research

Search a back catalogue for a phrase

Pull the transcripts for a channel's videos and grep the text column. Finding every mention of a product, a competitor or a claim takes a filter rather than an afternoon of scrubbing through playback.

Research · Comms
Content

Turn talks into written material

A transcript is the first draft of a blog post, a show-notes page or a set of subtitles. The full-text field gives you the whole thing in one cell, and the timed rows give you the timestamps to link back with.

Content
AI

Feed a model something it can cite

Timed segments chunk cleanly for retrieval, and every chunk already knows which video it came from and where in it. That is the difference between an answer and an answer with a link to the second it was said.

Data · ML
Pricing

Pay only for the segments
you actually pull.

No subscription, no minimum, no recurring bill. Your first 500 rows are on us - after that, pay-as-you-go at the same flat rate as every other scraper here.

Free tier

500 free rows - $0

Every new account, one-time. No credit card required. File upload and every export format included. Enough to see the shape of a transcript before you plan around it.

$0 forever
Pay-as-you-go

$0.002 per row, after the free tier

The same flat rate as every other scraper on the platform. The pre-flight estimator shows the row count and credit cost before a run starts - no surprise bills, no compute units to translate.

Most popular
Volume

Custom · high volume

Volume pricing, dedicated workers and an SLA for continuous monitoring or very large historical pulls. Tell us your numbers and we will quote.

Talk to us
10% off your first paid run.Use code LIVESCRAPER10 at checkout.
Sign up
Pairs well with

What was said,
and where it was found.

The legal bit

Is it legal to scrape
YouTube transcripts?

Short answer: captions are published alongside the video - and what you may do with the words afterwards is a copyright question, not a scraping one.

A caption track is served to anyone who opens the video, signed in or not; that is how the subtitles button works. Reading the same public track for research is long-established practice, and nothing here touches a login or a paywall. A video without captions has no transcript to read, which is why the scraper needs one and says so plainly.

The part worth planning around is not access but reuse. A transcript is the creator's words, and the video is their copyrighted work - so quoting, indexing, searching and analysing sit on very different footing from republishing a talk as your own article. If you are training on it or reproducing it at length, that is a licensing question, and it is yours to answer before you scale.

YouTube's terms restrict automated access, so this is a terms question as well as a legal one - if you have a contractual relationship with the platform, check it. We run no third-party trackers on the data layer, and your exports auto-delete after 30 days.

livescraper.app · principles
Public caption tracks only
No logins, no accounts touched
The words stay the creator's!
Your IP is never used - ours rotate
Exports auto-delete (30 days)
Check YouTube's own terms before scaling.
Common questions

Things people
ask before signing up.

The questions we hear most. Anything else? Talk to us - humans, not bots, write the answers.

How do I scrape a YouTube transcript?+
Using the YouTube Transcripts Scraper:
  1. Sign in to the platform.
  2. Open the YouTube Transcripts Scraper.
  3. Paste YouTube video ids or URLs, one per line - or upload a CSV, XLSX, TXT or Parquet file.
  4. Choose your output format.
  5. Click Get Data.
  6. Download the transcript as CSV, XLSX or JSON.
What does one row represent?+
One caption segment, not one video. A video fills as many rows as its transcript has segments, and query, video_id and language repeat down every one of them. If you want a row per video instead, group by video_id and take the first row of each group - that is where the full transcript lives.
Why are the segments and transcript columns empty on most rows?+
Because they are written once per video rather than once per row. Both appear on the first row of each video and are empty on that video's remaining rows - it held for every current-shape run we made, without exception. It is a grouping convention, not a collection failure: segments tells you how many rows that video contributes, and transcript holds the whole thing as one block of text.
Can I paste a full YouTube URL, or does it have to be the id?+
Either, and a youtu.be short link works too. A watch URL carrying extra parameters - a playlist, a radio flag - still resolves correctly, and the id it resolved to comes back in the video_id column, so you can join on that rather than on whatever you happened to paste.
What happens if a video has no captions?+
There is no transcript to return for it. Captions are the source this reads, so a video with them disabled produces nothing - that is the requirement stated on the tool itself, not an error on your side. Check the video has a subtitles button before assuming a run failed.
Are the timestamps usable for deep links?+
Yes. Every segment carries its start time in seconds from the beginning of the video, and how long it lasts, both as decimal numbers. That is enough to build a jump link, cut a clip, or line a quote up against the moment it was spoken.
Did the output change recently?+
Yes, on 2026-07-03. Runs before the changeover exported five columns at one row per video, with the whole transcript in a single cell. Runs after it export the eight columns described here at one row per segment. That is a change in what a row means, not just extra columns - if you have an older file, it is a different shape, and neither file is wrong.
How much does it cost?+
The first 500 rows are free and one-time, with no credit card. After that it is $0.002 per row - the same flat rate as every other scraper on the platform. Remember that a row here is a segment, so a long video costs more than a short one; the estimator shows the cost of a run before it starts.

Your first 500 segments,
on the house.

500 one-time free rows on every new account - no expiry. After that it is $0.002 per row, pay-as-you-go - no card on file until you say so.

Activates instantly · no card required

Scrape YouTube transcripts at scale

Livescraper's YouTube Transcripts Scraper turns a list of videos into text. You submit YouTube video ids or URLs - typed one per line, or uploaded as a CSV, XLSX, TXT or Parquet file - and download the caption track as a clean CSV, Excel or JSON file. Bare ids, watch links and youtu.be short links all work, and a watch URL carrying playlist parameters still resolves to the right video.

A row is one caption segment. Each carries what was said, the second it starts and how long it lasts, alongside the query you submitted, the video id it resolved to and the language of the track. Two more columns work per video rather than per row: segments, which is how many rows that video contributes, and transcript, which holds the whole thing as one block of text. Both sit on the first row of each video, which is the detail worth knowing before you write a parser.

Researchers pull a channel's back catalogue and search the text for a phrase instead of scrubbing through playback. Content teams turn talks into posts, show notes and subtitles. Teams building retrieval systems use the timed segments as chunks that already know which video they came from and where in it - the difference between an answer and an answer you can link to the second it was said.

Two things are worth knowing before you start. A video with captions disabled has no transcript to return, so captions are a requirement rather than a nice-to-have. And because a row is a segment, a long video costs more than a short one at the same flat $0.002 per row. Start free: your first 500 rows cost nothing and need no credit card.