YouTube Transcript Scraper - Transcripts with Timestamps avatar

YouTube Transcript Scraper - Transcripts with Timestamps

Pricing

$2.00 / 1,000 transcript returneds

Go to Apify Store
YouTube Transcript Scraper - Transcripts with Timestamps

YouTube Transcript Scraper - Transcripts with Timestamps

Get the transcript of any YouTube video as clean text and as timestamped segments, in the language you choose. Works with manual and auto-generated captions. $2 per 1,000 transcripts, no API key, no login.

Pricing

$2.00 / 1,000 transcript returneds

Rating

0.0

(0)

Developer

DataSignals Lab

DataSignals Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

YouTube Transcript Scraper: transcripts with timestamps, built to keep working

Get the transcript of any YouTube video as clean text and as timestamped segments. Paste video URLs or ids, list the languages you prefer, and run. Built for teams that feed video content into an LLM, a search index or a content pipeline and need a source that is checked every day, because YouTube changes its player and most transcript tools break for a while when it does.

No API key, no quota, no login. It works with captions written by a person and with the captions YouTube generates automatically.

Run it with the default input to see it work. It returns the English transcript of one video, as full text and as segments.

What you get

One row per video that has captions:

fieldmeaning
video_idThe 11 character YouTube video id
titleVideo title
channel_nameChannel that published the video
channel_idId of the channel
duration_secondsLength of the video in seconds
view_countNumber of views
languageLanguage code of the transcript
language_nameName of the caption track as YouTube shows it
is_auto_generatedTrue when YouTube generated the captions by speech recognition
available_languagesEvery caption language the video has
word_countNumber of words in the transcript
textThe full transcript as one text
segmentsThe transcript per line with start time and duration in seconds. Null when timestamps are switched off
urlLink to the video

Example row:

{
"video_id": "dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up (Official Video)",
"channel_name": "Rick Astley",
"channel_id": "UCuAXFkgsw1L7xaCfnd5JJOw",
"duration_seconds": 213,
"view_count": 1700000000,
"language": "en",
"language_name": "English",
"is_auto_generated": false,
"available_languages": [
"de-DE",
"en",
"ja"
],
"word_count": 487,
"text": "We're no strangers to love You know the rules and so do I",
"segments": [
{
"start": 18.64,
"duration": 3.24,
"text": "We're no strangers to love"
}
],
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
}

How to scrape YouTube transcripts with this Actor

  1. Open the Actor in the Apify Console and click Try for free. The input is prefilled with one video URL and English.
  2. Replace videos with the video URLs or ids you want, one per line. Watch URLs, youtu.be links, Shorts links and plain 11 character ids all work.
  3. Put your preferred language codes in languages, in order. Leave fallbackToAnyLanguage on to get whatever language the video has when yours is missing, or switch it off to skip such videos for free.
  4. Click Start. One row per video with captions appears in the Dataset tab. Export as JSON, CSV or Excel, or read the rows through the Apify API.
  5. From code: POST https://api.apify.com/v2/acts/datasignalslab~youtube-transcript-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN with the same JSON input as the body.

Input

fieldwhat it does
videosvideo URLs (watch, youtu.be or Shorts) or 11 character video ids, one per line
languageslanguage codes in order of preference, default en. Captions written by a person win over auto-generated ones in the same language
fallbackToAnyLanguagedefault on. When none of your languages exist, return the language the video does have
includeTimestampsdefault on. Adds segments with start time and duration per line. The full text is always included

Minimal input:

