YouTube Transcript Scraper - Videos, Playlists & Channels avatar

YouTube Transcript Scraper - Videos, Playlists & Channels

Pricing

$2.00 / 1,000 transcripts

Go to Apify Store
YouTube Transcript Scraper - Videos, Playlists & Channels

YouTube Transcript Scraper - Videos, Playlists & Channels

Extract YouTube transcripts/subtitles in any language from videos, Shorts, playlists and entire channels. Plain text, timestamps, SRT and VTT, auto-translation, plus video metadata. You only pay for transcripts actually found.

Pricing

$2.00 / 1,000 transcripts

Rating

0.0

(0)

Developer

Tidelark Data

Tidelark Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Get YouTube transcripts (subtitles / captions) from single videos, Shorts, whole playlists and entire channels in one run. Choose your languages, auto-translate with YouTube's built-in translation, and export as plain text, timestamped segments, SRT or WebVTT, together with video metadata. Use it from the Apify Console, the API, Make, Zapier, n8n, LangChain or any AI agent (MCP).

You only pay for transcripts that are actually found. Videos without captions are returned with status: "no_transcript" and are free.

Why this YouTube transcript scraper?

  • Channels and playlists, not just videos. Paste @channelhandle or a playlist URL and get transcripts for the latest N videos.
  • Any language + translation. Set your preferred languages (e.g. en, es, de), fall back to whatever exists, or translate everything into one language.
  • Human captions first. Creator-uploaded captions are preferred over auto-generated ones when both exist (configurable). Every result says whether it was auto-generated.
  • Every format you need. Plain text for LLMs and summaries, {start, duration, text} segments, [m:ss] timestamped text, SRT and VTT subtitle files.
  • Reliable. Automatic retries with fresh sessions and residential proxy fallback when YouTube rate-limits.
  • Fast and cheap. Videos are processed in parallel; no browser is used.

Use cases

  • Summarise, translate or repurpose videos with ChatGPT/Claude (RAG, chatbots, newsletters, blog posts)
  • Research and competitor analysis across entire channels
  • Subtitles (SRT/VTT) for re-uploads, accessibility and localisation
  • SEO: mine what top creators talk about in your niche
  • Build datasets for NLP and AI training

Input

FieldDescription
videosVideo URLs, Shorts URLs, video IDs, playlist URLs, channel URLs or @handles
maxVideosPerChannelMax videos per playlist/channel (newest first for channels)
languagesPreferred language codes in order, e.g. ["en", "es"]
anyLanguageFallbackReturn another language if preferred ones are missing (default: on)
preferManualCaptionsPrefer human-made over auto-generated captions (default: on)
translateToAuto-translate to this language code (optional)
includeText / includeSegments / includeTimestampedText / includeSrt / includeVttOutput formats
includeMetadataTitle, channel, duration, views, keywords, description, thumbnail

Example:

{
"videos": [
"https://www.youtube.com/watch?v=jNQXAC9IVRw",
"@mkbhd",
"https://www.youtube.com/playlist?list=PLFgquLnL59alCl_2TQvOiD5Vgm1hCaGSI"
],
"maxVideosPerChannel": 20,
"languages": ["en"]
}

Output

One item per video (real output, shortened):

{
"videoId": "jNQXAC9IVRw",
"url": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
"title": "Me at the zoo",
"channelName": "jawed",
"channelId": "UC4QobU6STFB0P71PMvOGN5A",
"durationSeconds": 19,
"viewCount": 443010280,
"availableLanguages": [
{ "languageCode": "en", "languageName": "English", "isAutoGenerated": false, "isTranslatable": true },
{ "languageCode": "de", "languageName": "German", "isAutoGenerated": false, "isTranslatable": true }
],
"status": "ok",
"language": "en",
"isAutoGenerated": false,
"translatedTo": null,
"wordCount": 39,
"segmentCount": 6,
"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.32, "duration": 2.66, "text": "the cool thing about these guys is that they have really..." }
]
}

Videos without captions (free, not charged):

{ "videoId": "8c7KOGxeY3w", "status": "no_transcript", "error": "This video has no captions/transcript." }

status is one of ok, no_transcript, unavailable (private/removed/age-restricted) or error.

Pricing

Pay per transcript: you are charged only for videos where a transcript was returned. Listing playlists/channels and videos without captions are free. Platform usage and proxies are included. You can set a maximum cost per run in the run options.

FAQ

Does it work for videos without subtitles? It returns YouTube's captions (human or auto-generated). Videos where YouTube has no captions at all return no_transcript and are not charged.

Can I get a transcript in a language the video doesn't have? Yes: set translateTo and YouTube's machine translation is used.

Is it legal? This Actor only reads publicly available captions and video metadata, without logging in. You are responsible for how you use the content, including copyright.

Support

Missing a feature or found a bug? Open an issue on the Issues tab - issues are answered quickly.