Pricing
Pay per usage
YouTube Transcript Scraper Goat
Extract transcripts and captions from public YouTube videos in bulk. Returns timed segments (start, duration, text), the language, whether captions are auto-generated, and an optional joined plain-text blob. Accepts watch URLs, youtu.be links, Shorts, or raw video ids. No login or cookies.
Pricing
Pay per usage
Rating
5.0
(1)
Developer
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
YouTube Transcript Scraper
Extract transcripts and captions from public YouTube videos in bulk. Give it a list of videos and get back clean transcript text for each one. No login, no cookies, no browser automation.
What it does
For every video you provide, the actor returns:
- The transcript text, as ordered timed segments where available (each with a start time, duration, and text).
- A single joined plain-text version of the whole transcript (optional).
- The language the transcript was served in.
- Whether the captions are auto-generated or human-written.
- A flag telling you whether the result includes per-segment timing.
- A segment count for quick scanning.
It handles long videos correctly. A multi-hour video returns its complete transcript (thousands of segments), not just the first chunk. A tiered fetch keeps results coming even when one path is temporarily unavailable.
Input
| Field | Type | Description |
|---|---|---|
videos | array | List of YouTube videos. Accepts watch URLs, short youtu.be links, Shorts URLs, or raw 11-character video ids. Mix formats freely. |
preferredLanguages | array | Ordered list of language codes to prefer (for example en, es, de, ja). The first available match wins. Default ["en"]. |
includeTimestamps | boolean | Include start and duration per segment. Default true. |
combineToPlainText | boolean | Also emit a single fullText field with the whole transcript joined into one string. Default false. |
concurrency | integer | Number of videos processed in parallel. Default 5. |
proxyConfiguration | object | Optional proxy. Transcripts work cookielessly without one for typical volumes. |
Example input
{"videos":["https://www.youtube.com/watch?v=dQw4w9WgXcQ","https://youtu.be/dQw4w9WgXcQ","dQw4w9WgXcQ"],"preferredLanguages":["en","es"],"includeTimestamps":true,"combineToPlainText":false}
Output
One dataset item per video. Fields are returned in a clean, predictable order.
{"videoId":"dQw4w9WgXcQ","videoUrl":"https://www.youtube.com/watch?v=dQw4w9WgXcQ","title":"Example Video Title","language":"en","isAutoGenerated":false,"isTimed":true,"segmentCount":61,"segments":[{"start":18.64,"duration":3.24,"text":"We're no strangers to love"},{"start":22.64,"duration":4.32,"text":"You know the rules and so do I"}]}
When combineToPlainText is enabled, each row also includes a fullText field with the entire transcript joined into one string.
Timed vs plain-text results
The isTimed flag tells you what kind of result you got:
isTimed: truemeans the transcript came back with per-segment timing. Thesegmentsarray hasstartanddurationfor each line.isTimed: falsemeans only the transcript text was available. The full text is returned infullText(and as a single text block insegments), with no per-line timing.
The row shape is identical either way, so you can process every row the same.
Videos without a transcript
If a video has no captions available, the actor returns a clean row with an error field set to no_transcript_available and an empty segments array, rather than failing the run. This keeps a bulk run intact even when a few inputs lack captions.
Use cases
- Summarize or analyze video content with your own tools.
- Build searchable archives of a channel's spoken content.
- Feed transcripts into translation or repurposing workflows.
- Power research and content analysis across many videos at once.
Notes
- Works on public videos that have captions (manual or auto-generated).
- Private, age-restricted, or members-only videos cannot be transcribed.
- Language selection prefers a human-written transcript over an auto-generated one in the same language.
FAQ
Do I need a YouTube API key or login?
No. This actor extracts public transcripts without any API key, login, or cookies.
Which videos work?
Any public YouTube video that has captions or auto-generated transcripts available.
What happens if a video has no transcript?
The actor reports that cleanly for that video and continues with the rest of your list.
Can I get transcripts in a specific language?
Yes. Set preferredLanguages, and when a video provides multiple caption tracks the available languages are returned.
Can I get timestamps or one plain-text block?
Both. Use includeTimestamps for per-line timing, or combineToPlainText for a single clean transcript string.
Related actors
Part of the scraper suite by goat255:
- YouTube Channel Scraper - a channel's videos with metadata.
- YouTube Comments Scraper - comments from any video.
