YouTube Transcript Scraper avatar

YouTube Transcript Scraper

Under maintenance

Pricing

from $0.30 / 1,000 results

Go to Apify Store
YouTube Transcript Scraper

YouTube Transcript Scraper

Under maintenance

Apify actor that extracts transcripts from YouTube videos

Pricing

from $0.30 / 1,000 results

Rating

0.0

(0)

Developer

fanio zilla

fanio zilla

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

What does YouTube Transcript Scraper do?

YouTube Transcript Scraper extracts transcripts and subtitles from YouTube videos at scale. Give it a list of video URLs and it returns the full caption text for each one — either as timestamped segments or as plain text — ready to feed into your LLM, search index, or analytics pipeline.

It is a fast, lightweight alternative to browser-based scrapers: instead of launching a headless browser, it calls YouTube's caption APIs directly over HTTP, so it can process thousands of videos quickly and cheaply. Think of it as a YouTube transcript API you can call on demand, schedule, or wire up to webhooks.

Target site: youtube.com

Why use YouTube Transcript Scraper?

Video is where the information is — but it's hard to search, summarize, or analyze until you have the text. Common use cases:

  • 🤖 Feed LLMs and RAG pipelines — turn video content into searchable text for summarization, Q&A, and knowledge bases.
  • 🔎 Build searchable archives — index the spoken content of lectures, podcasts, webinars, and product demos.
  • ✍️ Repurpose content — generate blog posts, articles, social snippets, and show notes from video.
  • 🌐 Translation & accessibility — pull captions across languages for translation or captioning workflows.
  • 📊 Research & monitoring — analyze what creators and competitors are saying across channels.

Why this Actor over a DIY script:

  • No browser, no bloat — pure HTTP via got-scraping with TLS fingerprinting, so it's fast and avoids bot detection.
  • Concurrent and resilient — processes up to 5 videos in parallel; one failing URL never breaks the run.
  • Proxy rotation built in — uses Apify's residential proxies to dodge rate limits.
  • Runs anywhere — schedule it, trigger it via API/webhooks, or integrate it with Zapier, Make, n8n, LangChain, and thousands of other tools.

What data can YouTube Transcript Scraper extract?

Each input video produces one dataset item with its transcript(s):

FieldTypeDescription
idstringYouTube video ID
urlstringCanonical video URL
inputstringThe original URL you provided
transcriptsarrayOne entry per language; empty [] if no captions exist
transcripts[].languagestringDisplay name, e.g. English, English (auto-generated), Spanish
transcripts[].contentarray | stringTimestamped segments (timestamp mode) or a single text string (text mode)

Each timestamp segment contains:

FieldTypeDescription
startMsnumberStart time in milliseconds
endMsnumberEnd time in milliseconds
startTimestringHuman-readable start (e.g. 0:18, 15:29)
textstringCaption text for that segment

How to extract transcripts from YouTube

  1. Sign up for free on Apify and open YouTube Transcript Scraper in the Console.
  2. Add your video URLs to the urls field (one per line). It accepts standard, youtu.be, Shorts, and embed URLs.
  3. Pick your options — output format (timestamps vs. plain text), whether to include auto-generated English, and whether to include non-English languages.
  4. Click Start and wait a few seconds. Results stream into the dataset as each video completes.
  5. Download your transcripts as JSON, CSV, Excel, or HTML from the dataset, or pull them via API.

No code required — but everything is also available through the Apify API for programmatic access.

How much will it cost?

This Actor is priced per compute unit (CU) and, because it uses lightweight HTTP requests instead of a browser, it's extremely efficient — a single compute unit can process a large batch of videos.

  • Free trial — every new Apify account gets a $5 usage credit on the Free plan, plenty to try it out.
  • Starter ($49/mo) and higher plans include monthly platform usage and unlock higher concurrency for bigger jobs.
  • For the exact rates and included usage, see the Pricing tab on the Actor page.

Cost scales with the number and length of videos, not with a per-result fee — so long playlists stay cheap.

Input

You can configure everything from the Input tab in the Console. See the input tab for the full, live schema. The main fields:

FieldTypeDefaultDescription
urlsstring[](required)YouTube video URLs to process
outputFormattimestamp | texttimestampTimestamped segments, or plain concatenated text
includeEnglishAGbooleantrueInclude auto-generated English captions when manual ones are missing
includeNonEnglishbooleantrueExtract all available languages, not just English
proxyConfigurationobjectResidential proxyResidential proxy required — YouTube blocks datacenter IPs. Defaults to groups: ["RESIDENTIAL"].

Minimal input example:

{
"urls": [
"https://www.youtube.com/watch?v=aircAruvnKk",
"https://youtu.be/dQw4w9WgXcQ"
],
"outputFormat": "timestamp",
"includeEnglishAG": true,
"includeNonEnglish": false
}

Output

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. Here's a simplified example with outputFormat: "timestamp":

[
{
"id": "aircAruvnKk",
"url": "https://www.youtube.com/watch?v=aircAruvnKk",
"input": "https://www.youtube.com/watch?v=aircAruvnKk",
"transcripts": [
{
"language": "English",
"content": [
{ "startMs": 291, "endMs": 3374, "startTime": "0:00", "text": "Hi, welcome." },
{ "startMs": 3374, "endMs": 6800, "startTime": "0:03", "text": "In this video we'll explore..." }
]
}
]
}
]

And the same video with outputFormat: "text":

[
{
"id": "aircAruvnKk",
"url": "https://www.youtube.com/watch?v=aircAruvnKk",
"input": "https://www.youtube.com/watch?v=aircAruvnKk",
"transcripts": [
{
"language": "English",
"content": "Hi, welcome. In this video we'll explore..."
}
]
}
]

Tips & advanced options

  • Going plain-text for LLMs? Set outputFormat to text to get one clean string per language — ideal for passing to GPT/Claude or embedding models.
  • Only want English? Turn off includeNonEnglish to skip noisy multi-language output.
  • Trim costs on huge batches — the Actor deduplicates nothing by design (it matches the original tool's behavior), so pass each URL only once if you don't want repeats.
  • Use a residential proxy. YouTube serves a "sign in to confirm you're not a bot" wall to datacenter IPs, which returns empty transcripts. The Actor defaults to a residential proxy (groups: ["RESIDENTIAL"]) — keep it on. Residential proxy usage is the main cost driver for this Actor.
  • Automate it. Schedule recurring runs for playlists/channels, or trigger runs via the API and pipe results straight to your storage or AI pipeline.

FAQ, disclaimers, and support

Is this an official YouTube API? No. It reads the public caption data YouTube serves to its web player. It is an unofficial alternative for cases where the official YouTube Data API doesn't expose transcripts.

Do I get timestamps? Yes — in timestamp mode every segment includes millisecond start/end plus a human-readable startTime.

What if a video has no captions? The Actor still returns a result for it, with an empty transcripts array, so your pipeline never breaks mid-batch.

Legal / scraping disclaimer

Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our Actors, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers. This Actor should be used in compliance with YouTube's Terms of Service.

Need help or have feedback? Use the Issues tab on the Actor page to report bugs or request features, and the API tab for programmatic access.