YouTube Transcript Scraper: Subtitles, SRT, VTT & Chunks avatar

YouTube Transcript Scraper: Subtitles, SRT, VTT & Chunks

Pricing

from $3.50 / 1,000 transcripts

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

YouTube Transcript Scraper: Subtitles, SRT, VTT & Chunks

Scrape YouTube transcripts, subtitles and captions from videos, Shorts, playlists and channels, with views, likes and publish date on every row. Pick or translate languages and export text, timestamps, SRT, WebVTT or LLM-ready chunks. No charge for videos without captions.

Pricing

from $3.50 / 1,000 transcripts

Rating

0.0

(0)

Developer

KO HYEONSEUNG

KO HYEONSEUNG

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

2 months ago

Last modified

Categories

Security

Limited permissions

Share

YouTube Transcript & Subtitles Scraper

Get the transcript of any public YouTube video, and of whole playlists and channels, in the language you want. Timestamps are kept. Captions can be translated into 100+ languages by YouTube's own caption translation.

Paste video links, Shorts, playlists or channel handles. You get one clean row per video: the full text, timed segments, and optionally SRT, WebVTT, [mm:ss] timestamped text, or AI-ready chunks with their start and end times. The same row carries the video stats: publish date, views, likes, category, duration, thumbnail and whether it is a Short, so one run answers both "what was said" and "how did it do".

YouTube transcripts for AI, SEO and subtitles

  • Feed videos to an LLM: summarise a talk, answer questions about a course, or build a RAG index of a channel. Chunks come with timestamps, so answers can cite the exact moment.
  • Content and SEO: turn videos into blog posts, show notes and quotes. Research what a niche talks about across hundreds of videos.
  • Subtitles: download SRT or VTT in the original language or a translation, ready for an editor or player.
  • Research and monitoring: collect everything a channel said about a topic, with publish dates, views and likes next to each transcript.

YouTube transcript API: what you get

  • Every URL shape: watch?v=, youtu.be, Shorts, /live/, /embed/, bare video IDs, playlist URLs, and channels (@handle, /channel/UC…, /c/…, /user/…).
  • Channels and playlists expanded: set Max videos per playlist or channel. For channels, the newest uploads come first.
  • Language control: give an ordered list such as en, en-GB, es. Creator-uploaded captions are preferred over automatic ones, and you can fall back to the video's own language.
  • Translation: set Translate to (ko, de, pt…). YouTube's caption translation keeps every timestamp.
  • Formats: plain text, timed segments (start, duration, text), timestamped text, SRT, WebVTT and chunks of a size you choose.
  • Video stats: title, channel name, channel ID and URL, publish date, view and like counts, category, duration, the largest thumbnail, and Short and live flags. You can add the description, and every row lists the caption languages available.
  • No API key or login: no Google Cloud project, no YouTube Data API key and no YouTube account.
  • Fair billing: videos without captions, private videos and bad links still get a row with an error, and you are not charged for them.

How to scrape YouTube transcripts from videos, playlists and channels

{
"urls": [
"https://www.youtube.com/watch?v=aircAruvnKk",
"https://www.youtube.com/playlist?list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi",
"@3blue1brown"
],
"languages": ["en"],
"translateTo": "",
"maxVideosPerSource": 50,
"includeSegments": true,
"includeTimestampedText": false,
"includeSrt": false,
"includeVtt": false,
"chunkChars": 0
}

Transcript output: text, timestamps, SRT, VTT and chunks

One row per video. The dataset has Overview, Video stats and Transcript text views, and exports to JSON, CSV, Excel or HTML, or through the API. This row was produced with translateTo: "ko" and chunkChars: 1500:

{
"videoId": "aircAruvnKk",
"url": "https://www.youtube.com/watch?v=aircAruvnKk",
"title": "But what is a neural network? | Deep learning chapter 1",
"channelName": "3Blue1Brown",
"channelId": "UCYO_jab_esuFRV4b17AJtAw",
"channelUrl": "https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw",
"publishDate": "2017-10-05T08:11:25-07:00",
"durationSeconds": 1120,
"viewCount": 24251528,
"likeCount": 560552,
"category": "Education",
"isShort": false,
"isLive": false,
"thumbnailUrl": "https://i.ytimg.com/vi/aircAruvnKk/maxresdefault.jpg",
"language": "ko",
"languageName": "Korean",
"originalLanguage": "en",
"isAutoGenerated": false,
"translatedTo": "ko",
"wordCount": 3218,
"segmentCount": 280,
"transcript": "이건 숫자 3입니다. 글씨도 엉성하고 해상도도 28x28 픽셀로 아주 낮지만, 당신의 뇌는 아무 문제 없이 이걸 3으로 인식합니다. 뇌가 이렇게 쉽게 뭔가를 인식할 수 있다는 게 얼마나 신기한 일인지 잠시 생각해 보 …",
"segments": [
{
"start": 4.22,
"duration": 1.18,
"text": "이건 숫자 3입니다."
},
{
"start": 6.06,
"duration": 4.653,
"text": "글씨도 엉성하고 해상도도 28x28 픽셀로 아주 낮지만,"
}
],
"timestampedText": "[0:04] 이건 숫자 3입니다.\n[0:06] 글씨도 엉성하고 해상도도 28x28 픽셀로 아주 낮지만,\n…",
"chunks": [
{
"index": 0,
"start": 4.22,
"end": 171.66,
"text": "이건 숫자 3입니다. 글씨도 엉성하고 해상도도 28x28 픽셀로 아주 낮지만, 당신의 뇌는 아무 문제 없이 이걸 3으로 인식합니다. 뇌가 이렇게 …"
}
],
"availableLanguages": [
{
"code": "ar",
"name": "Arabic",
"isAutoGenerated": false,
"isTranslatable": true
},
{
"code": "bn",
"name": "Bangla",
"isAutoGenerated": false,
"isTranslatable": true
},
{
"code": "zh",
"name": "Chinese",
"isAutoGenerated": false,
"isTranslatable": true
}
]
}

