YouTube Transcript Scraper: AI Chunks, SRT & VTT avatar

YouTube Transcript Scraper: AI Chunks, SRT & VTT

Pricing

from $3.00 / 1,000 transcripts

Go to Apify Store
YouTube Transcript Scraper: AI Chunks, SRT & VTT

YouTube Transcript Scraper: AI Chunks, SRT & VTT

Get the transcript of any YouTube video, Short, live replay, playlist or channel. Input: video, playlist or channel links. Output: clean text, timestamped lines, AI-ready chunks for RAG, SRT or VTT. Use it to summarize, search or quote videos. Picks the spoken language. Pay per transcript.

Pricing

from $3.00 / 1,000 transcripts

Rating

0.0

(0)

Developer

SB

SB

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Categories

Share

YouTube Transcript Scraper: AI chunks, SRT and VTT

Get the full transcript of any YouTube video, Short or live replay, or of a whole playlist or channel, as clean text, timestamped lines, AI-ready chunks for RAG and embeddings, or SRT / WebVTT subtitle files. Paste video, playlist or channel links, press Start, and download the results as JSON, CSV or Excel, or call the Actor from your own code, n8n, Make, Zapier or an AI agent through MCP.

You only pay for transcripts that are delivered. Listing the videos of a playlist or channel is free. Videos without captions, private videos and invalid links are reported in the results but never charged.

What you get for each video

FieldDescription
textThe whole transcript as one clean string
chunksTranscript split into ~1,000-character pieces, each with start and end seconds. Drop them straight into a vector database
segmentsEvery caption line with start and duration
srt, vttReady-to-save subtitle files (optional)
language, isAutoGeneratedWhich captions were used
availableLanguagesAll caption languages the video has
title, channel, channelId, durationSeconds, viewCountVideo metadata, included at no extra cost
sourceType, sourceTitle, sourcePositionFor videos that came from a playlist or channel: where they came from and their position

Example output

{
"videoId": "5MuIMqhT8DM",
"url": "https://www.youtube.com/watch?v=5MuIMqhT8DM",
"status": "ok",
"title": "…",
"channel": "TED",
"durationSeconds": 1158,
"language": "en",
"isAutoGenerated": false,
"availableLanguages": ["ar", "bg", "en", "…"],
"text": "Thank you so much. I'd like to …",
"chunks": [
{ "start": 0.0, "end": 61.4, "text": "Thank you so much. I'd like to …" }
],
"segments": [
{ "start": 12.3, "duration": 2.1, "text": "Thank you so much." }
]
}

Features

  • The right language by default. Many videos list volunteer translations first, so naive tools return Arabic or Bulgarian subtitles for an English talk. This Actor detects the spoken language and returns those captions unless you ask for another one.
  • Choose a language. Set language (for example de) to prefer German captions when the video has them.
  • Whole playlists and channels. Paste a playlist link or a channel link (@handle, /channel/UC…, /c/…, /user/…) and the Actor lists the videos for you, newest first for channels. Choose regular videos, Shorts, past live streams or all uploads, and cap how many per source.
  • Built for AI. The chunks field gives timestamped, size-limited pieces of text, so you can cite the exact moment in a video in your RAG answers.
  • Subtitles. SRT and WebVTT output with overlapping auto-caption timings cleaned up.
  • Reliable. It uses residential proxy and automatic retries with a fresh IP when YouTube blocks a request or a connection drops. In our release tests on 49 varied videos (talks, news, podcasts, Shorts, small channels, seven languages), 81 of 82 caption fetches succeeded across two runs. The one miss was a dropped connection, which is now retried automatically.
  • Fast and light. No browser. Two small requests per video and several videos in parallel.
  • Clear errors. Every input gets a row. Failed rows have an error code (no_captions, unavailable, age_restricted, blocked…) and a plain-English errorMessage.

How to use

  1. Paste YouTube links into YouTube videos, playlists or channels. Watch, youtu.be, Shorts, live and embed links, video IDs, playlist links and channel links all work. A watch link that has &list= in it counts as that one video; use the playlist link for the whole playlist.
  2. For playlists and channels, set Max videos per playlist or channel (default 50) and which channel uploads to take.
  3. Optional: set a preferred language or chunk size, or turn on SRT/VTT.
  4. Click Start. When the run finishes, open the Output tab or export the dataset.

Use it from code

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("sblabs/youtube-transcript-scraper").call(run_input={
"videos": [
"https://www.youtube.com/watch?v=5MuIMqhT8DM",
"https://www.youtube.com/@TED", # newest 20 videos of a channel
],
"maxVideosPerSource": 20,
"chunkSize": 1000,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], len(item.get("chunks", [])))

Use it from an AI agent (MCP)

Add the Apify MCP server (https://mcp.apify.com) to Claude, Cursor or any MCP client and ask: "Get the transcript of this YouTube video and summarize it." The agent finds and calls this Actor directly.

Pricing

Pay per event: one charge per delivered transcript. Listing playlist and channel videos costs nothing, at the price shown on the Pricing tab. Videos without captions and failed videos are free. Proxy and compute are included in the price. Set a maximum cost per run and the Actor stops cleanly when it reaches it.

Input options

OptionDefaultNotes
videos—Video, playlist or channel links, or video IDs. Required
maxVideosPerSource50Videos taken from each playlist or channel, 0 = all (up to 5,000)
channelContentvideosvideos, shorts (latest 100), streams or all. A channel link ending in /shorts or /streams picks that tab
languagespoken languagePreferred caption language, e.g. en
chunkSize1000Characters per AI chunk, 0 turns chunks off
includeTimestampstrueInclude timestamped segments
includeSrt / includeVttfalseAdd subtitle strings
maxConcurrency5Videos fetched in parallel
maxRetries3Retries with a fresh IP on blocks or dropped connections
proxyConfigurationResidentialDatacenter IPs are blocked by YouTube for transcripts

FAQ

Does it work for videos without captions? No. It reads the captions YouTube already has, either uploaded by the creator or auto-generated. About one in six videos in our test had no captions at all (mostly music and very short clips). Those rows are marked no_captions and are not charged.

Can I get transcripts for a whole channel or playlist? Yes. Paste the playlist or channel link and set how many videos you want. You pay only for the transcripts delivered, not for listing the videos. Errors such as a private playlist or an unknown channel get their own row (playlist_not_found, channel_not_found, no_videos).

Which languages are supported? Any language YouTube has captions for. Machine translation is on the roadmap.

Is it legal? The Actor reads publicly available captions. You are responsible for how you use the data, including YouTube's terms and the copyright of creators. Don't republish transcripts as your own content.

Something broke? Open an issue on the Issues tab with the video link and it will be looked at quickly.

More tools from sblabs