YouTube Transcript Scraper
Pricing
from $2.80 / 1,000 video transcribeds
YouTube Transcript Scraper
Get YouTube transcripts with timecodes, chapters and video metadata. Works with single videos, playlists and whole channels, returns SRT or WebVTT subtitles, and splits transcripts into RAG chunks that keep their timecodes. Export data, run via API, or schedule runs.
Pricing
from $2.80 / 1,000 video transcribeds
Rating
0.0
(0)
Developer
Matvey
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 hours ago
Last modified
Categories
Share
Get YouTube transcripts with timecodes, chapters and full video metadata. Point it at a video, a playlist or an entire channel. Returns plain text, timed segments, ready-made SRT or WebVTT subtitle files, and retrieval chunks that keep the moment in the video where each passage was said. No API key, no cookies, no login.
What is YouTube Transcript Scraper?
YouTube Transcript Scraper turns spoken video into structured text you can search, quote and feed to a model. Give it links, get one row per video with the transcript and everything around it: title, channel, publication date, duration, view count, chapters and the languages the video has captions in.
The thing most transcript tools drop is where something was said. Here every caption line keeps its start time, every chapter is returned with its boundaries, and each retrieval chunk carries its own timecode and chapter title — so an answer built on this data can point at minute 14:32 instead of quoting a wall of text.
| What you give it | What you get back |
|---|---|
| A video URL or bare video id | Transcript, segments, chapters, metadata |
| A playlist URL | Every video in it, up to your limit |
| A channel URL | The channel's videos, newest first |
chunkForRag: true | Chunks with chapter titles and timecodes |
subtitleFormat: srt | A subtitle file ready to attach |
What data can YouTube Transcript Scraper extract?
| Field | Type | Example |
|---|---|---|
videoId | string | dQw4w9WgXcQ |
url | string | https://www.youtube.com/watch?v=dQw4w9WgXcQ |
title | string | Rick Astley - Never Gonna Give You Up |
channel / channelId / channelUrl | string | Rick Astley |
publishedAt | string | 2009-10-25 |
durationSeconds | integer | 213 |
viewCount / likeCount / commentCount | integer | 1663000000 |
description | string | Full description, when requested |
tags / categories | array | ["rick astley", "music"] |
thumbnail | string | Thumbnail URL |
isLive | boolean | false |
language | string | en, or a track label such as en-nP7-2PuUl7o |
isAutoGenerated | boolean | false for human-written subtitles |
availableLanguages | array | ["en", "de", "ja", "pt"] |
transcript | string | We're no strangers to love… |
wordCount / charCount / segmentCount | integer | 481 / 2510 / 60 |
segments | array | [{"start": 0.59, "duration": 5, "text": "…"}] |
chapters | array | [{"title": "Intro", "start": 0, "end": 47}] |
chunks | array | [{"index": 0, "chapter": "Intro", "start": 0.59, "startTimecode": "00:00:00", "text": "…"}] |
subtitles | string | A complete SRT or WebVTT file |
status / errorCode / errorMessage | string | ok, or why a video was skipped |
scrapedAt | string | 2026-09-05T10:31:02+00:00 |
How much does it cost to scrape YouTube transcripts?
| Event | Price | When it is charged |
|---|---|---|
| Video transcribed | $0.004 | Per video whose transcript is returned |
| Video listed | $0.0002 | Per video found inside a channel or playlist |
Videos without captions are never charged. Neither are private, removed or age-restricted videos: they come back as error rows with a reason, at no cost.
| Job | Cost |
|---|---|
| 1,000 videos | $4.00 |
| A 200-video channel | $0.84 |
| 50 videos from each of 20 channels | $4.20 |
| One long podcast episode | $0.004 |
Comparable transcript Actors charge $5 to $9 per 1,000 videos. The Apify Free plan includes $5 of monthly usage, which is about 1,200 videos before you pay anything.
How to get a YouTube transcript
- Click Try for free and sign in to Apify.
- Paste video, playlist or channel links into Videos, playlists or channels.
- Leave the language as
en, or set the two-letter code you need. - Switch on Split into RAG chunks if the text is going into a vector database, or pick a Subtitle file format if you need SRT or WebVTT.
- Press Start, then read the Output tab or export as JSON, CSV or Excel.
⬇️ Input