{ "videos": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"] }

German if available, otherwise English, otherwise skip the video:

{ "videos": ["dQw4w9WgXcQ", "https://youtu.be/jNQXAC9IVRw"], "languages": ["de", "en"], "fallbackToAnyLanguage": false }

Plain text only, for an LLM prompt:

{ "videos": ["https://www.youtube.com/shorts/dQw4w9WgXcQ"], "languages": ["en"], "includeTimestamps": false }

Pricing

Pay per transcript returned: $2 per 1,000 transcripts, which is $0.002 per video, charged only for rows that land in the dataset. A video without captions, a private video or a video in none of your languages with the fallback off returns nothing and costs nothing. No start fee. Apify's free monthly credit covers hundreds of transcripts, so you can evaluate without paying.

Example: 1,000 transcripts cost $2.00 and 10,000 cost $20.00. A channel's back catalogue of 350 videos costs $0.70. A daily schedule for 20 new videos is $0.04 a day, about $1.20 a month.

More from DataSignals Lab

This Actor is one of the pay-per-result data Actors of DataSignals Lab: job listings per ATS platform and job board, app and company reviews, YouTube comments and transcripts, website contacts and tech stacks. Every Actor returns the same clean JSON style and charges only for rows that land in the dataset, so you can combine feeds without remapping fields. All Actors and prices are listed on datasignalslab.com.

Use cases

  • LLM and RAG teams: text goes straight into a prompt or an embedding index, segments give the timestamp to link an answer back to the moment in the video.
  • Content marketers: a video turned into a blog post, a newsletter or social posts, with word_count to pick the videos worth the effort.
  • Researchers: the spoken text of lectures, interviews and talks, with is_auto_generated to decide how much cleanup a transcript needs.
  • SEO teams: what a competitor's videos actually say, with available_languages to see which markets they caption for.
  • Accessibility and localisation teams: the caption tracks a video already has, to find the languages still missing.
  • AI agents that answer "what does this video say about X" from the real transcript through MCP.

Want the comments under the video as well? See YouTube Comments Scraper.

YouTube transcript API alternative: how it compares

  • YouTube's official API does not return caption text for videos you do not own. This Actor reads the caption tracks of any public video with captions.
  • Several alternatives accept a channel URL with a maximum number of videos, translate on the fly or export SRT and VTT files. This Actor takes video URLs or ids only and returns JSON. segments has start and duration per line, so SRT or VTT is a few lines of code on your side.
  • Reliability is the buying question in this niche. The Actor reads captions through the player endpoints of the YouTube mobile apps, tries each video over three connections, and is run against a known video every day so a change on YouTube's side is noticed the same morning.
  • The price is $2 per 1,000 transcripts with no start fee and no charge for videos without captions. Most alternatives charge between $2 and $10 per 1,000.

Reliability

The transcript niche breaks often. In 2026 YouTube changed its web player so that caption URLs return an empty body without a browser token, and timeouts and empty captions became the most common complaint about transcript tools. This Actor is built around that:

  • Captions are read through the player endpoints the YouTube iOS and Android apps use, not the web player. Those endpoints returned working caption tracks when the web player stopped doing so.
  • Each video is tried over up to three connections, with the iOS client first and the Android client second on each. The first two go through Apify's datacenter proxy, the third through a residential proxy, because YouTube sometimes asks a datacenter address to sign in.
  • A health check runs every day against a known video and counts the run as healthy only when it returns at least one row. A run that succeeds with zero rows is treated as a failure and alerts us.
  • The app client versions are constants in the source. When YouTube refuses an old version, the health check fails and the versions are raised in a new build.
  • Rows are saved and charged per block of 20 videos, so a run that is stopped or hits your spending limit keeps what it has and charges only for that.

No tool can promise an uptime percentage against a source that changes without notice. What we promise is a daily check and a fix as soon as we know.

Limits

  • A transcript exists only when the video has captions. Videos without captions, private videos, age-restricted videos and live streams that are still running return nothing and cost nothing.
  • Some videos require a sign-in when read from a datacenter address. The Actor retries those through a residential proxy. A video that still asks for a login is logged with the reason and costs nothing.
  • Auto-generated captions contain recognition errors and have no punctuation. is_auto_generated tells you which kind you got.
  • Translations that YouTube can generate on the fly are not included. You get the languages the video actually has, listed in available_languages.
  • No channel URL, playlist or search input. List the video URLs or ids, one per line. No SRT or VTT export, use segments.
  • No caching. Every run reads YouTube live and every returned transcript is charged, also when you ran the same video yesterday.
  • Video details beyond title, channel, duration and views are out of scope.

FAQ

The Actor reads the caption tracks YouTube serves for any public video, with no login. The transcript is the creator's content, so what you may do with it depends on your use case and the copyright rules that apply to you. Respect YouTube's terms of service and, if you are unsure, ask a lawyer.

Do I need a YouTube API key or a Google account?

No. There is no API key, no quota and no login. Paste the video URL and run.

Why does the YouTube Transcript Scraper return nothing for some videos?

Because the video has no captions, is private, is age-restricted or is a live stream that is still running. The run log names the reason per video. Such videos cost nothing.

Which language does the YouTube Transcript Scraper pick?

The first language in languages the video has, with a caption track written by a person preferred over an auto-generated one in the same language. A code like en also matches en-US and en-GB. If none of your languages exist and fallbackToAnyLanguage is on, you get the video's own language and language tells you which.

How much do 10,000 YouTube transcripts cost?

$20.00. There is no start fee and nothing is charged for videos without captions.

Can I schedule it or feed it a whole channel?

You can schedule it in the Apify Console with a fixed list of videos. There is no channel URL input, so for a channel you collect the video ids first, for example from a channel scraper or your own list, and pass them in videos.

Can an AI agent (MCP) call the YouTube Transcript Scraper?

Yes. Add the Apify MCP server to Claude, ChatGPT or another agent and the Actor shows up as a tool. The agent passes a video URL and gets the transcript back as JSON, ready to summarise or quote with timestamps.

What happens when YouTube changes something and transcripts stop?

The daily health check fails on the first morning after the change and we get an alert. The fix is usually a new client version or a changed field in the player response, both of which live in one source file. Runs during the gap return zero rows and charge nothing.

Integrations

  • Apify API, including run-sync-get-dataset-items for one call that returns the rows.
  • Schedules and webhooks from the Apify Console, for feeds and for triggering your own processing when a run finishes.
  • Apify MCP server, so Claude, ChatGPT and other agents call this Actor as a tool.
  • Make, Zapier, n8n and Google Sheets through the Apify integrations, or CSV and Excel export from the Dataset tab.

Support

Use the Issues tab on this page, or email support@datasignalslab.com. You get an answer within one working day. Built and maintained by DataSignals Lab.

Changelog

  • 2026-10: README rewritten with a step-by-step guide, a Reliability section, honest limits and a FAQ. No change to the output fields or the price.
  • 2026-10: First release. Transcripts per video through the mobile app player endpoints, language preference with manual over auto-generated, timestamps per line, three attempts per video with a residential fallback. Daily health check in place.