YouTube Transcript Scraper | Captions & Full Text | $0.8 / 1K avatar

YouTube Transcript Scraper | Captions & Full Text | $0.8 / 1K

Pricing

from $0.80 / 1,000 transcript scrapeds

Go to Apify Store
YouTube Transcript Scraper | Captions & Full Text | $0.8 / 1K

YouTube Transcript Scraper | Captions & Full Text | $0.8 / 1K

Get YouTube video transcripts and captions with timestamps plus one joined full-text field. Paste video, channel or playlist URLs. Auto-caption fallback and 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

Hriday Rungta

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

Share

Get the transcript of any YouTube video 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 data do you get from a YouTube transcript scraper?

For every video:

  • Full transcript text in one field (text), plus an optional segments array with start, duration and text per 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 status per video: ok, no-captions, language-not-available, unavailable or blocked

How to scrape YouTube transcripts (tutorial)

  1. Add one or more Video, channel or playlist URLs (one per line). Watch links, youtu.be links, Shorts and live links, bare 11-character video ids, @handle channels and playlist links all work.
  2. Pick your Preferred languages (default en). Human-made captions are tried first, then auto-generated ones.
  3. Set Max videos in total so you always know your worst-case bill.
  4. Click Start. Download the dataset as JSON, CSV, Excel or via API.

Input

FieldWhat it does
Video, channel or playlist URLsVideos give their transcript. Channels and playlists are expanded to their latest videos.
Max videos per channel / playlistHow many of the latest videos to take from each channel or playlist (default 10).
Max videos in totalHard cap on videos processed in the run (default 100).
Preferred languagesLanguage codes in order of preference, e.g. en, es, pt-BR.
Fall back to any available languageIf no preferred language exists, return the original-language captions instead of nothing (default on).
Prefer human-made captionsTake uploaded captions over auto-generated ones when both exist (default on).
Include timestamped segmentsAdds the segments array. Turn off for a lighter dataset.
Put timestamps inside the full textMakes text one line per cue, like [01:23] ....
List all available caption languagesAdds availableLanguages to each row.
Remove back-to-back duplicate linesDrops a line identical to the one right before it.

Output example

{
"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
RunCost
1 video$0.0023
100 videosabout $0.082
1,000 videosabout $0.80
10,000 videosabout $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.

Use cases

  • Feed transcripts into LLMs and RAG pipelines, chatbots and search indexes
  • Summarize, quote or repurpose videos into blog posts, newsletters and social posts
  • Research and monitor what a channel talks about, in text form
  • Build datasets for NLP, topic and keyword analysis

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 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.

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.

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.

More scrapers from this developer

ScraperWhat it does
YouTube ScraperVideo details, channel videos, search results and comments
YouTube Shorts ScraperChannel Shorts with views, likes and dates
YouTube Comments ScraperTop-level comments for any video
YouTube Channel ScraperChannel profile data and stats
Reddit ScraperPosts and comments from Reddit