Pricing: one event is one transcript

You pay per transcript delivered: one event is one video that returned a transcript. There is no platform usage charge on top.

Transcripts deliveredFree planStarterScaleBusiness
1 (the prefilled video)$0.005$0.0045$0.004$0.0035
50 (one channel or playlist at the default limit)$0.25$0.225$0.20$0.175
1,000$5.00$4.50$4.00$3.50
  • Videos that have no captions, private videos, bad links and any other video that could not be read still get a row with an error, and you are not charged for them.
  • Each run also has a start fee of $0.00005 per GB of memory, at least $0.00005.
  • Apify's Free plan includes $5 of usage a month, enough for about 1,000 transcripts here.
  • Apify Proxy traffic, including the residential fallback, is not billed to you. If you enter your own proxy URLs, your proxy provider bills you.
  • You can cap the cost of each run. The run stops when it reaches that amount, and the videos not yet processed are left out.

YouTube transcript API and integrations

  • API: start a run with a list of URLs and read the dataset. The API tab has snippets for curl, Node.js and Python.
  • Integrations: Make, Zapier, n8n and Google Sheets through Apify integrations.

Use it with AI agents (MCP)

AI assistants such as Claude, ChatGPT and Cursor can find and run this Actor through the Apify MCP server: they search the Store with search-actors, read the input with fetch-actor-details and start a run with call-actor. To give an agent only this tool, connect it to https://mcp.apify.com?tools=hxckya/youtube-transcript-subtitles-scraper. Because the Actor is priced per event, agents can also pay for runs with the MCP server's agentic payments.

Example prompt:

Get the English transcripts of the last 10 videos on @3blue1brown, split into 1,500-character chunks, then summarise each video in three bullets and give the timestamp each bullet comes from.

Good to know: captions, private videos and proxies

  • The Actor reads captions that already exist on YouTube, whether uploaded by the creator or generated automatically. It does not download video or audio or run speech recognition, so a video without captions returns an error row, free of charge.
  • Publish date, likes, category and the Short flag come from a second, very small request per video. If that request fails, the transcript is still delivered and those fields are null. likeCount is also null when YouTube shows no like count for the video.
  • Only public videos are supported. Private, members-only and some age-restricted videos cannot be read.
  • Requests go directly to YouTube first. If YouTube asks to confirm they are not from a bot, which is common from cloud servers, the run switches to the Proxy automatically (Apify residential proxy by default). Turn on Always use the proxy if runs keep getting challenged.
  • This Actor is an independent tool. It is not affiliated with, endorsed by or sponsored by YouTube or Google, nor with the open-source youtube-transcript-api (Python) or youtube-transcript (npm) projects. "YouTube" is used only to describe which site the captions come from.
  • Transcripts belong to the video creators. Use them in line with YouTube's terms and copyright law. Summaries, research, accessibility and quotes with attribution are common uses.

FAQ

Does it work without a YouTube Data API key?

Yes. There is no API key, Google Cloud project or login to set up. For other people's videos the official YouTube Data API is not an option anyway: its captions.download method requires permission to edit the video and costs 200 quota units per call.

Does it work with YouTube Shorts and live streams?

Yes. Shorts, /live/ and youtu.be links are read like any other video: if YouTube has captions for it, you get the transcript.

Can I get all the transcripts of a channel or playlist?

Yes. Add the channel (@name) or the playlist URL and set Max videos per playlist or channel.

Which languages are available?

Whatever the video has, listed in availableLanguages on each row, plus any translation target YouTube supports through Translate to.

Why does a video return "no captions"?

Its creator turned captions off, or YouTube has not generated any yet. The Actor does not transcribe audio itself. You are not charged for it.

Can I get subtitles for my video editor?

Turn on SRT subtitles or WebVTT subtitles and copy the field into a .srt or .vtt file.

My youtube-transcript-api code works locally but fails on a server. Will this help?

If your code on AWS, Google Cloud, Render, Vercel or a similar host gets "YouTube is blocking requests from your IP" (RequestBlocked, IpBlocked), HTTP 429 or empty transcripts, the usual cause is that YouTube treats cloud IP ranges differently. This Actor fetches the captions from Apify and moves to residential proxies by itself when YouTube refuses a request, and you are only charged for transcripts it delivers. There are also free fixes, and other paid ones; this open guide compares them with tested code: youtube-transcript-ip-blocked-guide.

Can I get likes, publish dates and subscriber counts too?

Views, likes, publish date, category and the thumbnail are on every row with a transcript, at no extra cost. For channel subscriber counts, use YouTube Scraper: Channels, Search & Playlists.

Changelog

  • 1.1: Video stats on every transcript row: publish date, like count, category, Short flag and the largest thumbnail, next to the views, duration and channel already there, plus a Video stats view. Same price per transcript.
  • 1.0: First release. Videos, Shorts, playlists and channels; language preference and translation; text, segments, timestamped text, SRT, VTT and chunks. No charge for videos without captions.