{"videos": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ","https://www.youtube.com/playlist?list=PLbpi6ZahtOH6Blw3RGYpWkSByi_T7Rygb","https://www.youtube.com/@veritasium"],"language": "en","allowAutoGenerated": true,"includeSegments": true,"chunkForRag": false,"maxVideosPerChannel": 25}
What counts as an input
Video URLs, bare 11-character video ids, youtu.be short links, Shorts and live URLs, playlist URLs, and channel URLs in every form (/@handle, /channel/UC…, /c/name). Playlists and channels are expanded automatically, up to Max videos per channel or playlist.
Languages
language takes a two-letter code. YouTube labels many tracks en-nP7-2PuUl7o rather than plain en — those count as English here, which is why videos other tools report as "no captions" work fine. Human-written subtitles are preferred; Use auto-generated captions when needed decides whether YouTube's automatic ones are acceptable as a fallback, and isAutoGenerated tells you which you got.
RAG chunks with timecodes
With chunkForRag: true the transcript is split into chunks that break on chapter boundaries and sentence ends rather than on a raw character count. Each chunk carries the chapter it belongs to and the timecode where it starts:
{"index": 3,"chapter": "How the engine works","start": 872.5,"end": 954.1,"startTimecode": "00:14:32","text": "The compression stage is where most of the loss happens…","charCount": 1180}
chunkOverlapSeconds repeats a few seconds of the previous chunk at the start of the next one, which helps when a sentence straddles a boundary.
Subtitle files
subtitleFormat returns a complete SRT or WebVTT file in the subtitles field, timings included, ready to save next to the video.
⬆️ Output

{"videoId": "dQw4w9WgXcQ","title": "Rick Astley - Never Gonna Give You Up (Official Video)","channel": "Rick Astley","publishedAt": "2009-10-25","durationSeconds": 213,"language": "en","isAutoGenerated": false,"availableLanguages": ["en", "de", "ja", "pt"],"transcript": "We're no strangers to love. You know the rules and so do I…","wordCount": 481,"segmentCount": 60,"segments": [{ "start": 0.59, "duration": 5, "text": "We're no strangers to love" }],"chapters": [],"status": "ok","scrapedAt": "2026-09-05T10:31:02+00:00"}
Error rows
errorCode | Meaning |
|---|---|
no-captions | The video has no captions in the language you asked for; availableLanguages lists what it does have |
video-unavailable | Removed, or the id does not exist |
private-video | Private or members-only |
age-restricted | Behind an age gate |
rate-limited | YouTube throttled the run after several retries |
invalid-input | Not a YouTube video, playlist or channel |
Use cases
Feeding video into a RAG pipeline
Chunks with timecodes let a retrieval answer cite the exact moment, so a support bot trained on tutorial videos can link to 14:32 rather than to the video as a whole.
Content research and repurposing
Pull a competitor's channel, read what they cover, and turn talks into articles, newsletters or show notes.
Subtitles and translation workflows
Take the SRT out, translate it, put it back. Auto-generated captions are marked, so you know which files need a human pass.
Search across a channel
Transcribe a whole channel once, index the text, and search hundreds of hours of video by phrase.
Dataset building
Transcripts with duration, view count and publication date make a clean training or analysis set, one row per video.
Integrations
- API:
POST https://api.apify.com/v2/acts/lergassy~youtube-transcript-scraper/runs - Python:
ApifyClient(token).actor('lergassy/youtube-transcript-scraper').call(run_input={'videos': ['dQw4w9WgXcQ']}) - JavaScript:
await client.actor('lergassy/youtube-transcript-scraper').call({ videos: ['dQw4w9WgXcQ'] }) - n8n, Make, Zapier, Google Sheets, Airtable: run the Actor and map the dataset onward.
- MCP: available through the Apify MCP server as a callable tool.
- Webhooks: fire a webhook when a run finishes.
🤖 For AI agents and LLM apps
{ "videos": ["dQw4w9WgXcQ"], "language": "en", "chunkForRag": true }
- One row per video;
statusisokorerror, so a skipped video needs no log parsing. transcriptis the field to summarise;chunksis the field to embed.- Every chunk carries
startTimecodeandchapter, so an answer can cite where in the video it came from. isAutoGeneratedwarns when the text is machine-heard rather than human-written.- Videos without captions are never charged, so agent retries stay cheap.
❓ FAQ
Is it legal to scrape YouTube transcripts?
The Actor reads captions that YouTube publishes openly on public video pages, with no login. What you may do with that text depends on the video's copyright and on YouTube's terms, so check both before republishing. This is not legal advice.
Do I need an API key or cookies?
No. There is nothing to configure beyond the links.
Why does it use a proxy by default?
YouTube refuses data-centre addresses outright — in testing, nine requests in ten came back with "Sign in to confirm you're not a bot". The Actor uses residential proxies with a fresh address per video, which measured a 95% success rate. You can override the proxy setting, but success will drop sharply.
Does it work with videos that have no subtitles?
No. If a video has no captions at all, nothing exists to fetch, and the row comes back as no-captions at no charge. For those, transcribe the audio instead.
Can it do whole channels?
Yes. Pass the channel URL and set Max videos per channel or playlist. Listing a video costs $0.0002; only the ones that produce a transcript cost the full price.
Can I use it with the Apify API or an MCP server?
Yes to both, like any Apify Actor.
Your feedback
Missing a field or a format? Open an issue on the Issues tab — issues are answered quickly.
You might also like
| Actor | What it does |
|---|---|
| Document Text Extractor | PDF, Word, Excel and PowerPoint to Markdown, tables and RAG chunks |
| OCR Text Extractor | Images and scanned PDFs to text with confidence scores |
| Trustpilot Reviews API | Trustpilot reviews, ratings and company replies |
| Software Reviews Scraper | Capterra, Software Advice, GetApp and TrustRadius in one schema |