Youtube Transcript Scraper
Pricing
from $3.99 / 1,000 results
Youtube Transcript Scraper
YouTube Transcript Scraper extracts video transcripts, captions, timestamps, titles, channel details, and other available metadata from YouTube videos. Automate content research, keyword analysis, video summarization, SEO research, competitor analysis, and large-scale transcript collection.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
ScraperForge
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
7 days ago
Last modified
Categories
Share
YouTube Transcript Scraper — Bulk Video Transcripts with Timestamps or Clean Text
Extract transcripts from YouTube videos in bulk. Paste video URLs and get each transcript back as structured data — either with millisecond timestamps for search and clipping, or as clean plain text ready to feed into an LLM.
Multi-language support, auto-generated caption handling, and results written to the dataset as each video completes.
What is YouTube Transcript Scraper?
Video is the least searchable content format on the internet. A transcript fixes that — it turns an hour of footage into text you can search, quote, summarise, embed or analyse.
This Actor collects transcripts for a list of YouTube videos and returns them in whichever shape your workflow needs:
timestampformat gives every caption segment withstartMs,endMs, a readablestartTimeand the text — the right shape for search indexes, clip-finding and subtitle work.textformat returns clean plain text — the right shape for LLM prompts, RAG pipelines and summarisation, where timestamps are noise.
Rows are pushed as each video finishes, so a long list starts producing usable data immediately rather than at the end.
What data can you extract?
| Field | Description |
|---|---|
id | YouTube video ID |
url | Canonical video URL |
input | The URL you supplied |
transcripts[] | One entry per available transcript track |
Each entry in transcripts[] contains:
| Field | Description |
|---|---|
language | Transcript language |
content | The transcript itself — an array of { startMs, endMs, startTime, text } segments in timestamp format, or plain text in text format |
Scope, stated plainly: this Actor returns transcripts. Video titles, view counts and channel statistics are not part of the output — it does one job and does it cheaply. Pair it with a metadata scraper when you need both.
Why teams extract YouTube transcripts
For AI and RAG pipelines
Video is a large, underused knowledge source. Transcripts convert a channel's back catalogue into text chunks you can embed and retrieve — with no speech-to-text cost, because YouTube already produced the captions.
For SEO and content repurposing
A transcript becomes a blog post, a newsletter, a set of social clips and an FAQ. text format is the fastest route from video to draft.
For research and analysis
Interview, lecture and conference content becomes analysable — searchable for terms, codeable for themes, quotable with a timestamp.
For clip finding and subtitle work
timestamp format gives millisecond boundaries per segment, so locating the moment a phrase was said is a text search rather than a scrub through the video.
For competitive intelligence
Reading what competitors actually say in their videos — at scale, in text — is far faster than watching them.
For accessibility auditing
Comparing available transcript languages across a catalogue shows where captioning coverage is missing.
How to extract transcripts step by step
- Collect the YouTube video URLs you want.
- Paste them into YouTube Video URLs, one per line.
- Choose an Output Format:
timestampfor time markers,textfor clean prose. - Decide whether to include English auto-generated and non-English transcripts.
- Click Start — rows appear as each video completes. Export as JSON (recommended) or CSV.
⬇️ Input
Example input
{"urls": ["https://www.youtube.com/watch?v=4KbrxIpQgkM","https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"outputFormat": "text","includeEnglishAG": true,"includeNonEnglish": false}
Input reference
| Field | Type | Default | Description |
|---|---|---|---|
urls | array | [] (required) | YouTube video links. Each completed video appears in the dataset automatically. |
outputFormat | string | text | timestamp — segments with time markers. text — clean plain text. |
includeEnglishAG | boolean | true | Include English auto-generated transcripts when available. Most videos only have auto-generated captions, so leaving this on matters. |
includeNonEnglish | boolean | false | Include transcripts in languages other than English. |
proxyConfiguration | object | {} | Optional. Uses Apify Residential proxy by default when needed. |
If a run returns empty transcripts, check
includeEnglishAGfirst. Manually written captions are rare; auto-generated ones are the norm, and turning that option off silently removes most results.
⬆️ Output
Example output — timestamp format
{"id": "4KbrxIpQgkM","url": "https://www.youtube.com/watch?v=4KbrxIpQgkM","input": "https://www.youtube.com/watch?v=4KbrxIpQgkM","transcripts": [{"language": "English (auto-generated)","content": [{ "startMs": 120, "endMs": 3600, "startTime": "0:00", "text": "When we started, we had no budget at all." },{ "startMs": 3600, "endMs": 7620, "startTime": "0:03", "text": "So everything had to be organic." }]}]}
Example output — text format
{"id": "4KbrxIpQgkM","url": "https://www.youtube.com/watch?v=4KbrxIpQgkM","input": "https://www.youtube.com/watch?v=4KbrxIpQgkM","transcripts": [{"language": "English (auto-generated)","content": "When we started, we had no budget at all. So everything had to be organic…"}]}
Illustrative values — a live run returns real transcript data.
Usage recipes
Build a RAG knowledge base
{"urls": ["…list of video URLs…"],"outputFormat": "text","includeEnglishAG": true}
Plain text chunks straight into your embedding pipeline — no timestamp stripping required.
Build a searchable clip index
{"urls": ["…list of video URLs…"],"outputFormat": "timestamp","includeEnglishAG": true}
Index the text of each segment against its startMs, and a keyword search returns the exact moment.
Multi-language coverage
{"urls": ["…video URLs…"],"outputFormat": "text","includeEnglishAG": true,"includeNonEnglish": true}
Each available language becomes a separate entry in transcripts[].
Repurpose a video into a blog post
Run a single video in text format and feed the transcript to your writing tool. It is the fastest video-to-draft route available.
Audit caption coverage
Run a channel's videos and check which return empty transcripts — those have no captions at all, which matters for accessibility and for discoverability.
How does this compare to YouTube's official API?
The YouTube Data API exposes a captions endpoint, but downloading caption content requires OAuth authorisation as the video owner. You cannot pull transcripts for videos you do not own through the official API — which rules it out for research, competitive analysis and content pipelines.
This Actor reads the publicly available caption tracks that YouTube serves to any viewer, with no API key, no OAuth flow and no quota. If you own the videos and need the sanctioned route, use the Data API.
Integrate and automate
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run = client.actor("scraperforge/youtube-transcript-scraper").call(run_input={"urls": ["https://www.youtube.com/watch?v=4KbrxIpQgkM"],"outputFormat": "text","includeEnglishAG": True,})for v in client.dataset(run["defaultDatasetId"]).iterate_items():for t in v["transcripts"]:print(v["id"], "|", t["language"], "|", str(t["content"])[:120])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_API_TOKEN>' });const run = await client.actor('scraperforge/youtube-transcript-scraper').call({urls: ['https://www.youtube.com/watch?v=4KbrxIpQgkM'],outputFormat: 'text',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
REST API
curl -X POST "https://api.apify.com/v2/acts/scraperforge~youtube-transcript-scraper/runs?token=<YOUR_APIFY_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"urls":["https://www.youtube.com/watch?v=4KbrxIpQgkM"],"outputFormat":"text"}'
n8n, Make, Zapier and AI agents
Call the Actor from n8n, Make, Zapier or an MCP-capable agent — a common pattern is transcript → LLM summary → Notion or Slack.
Schedules and webhooks
Attach a Schedule to transcribe new uploads from a channel list, and use webhooks or the Google Sheets / Airtable / Google Drive integrations to route the text.
Pricing and what you are charged for
Pay-per-event: a small Actor-start charge plus a charge per video row delivered. Multiple language tracks travel inside the same row, so enabling non-English transcripts adds data without adding billed rows.
Current rates are on the Pricing tab of this Actor's page, and Apify shows an estimate before and during every run. Residential proxy traffic, when used, is billed separately by the platform.
Limits, reliability and blocking
- Only videos that have captions can be transcribed. This Actor reads existing caption tracks; it does not run speech-to-text. A video with captions disabled returns an empty
transcriptsarray. - Auto-generated captions are the norm. Keep
includeEnglishAGon unless you specifically want human-written captions only. - Auto-generated accuracy varies with audio quality, accents and background noise — expect occasional errors, especially with technical terms.
- Non-English transcripts are off by default. Enable
includeNonEnglishto include them. - The output is transcripts only — no titles, view counts or channel data.
- Residential proxy is used when needed, which is what keeps success rates high on larger runs.
- Private, unlisted and age-restricted videos are generally not accessible.
- Default run options are 4 GB memory and a 1-hour timeout; raise the timeout for long URL lists.
Is it legal to scrape YouTube transcripts?
This Actor reads publicly available caption tracks — the same captions any viewer can turn on while watching. It does not log in, download video files, or bypass age gates or paywalls.
Transcripts are derived from creators' copyrighted work. Using them for research, search, analysis and summarisation is generally reasonable; republishing full transcripts as your own content is not. Credit the source, link to the original video, and comply with YouTube's Terms of Service and applicable copyright law when reusing anything derived from them.
❓ Frequently asked questions
Do I need a YouTube API key?
No. The Actor reads public caption tracks without any credentials.
Why can't I use YouTube's official API for this?
Downloading caption content through the Data API requires OAuth as the video owner, so it does not work for videos you do not control.
Which output format should I choose?
timestamp for search, clipping and subtitle work; text for LLM prompts, summarisation and repurposing.
Why did a video return no transcript?
It has no caption track — captions are disabled, or none were generated. This Actor reads existing captions rather than transcribing audio.
Does it do speech-to-text?
No. If a video has no captions, there is nothing to extract.
How accurate are auto-generated captions?
Usually good for clear speech, less reliable with heavy accents, background noise or specialist terminology.
Can I get transcripts in other languages?
Yes — enable includeNonEnglish. Each available language appears as a separate entry in transcripts[].
Does it return video titles or view counts?
No. This Actor returns transcripts only. Pair it with a YouTube metadata scraper if you need both.
Which export format should I use?
JSON — transcripts is a nested array, and in timestamp mode each entry contains a further array of segments.
🔗 Related scrapers
- Youtube Community Posts Scraper — the text content channels publish outside video.
- 🎬 YouTube Channel Email Scraper — contact details for the channels you transcribe.
- 🎬 YouTube Email Scraper — creator contacts by keyword.
- Google Search Results Scraper with Local Businesses — pair transcript keywords with search demand data.
Browse the full collection on the ScraperForge profile.
💬 Feedback
Need video metadata alongside transcripts, channel-wide input, or a custom AI pipeline? Open an issue on the Issues tab of this Actor.