YouTube Transcript Scraper - Bulk Captions & Subtitles
Pricing
from $5.00 / 1,000 transcripts
YouTube Transcript Scraper - Bulk Captions & Subtitles
Pull transcripts from hundreds of YouTube videos in one run: plain text, timestamped segments, SRT and VTT, plus each video's title, date and channel. You only pay when a transcript comes back. One video in depth with comments? Use the Video Scraper. A whole channel? Use the Channel Scraper.
Pricing
from $5.00 / 1,000 transcripts
Rating
0.0
(0)
Developer
Tubelens
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
YouTube transcript scraper: bulk captions, subtitles, SRT and VTT export
Paste a list of YouTube links and get every transcript back as clean text, timestamped segments, or ready-to-use subtitle files. Each row also carries the video's title, publish date, view count and channel.
$5 per 1,000 transcripts. You are only charged when a transcript actually comes back.
Videos with no captions cost you nothing.
Why this scraper?
- ๐ธ No charge for empty results. Videos with no captions, deleted videos and blocked videos are all free. You pay per transcript delivered, not per URL submitted.
- ๐ฆ Bulk by default. Paste hundreds of links in one run. Most transcript scrapers take one video at a time.
- ๐ Retries blocked videos on a fresh IP. YouTube throttles cloud traffic hard, so a block on one video triggers an automatic retry on a new address instead of a dead row.
- ๐ Four output shapes. Plain text for LLM pipelines, timestamped segments for analysis, SRT and VTT when you need real subtitle files.
- ๐ท๏ธ Metadata included free. Title, description, publish date, duration, view count, channel, tags and thumbnails ride along with the transcript at no extra cost.
- ๐ Any caption language. Ask for a language and get the human-written track if it exists, the auto-generated one if it doesn't.
- โ๏ธ Tells you what you got. Every row flags whether the captions were written by a human or auto-generated, and lists every other language the video offers.
What data can you extract?
| ๐ Full transcript text | โฑ๏ธ Timestamped segments | ๐ฌ SRT subtitle file | ๐ VTT subtitle file |
| ๐ฃ๏ธ Caption language | ๐ค Auto-generated flag | ๐ Available languages | ๐ข Segment count |
| ๐ฅ Video title | ๐ Publish date | โ Duration | ๐๏ธ View count |
| ๐บ Channel name and ID | ๐ท๏ธ Tags | ๐๏ธ Category | ๐ผ๏ธ Thumbnails |
Which YouTube scraper do you need?
| You have | You want | Use |
|---|---|---|
| A list of video links | Transcripts in bulk | This scraper |
| One video link | Transcript plus comments and channel data | YouTube Video Scraper |
| A channel | Its whole catalog of videos and Shorts | YouTube Channel Scraper |
| A keyword | Ranked search results with position | YouTube Search Scraper |
Need everything about a single video including its comments? Use the Video Scraper. Need a whole channel's back catalog? Use the Channel Scraper.
How much does YouTube Transcript Scraper cost?
You pay $5.00 per 1,000 transcripts, plus a small $0.005 start fee per run.
- The Apify Free plan gives $5 in credits a month, about 1,000 transcripts.
- The $29/month Starter plan covers about 5,800 transcripts.
A video with no captions, a deleted video, or a private video still appears in your dataset with a status explaining why. None of them are charged.
Input
| Field | Type | Description |
|---|---|---|
videoUrls | array | Required. Watch links, youtu.be links, Shorts links or bare video IDs. Duplicates are removed automatically. |
language | string | Two-letter caption language, for example en, es, de, hi. Defaults to en. |
outputFormats | array | Any of text, segments, srt, vtt. Defaults to text and segments. |
includeMetadata | boolean | Adds title, publish date, channel and more to every row. On by default, free. |
concurrency | integer | Videos fetched at once, 1 to 20. Defaults to 8. |
maxRunSeconds | integer | Stop starting new videos after this long and finish cleanly. |
{"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ","https://youtu.be/jNQXAC9IVRw"],"language": "en","outputFormats": ["text", "segments"]}
Output
One row per video.
{"videoId": "qNIk2_EVMvE","url": "https://www.youtube.com/watch?v=qNIk2_EVMvE","language": "English","languageCode": "en","isAutoGenerated": false,"availableLanguages": ["en"],"characterCount": 12673,"segmentCount": 131,"text": "Nike stock fell more than 18% on June 28th 2024 that wiped away more than $29 billion...","segments": [{ "startMs": 40, "durationMs": 6640, "text": "Nike stock fell more than 18% on June 28th 2024" }],"metadata": {"title": "How To Read An Earnings Report (with ZERO experience)","publishedAt": "2024-08-17T05:48:44-07:00","durationSeconds": 626,"viewCount": 37237,"channelName": "Brian Feroldi","category": "Education"},"status": "ok","error": null}
status is one of ok, no_transcript, unavailable or blocked. Only ok rows are charged, so you can filter on it without worrying about your bill.
Use cases
- Feed an LLM or RAG pipeline. Pull transcripts for a whole content library as plain text, ready to chunk and embed.
- Repurpose video into writing. Turn talks and tutorials into blog posts, newsletters and summaries.
- Competitor and topic research. Read what a set of channels actually says, at scale, instead of watching hours of video.
- Subtitle files. Export SRT or VTT to caption a re-upload or translate a back catalog.
- Search your own archive. Build a searchable text index of every video you have published.
- Accessibility. Provide text versions of video content.
Limitations
- No captions means no transcript. This scraper reads the captions YouTube already has. It does not transcribe audio, so a video with captions turned off returns
no_transcript. You are not charged for those. - Auto-generated captions are rough. When no human-written track exists, you get YouTube's automatic captions, which have no speaker labels and imperfect punctuation. The
isAutoGeneratedflag tells you which you got. - Language falls back rather than failing. If you ask for a language the video doesn't have, you get the best available track instead of an error. Check
languageCodeandavailableLanguagesto see what actually came back. - Very long videos produce very large rows. A nine-hour video returns over 400,000 characters. If a row would exceed the platform's size limit, subtitle formats are dropped first and the row is flagged with
truncated. - Deleted and unavailable videos are skipped, not charged. They land in your dataset with
status: "unavailable"and the reason YouTube gave. - Links that aren't YouTube are skipped. Paste a mixed list and the non-YouTube entries are ignored with a warning rather than turned into empty rows. If none of your links are YouTube links, the run finishes cleanly and tells you so instead of failing.
FAQ
How much does YouTube Transcript Scraper cost?
YouTube Transcript Scraper uses pay-per-result pricing. You pay $5.00 for 1,000 results. The Apify Free plan gives you $5 in usage credits a month, enough for around 1,000 results. If you run regularly, the $29/month Starter plan covers about 5,800 results.
No subscription lock-in. Pause whenever.
Is it legal to scrape YouTube?
Scraping public data is generally allowed in the US and most of the EU, as long as you don't collect personal data covered by GDPR or CCPA without a lawful basis. This actor only touches publicly accessible pages, but how you use the output is on you.
Apify's full breakdown: Is web scraping legal?.
Can I integrate YouTube Transcript Scraper with other tools?
Push results into Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, and more. Apify treats every actor as a webhook source, so anything that consumes webhooks or pulls from an API works.
Full list: Apify integrations.
Can I use YouTube Transcript Scraper with the Apify API?
Yes. Every run is available via the Apify REST API:
curl -X POST "https://api.apify.com/v2/acts/tubelens~youtube-transcript-scraper/runs?token=APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"]}'
Docs: Apify API reference.
Can I use YouTube Transcript Scraper through an MCP Server?
Yes. Apify ships an MCP server that exposes every actor as a tool, so Claude Desktop, Cursor, and any other MCP-capable client can call YouTube Transcript Scraper. Setup: Apify MCP docs.
Your feedback
Found a bug or want a field that isn't there? Open an issue at console.apify.com/actors/8cnGTS1t6kvp9Xhvs/issues and it goes straight to a human.