YouTube Transcript Scraper Goat avatar

YouTube Transcript Scraper Goat

Pricing

Pay per usage

Go to Apify Store
YouTube Transcript Scraper Goat

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

0.0

(0)

Developer

Goutam Soni

Goutam Soni

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 hours ago

Last modified

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

FieldTypeDescription
videosarrayList of YouTube videos. Accepts watch URLs, short youtu.be links, Shorts URLs, or raw 11-character video ids. Mix formats freely.
preferredLanguagesarrayOrdered list of language codes to prefer (for example en, es, de, ja). The first available match wins. Default ["en"].
includeTimestampsbooleanInclude start and duration per segment. Default true.
combineToPlainTextbooleanAlso emit a single fullText field with the whole transcript joined into one string. Default false.
concurrencyintegerNumber of videos processed in parallel. Default 5.
proxyConfigurationobjectOptional 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: true means the transcript came back with per-segment timing. The segments array has start and duration for each line.
  • isTimed: false means only the transcript text was available. The full text is returned in fullText (and as a single text block in segments), 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.

Part of the scraper suite by goat255: