YouTube Transcript Scraper
Pricing
from $3.00 / 1,000 results
YouTube Transcript Scraper
Get the transcript of any YouTube video, with timestamps, language, title and channel. Manual captions first, auto-generated as fallback. Pay only for transcripts delivered.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Seth Lake
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Paste YouTube video, channel or playlist links and get each video's full transcript, with timestamps, language, title and channel, as one clean row. You pay only for transcripts delivered: never for bot checks, retries, channel and playlist listing, videos without captions, removed videos or failed runs.
Who it's for
- AI and RAG builders feeding video content into LLMs, search indexes and agents.
- Creators and marketers repurposing videos into posts, show notes and summaries, or studying what competitors say.
- Researchers and analysts working with talks, lectures, interviews and news at scale.
What you get
One row per video:
| Field | Example |
|---|---|
transcript | the full text, ready for an LLM or a document |
segments | start and duration in seconds, and text, per line |
language, languageName, isAutoGenerated | en, English, false |
availableLanguages | every caption track the video has |
wordCount | 1843 |
title, channelName, channelId | the video's title and channel |
lengthSeconds, viewCount, publishDate, isLive | 213, 1234567, null (not provided by YouTube's app API), false |
Manual (creator-uploaded) captions are used first, YouTube's auto-generated captions as fallback. The row tells you which one you got. Download as JSON, CSV or Excel, or use the API.
How to use it
- Paste links into Video, channel or playlist URLs, one per line:
- Videos:
youtube.com/watch?v=…,youtu.be/…,/shorts/…,/live/…, or the 11-character ID. - Channels:
youtube.com/@name,/channel/UC…,/c/…or/user/…. You get the channel's uploads, newest first. - Playlists:
youtube.com/playlist?list=….
- Videos:
- Set Preferred language (default
en). - Set Max videos to cap the cost of the run (across all links), and Max videos per channel or playlist (default 100). Click Start.
A video that shows up twice (say, in a playlist and as its own link) is fetched and charged once.
Input example
{"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ","https://www.youtube.com/@3blue1brown","https://www.youtube.com/playlist?list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi"],"language": "en","includeTimestamps": true,"maxItems": 100,"maxVideosPerSource": 50}
Output example
Shortened; numbers are illustrative.
{"videoId": "dQw4w9WgXcQ","url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","title": "Rick Astley - Never Gonna Give You Up (Official Video)","channelName": "Rick Astley","channelId": "UCuAXFkgsw1L7xaCfnd5JJOw","lengthSeconds": 213,"viewCount": 1234567,"publishDate": null,"isLive": false,"language": "en","languageName": "English","isAutoGenerated": false,"availableLanguages": [{ "code": "en", "name": "English", "isAutoGenerated": false },{ "code": "en", "name": "English", "isAutoGenerated": true }],"transcript": "[♪♪♪] ♪ We're no strangers to love ♪ ♪ You know the rules and so do I ♪ …","wordCount": 13,"segments": [{ "start": 1.36, "duration": 1.68, "text": "[♪♪♪]" },{ "start": 18.64, "duration": 3.24, "text": "♪ We're no strangers to love ♪" }],"input": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","scrapedAt": "2026-09-30T12:00:00.000Z"}
input is the link the video came from: the video link itself, or the channel or playlist link. Missing values are null, never left out, so every row has the same columns. Turn off Include timestamped segments to get plain text only (segments is then null).
Pricing
$5 per 1,000 transcripts delivered ($0.005 per video), less on higher Apify plans: $4 on Silver, $3 on Gold and above. Proxies and compute are included, and there is no start fee.
- You're charged only when a transcript row lands in your dataset.
- Bot checks, retries, listing channels and playlists, videos without captions and removed or private videos are free.
- A run that delivers nothing costs nothing.
- Max videos and Apify's Maximum cost per run both cap your spend. If a run reaches your spending limit, it stops cleanly, keeps every transcript delivered so far, and tells you how many were left.
What's not charged, and where it's listed
Every input that didn't produce a row is listed in the run's RUN_SUMMARY record (Storage → Key-value store), with the reason. RUN_SUMMARY also lists each channel and playlist with its title and how many videos were found.
| Reason | Meaning |
|---|---|
no_transcript | The video has no captions and no auto-generated transcript. |
unavailable | Removed, private, age-restricted or region-locked (checked twice), or a channel or playlist that doesn't exist or is private. |
blocked | YouTube kept showing a bot check after every retry. Try again later. |
failed | Network or page error after every retry. |
invalid_input | Not a YouTube video, channel or playlist link. |
not_attempted | The run stopped first (Max videos or your spending limit). |
Known limits
- No search yet: paste video, channel or playlist links.
- Channels give all uploads (videos, Shorts and past live streams), newest first. Mixes, Watch Later and Liked videos aren't supported.
- No translation yet: you get a language the video actually has.
- No speech-to-text. Videos without any captions are skipped (and free), not transcribed.
- Age-restricted and members-only videos need a login, so they're skipped.
- YouTube changes its site often. If something looks wrong, open an issue and we'll fix it fast.
Advanced settings
- Proxy: Apify US residential by default, included in the price. YouTube blocks datacenter IPs, so leave this unless you know you need something else.
- Max parallel videos (default 10) and Retries per video (default 5).
Is it legal?
This Actor collects only public information that anyone can see on YouTube without logging in: captions, titles and channel names. No personal data, no accounts. YouTube's terms restrict automated access, so check that your use case is allowed where you are, and consult a lawyer if unsure.
Changelog
- Price (2026-09-30): lowered to $5 per 1,000 ($4 Silver, $3 Gold and above).
- 0.2 (2026-09-30): Channel and playlist links, with Max videos per channel or playlist. Listing is free; you still pay only for transcripts delivered.
- 0.1 (2026-09-30): First version. Video links and IDs, manual and auto-generated transcripts with timestamps, pay only for transcripts delivered.
Development
npm installnpm test # parser tests + crawl test against a local fake YouTubenpx apify run # local run; residential proxy only works on the platform, so locally set# "proxyConfiguration": { "useApifyProxy": false } in the input
Code: src/youtube.ts (pages and responses → data, pure), src/scraper.ts (crawl, retries, fallbacks, charging), src/main.ts (input, summary, status message). Tests are in test/. Channel and playlist fixtures are trimmed real responses (test/fixtures/trim-real.mjs); the rest are synthetic.