YouTube Transcript Scraper - Bulk Captions & Subtitles avatar

YouTube Transcript Scraper - Bulk Captions & Subtitles

Pricing

from $5.00 / 1,000 transcripts

Go to Apify Store
YouTube Transcript Scraper - Bulk Captions & Subtitles

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

Tubelens

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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 haveYou wantUse
A list of video linksTranscripts in bulkThis scraper
One video linkTranscript plus comments and channel dataYouTube Video Scraper
A channelIts whole catalog of videos and ShortsYouTube Channel Scraper
A keywordRanked search results with positionYouTube 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

FieldTypeDescription
videoUrlsarrayRequired. Watch links, youtu.be links, Shorts links or bare video IDs. Duplicates are removed automatically.
languagestringTwo-letter caption language, for example en, es, de, hi. Defaults to en.
outputFormatsarrayAny of text, segments, srt, vtt. Defaults to text and segments.
includeMetadatabooleanAdds title, publish date, channel and more to every row. On by default, free.
concurrencyintegerVideos fetched at once, 1 to 20. Defaults to 8.
maxRunSecondsintegerStop 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 isAutoGenerated flag 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 languageCode and availableLanguages to 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.

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.