YouTube Transcript Scraper | Video to Text | $0.8 / 1K
Pricing
from $0.80 / 1,000 transcript scrapeds
YouTube Transcript Scraper | Video to Text | $0.8 / 1K
YouTube transcript scraper: turn a YouTube video into text. Timestamped captions plus one joined full-text field. Paste video, channel or playlist URLs. Auto-caption fallback, language choice. No login, no browser. $0.0008 per transcript.
Pricing
from $0.80 / 1,000 transcript scrapeds
Rating
0.0
(0)
Developer
Hriday Rungta
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 days ago
Last modified
Categories
Security
Limited permissionsShare
Get the YouTube transcript of any video (YouTube video to text) as timestamped segments and one joined full-text field, ready for LLMs, RAG, summaries, search and content repurposing. Paste video URLs, or a whole channel or playlist, and get one row per video. No login, no API key, no browser.
You are only charged for videos where a transcript is actually returned. Videos without captions, private or deleted videos are returned as a status row and are never charged.
What you can use YouTube transcripts for
- YouTube transcript download: paste a video link and get the transcript as text or JSON, with human or auto-generated captions.
- YouTube transcript API for your workflow: call the Actor over the Apify API (or from n8n, Make, Zapier, Python or JavaScript) and get the transcript of any video as JSON, with no YouTube API key.
- Download YouTube transcripts with timestamps: every caption line comes with
startandduration, or turn on timestamps inside the text ([01:23] ...) for a readable transcript file. - YouTube transcript to text: one clean
textfield per video, with back-to-back duplicate lines removed, to paste into a doc, a notes app or a prompt. - YouTube channel transcripts in bulk: paste a channel (
@handle, channel URL or id) and get the transcripts of its latest videos. - YouTube playlist transcripts: paste a playlist URL and get one row per video in the playlist, up to the limit you set.
- Feed LLMs and RAG pipelines: summarise videos, answer questions about them, or build a searchable knowledge base from a creator's whole back catalogue.
- Repurpose video into blog posts, newsletters and social posts: start from the real words, not a re-typed outline.
- Research and content monitoring: track what a channel or competitor talks about, in text you can search and count.
- NLP, topic and keyword datasets: build a transcript dataset in any language YouTube has captions for, with language and auto-generated flags on every row.
How to scrape YouTube transcripts (tutorial)
- Add one or more Video, channel or playlist URLs (one per line). Watch links,
youtu.belinks, Shorts and live links, bare 11-character video ids,@handlechannels and playlist links all work. - Pick your Preferred languages (default
en). Human-made captions are tried first, then auto-generated ones. - Set Max videos in total so you always know your worst-case bill.
- Click Start. Download the dataset as JSON, CSV, Excel or via API.
What data do you get from a YouTube transcript?
For every video:
- Full transcript text in one field (
text), plus an optionalsegmentsarray withstart,durationandtextper caption line - Language of the transcript, its name, and whether it is auto-generated or human-made
- Video details: title, channel name and id, length in seconds
- Word count and segment count
- Optionally every caption language the video offers (
availableLanguages) - A
statusper video:ok,no-captions,language-not-available,unavailableorblocked
Input
| Field | What it does |
|---|---|
Video, channel or playlist URLs (videoUrls) | Videos give their transcript. Channels and playlists are expanded to their latest videos. |
Max videos per channel / playlist (maxVideosPerSource) | How many of the latest videos to take from each channel or playlist (default 10). |
Max videos in total (maxItems) | Hard cap on videos processed in the run (default 100). |
Preferred languages (languages) | Language codes in order of preference, e.g. en, es, pt-BR. |
Fall back to any available language (fallbackToAnyLanguage) | If no preferred language exists, return the original-language captions instead of nothing (default on). |
Prefer human-made captions (preferManualCaptions) | Take uploaded captions over auto-generated ones when both exist (default on). |
Include timestamped segments (includeSegments) | Adds the segments array. Turn off for a lighter dataset. |
Put timestamps inside the full text (timestampsInText) | Makes text one line per cue, like [01:23] .... |
List all available caption languages (includeAvailableLanguages) | Adds availableLanguages to each row. |
Remove back-to-back duplicate lines (dedupeRepeatedLines) | Drops a line identical to the one right before it. |
Example input
{"videoUrls": ["https://www.youtube.com/watch?v=jNQXAC9IVRw","https://www.youtube.com/@veritasium"],"maxVideosPerSource": 5,"maxItems": 10,"languages": ["en"],"includeSegments": true}
Output
Each row has videoId, url, status, title, channelId, channelTitle, lengthSeconds, language, languageName, isAutoGenerated, matchedRequestedLanguage, segmentCount, wordCount, text, segments, availableLanguages (optional) and scrapedAt.
Example output
{"videoId": "jNQXAC9IVRw","url": "https://www.youtube.com/watch?v=jNQXAC9IVRw","status": "ok","title": "Me at the zoo","channelId": "UC4QobU6STFB0P71PMvOGN5A","channelTitle": "jawed","lengthSeconds": 19,"language": "en","languageName": "English","isAutoGenerated": false,"matchedRequestedLanguage": true,"segmentCount": 6,"wordCount": 39,"text": "All right, so here we are, in front of the elephants the cool thing about these guys is that they have really... really really long trunks and that's cool (baaaaaaaaaaahhh!!) and that's pretty much all there is to say","segments": [{ "start": 1.2, "duration": 2.16, "text": "All right, so here we are, in front of the elephants" },{ "start": 5.318, "duration": 2.656, "text": "the cool thing about these guys is that they have really..." }],"scrapedAt": "2026-10-14T04:59:00.257Z"}
A video with no captions comes back like this (not charged):
{ "videoId": "jWdxXdp8sZI", "status": "no-captions", "message": "This video has no captions / transcript available.", "title": "...", "text": null }
Pricing
Pay per event, no subscription:
- $0.0015 once per run (start fee)
- $0.0008 per transcript returned, which is $0.80 per 1,000 transcripts
| Run | Cost |
|---|---|
| 1 video | $0.0023 |
| 100 videos | about $0.082 |
| 1,000 videos | about $0.80 |
| 10,000 videos | about $8.00 |
You are charged for the transcript only when a transcript is returned. Videos without captions, unavailable videos and videos YouTube would not serve are free. The platform's own usage (compute) is included in these prices for paying users.
Integrations and scheduling
- Google Sheets, Excel, CSV, JSON: export from the dataset page, or push results to Google Sheets with the Apify integration.
- Make, n8n and Zapier: start the Actor from a workflow and read the dataset when the run finishes. Typical flow: new video, then transcript, then LLM summary, then Notion, Slack or email.
- Webhooks and API: call the Actor over the Apify REST API or the JavaScript and Python clients, and get a webhook when a run succeeds.
- Apify Schedules: run a channel or playlist daily or weekly to pick up new uploads. The Actor does not remember earlier runs, so to process only new videos, keep the
videoIdvalues you already have and skip them in your workflow (or set a smallmaxVideosPerSourcethat matches how often the channel posts). - Tasks: save a channel, language and caps as an Apify Task and re-run it with one click or on a schedule.
FAQ
Does it work for auto-generated captions?
Yes. If a video only has auto-generated captions you get those, and isAutoGenerated is true.
Does it transcribe audio with AI?
No. It returns the captions YouTube already has for the video, human-made or auto-generated. Videos with no captions at all return no-captions and are free.
Can it translate transcripts?
No. YouTube's own caption translation could not be reached reliably over plain HTTP, so this Actor returns the languages a video natively has. Use "List all available caption languages" to see what a video offers.
Can I scrape a whole channel or playlist?
Yes. Add the channel or playlist URL and set "Max videos per channel / playlist". The latest videos are taken in the order YouTube lists them.
Does it work for long videos and live-stream replays?
Yes, long videos work (a 4-hour course returned about 2,900 segments in one row). Live streams that are still running have no final transcript.
Why use this instead of the official YouTube Data API or the youtube-transcript-api library?
The official YouTube Data API can list captions, but downloading a caption track requires OAuth permission from the video's owner, so you cannot use it to read transcripts of other people's videos. Open-source libraries work without a key, but YouTube often blocks requests from cloud and datacenter IPs, so you end up running proxies and retries yourself. This Actor handles that for you (it retries on fresh IPs) and returns the transcript, language, auto-generated flag and video details in one row. The trade-off: it is a paid, hosted service and not an official YouTube product.
Why did a video come back as blocked?
YouTube sometimes refuses a request from a given IP. The Actor retries up to 20 times on fresh IPs. If it still fails, the video is not charged: run it again later.
What are alternatives to this YouTube transcript scraper?
The most-used option on the Store is Youtube Transcript Scraper by pintostudio. What this Actor offers: channel and playlist expansion, language preference with human-captions-first, optional timestamps inside the text and a status row per video. Compare the feature lists and prices before you choose. If you need transcripts of audio that has no captions, you need a speech-to-text tool instead, which this Actor is not.
Known limits
Private, deleted and age-restricted videos return unavailable. Some videos have captions turned off by the uploader. Channel and playlist expansion reads the first pages YouTube serves for that channel or playlist.
Is it legal to scrape YouTube transcripts?
This Actor reads publicly available captions of public videos and uses no login. You are responsible for how you use the data: respect copyright and YouTube's Terms of Service, and do not republish transcripts of videos you have no rights to. Do not use it to collect personal data in ways that break privacy law such as GDPR.
Related Actors
| Actor | What it does |
|---|---|
| YouTube Scraper (Streamers) | The most-used YouTube scraper on the Store: videos, channels and search results |
| Youtube Transcript Scraper (pintostudio) | Another transcript Actor, for comparison |
| YouTube Comments Scraper | Comments and replies for any video |
| YouTube Scraper | Video details, channel videos, search results and comments |
| YouTube Channel Scraper | Channel profile data and stats |
| YouTube Shorts Scraper | Channel Shorts with views, likes and dates |
| Website Content Crawler | Websites to clean Markdown for LLMs and RAG |