YouTube Transcript Scraper | $1/1K · SRT & VTT avatar

YouTube Transcript Scraper | $1/1K · SRT & VTT

Pricing

from $0.85 / 1,000 successful transcripts

Go to Apify Store
YouTube Transcript Scraper | $1/1K · SRT & VTT

YouTube Transcript Scraper | $1/1K · SRT & VTT

Extract YouTube transcripts, captions and subtitles in bulk. Language selection, timestamps, SRT/VTT downloads and AI text chunks. $1 per 1,000 successful transcripts; no API key.

Pricing

from $0.85 / 1,000 successful transcripts

Rating

0.0

(0)

Developer

Technical Dost Solutions

Technical Dost Solutions

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 days ago

Last modified

Share

YouTube Transcript Scraper Plus

Extract YouTube transcripts, captions and subtitles in bulk from public videos and Shorts. Get readable text, timestamped segments, downloadable SRT and WebVTT files, and timestamped chunks for search or AI workflows. No YouTube API key or account login is required.

Price: $1 per 1,000 successful transcripts, with a $0.00005 Actor-start fee. Failed videos and duplicate inputs do not create paid results.

Quick start

  1. Click Try for free and enter video links or IDs in YouTube videos or IDs.
  2. Choose your preferred caption languages, or keep English with fallback enabled.
  3. Run the Actor. Open Transcripts for text and metadata, Subtitle files for downloads, and Run report for any unavailable videos.

The default example is a short public video with captions. Datacenter proxies and session rotation are enabled to improve access from cloud servers. You can disable proxies or supply your own proxy configuration.

Features

  • Watch URLs, Shorts, live video URLs, embed URLs, youtu.be links and raw video IDs.
  • Deduplication by video ID before any requests or billing.
  • Preferred languages in priority order, optional fallback, and preference for human captions.
  • Full transcript text, segment timestamps, language details, title, channel and word count.
  • SRT and WebVTT downloads in the run key-value store.
  • Configurable text chunks with start and end times for AI and search pipelines.
  • Bounded concurrency, request timeouts, multiple YouTube player clients and rotating proxy sessions.
  • Per-video error details in REPORT and ERRORS; failed videos are not added to the paid dataset.
  • Incremental delivery and state persistence for graceful aborts and resumed runs.

Input

{
"videoUrls": ["jNQXAC9IVRw", "https://youtu.be/jNQXAC9IVRw"],
"languages": ["en", "hi"],
"allowLanguageFallback": true,
"preferManual": true,
"includeTimestamps": true,
"subtitleFormat": "both",
"chunkSeconds": 60,
"maxVideos": 100,
"maxConcurrency": 3
}

The two example entries refer to the same video, so it is processed once. startUrls is also accepted, with strings or objects containing url. timestamps: false is accepted for compatibility.

Use languages to request existing caption tracks. This release does not perform machine translation.

InputDefaultWhat it controls
videoUrlsForm exampleVideo URLs or IDs; at least one video is needed
startUrlsEmptyCompatibility input; strings or { "url": "..." } objects
languages["en"]Caption languages in priority order
allowLanguageFallbacktrueAccept another language if preferred captions are absent
preferManualtruePrefer human captions within the chosen language
includeTimestampstrueInclude individual caption segments
subtitleFormat"both"srt, vtt, both, or none
chunkSeconds60Time window for text chunks; 0 disables them
maxVideos100Process up to 10,000 unique videos per run
maxConcurrency3Parallel video jobs, from 1 to 10
proxyConfigurationDatacenter proxiesConfigure Apify proxies or custom proxy URLs

Results

Each successful video produces one dataset item. transcriptText contains the full text. segments contains start, duration, end and text. chunks groups the same text into time windows. subtitleFiles contains download URLs.

Export the dataset as JSON, CSV, Excel or other Apify-supported formats. Read the REPORT key-value-store record for counts, duplicates, spending-limit status and failures. A run with zero delivered transcripts fails clearly.

The output schema describes all fields for API and MCP users. Caption times and chunk times are measured in seconds. requestedLanguages, language and languageFallbackUsed make language fallback visible.

Use cases

  • Feed timestamped video text into retrieval-augmented generation (RAG) and semantic search.
  • Collect lecture and tutorial captions for research and study.
  • Build accessibility and subtitle-editing workflows with SRT or WebVTT files.
  • Analyze caption text for content research, SEO and repurposing.
  • Prepare existing caption text for downstream summarization or NLP tools.

The Actor supplies caption text and metadata. Summarization and sentiment analysis are downstream workflows, not built-in output features.

Pricing

$1 per 1,000 successful transcripts, plus $0.00005 per Actor start at the supported memory settings. Subtitle files and chunks are part of the same result, with no extra output charges. Failed videos and duplicate inputs do not create paid dataset items. Check the live Pricing tab for the active price. Your own external proxy provider may charge separately if you supply custom proxy URLs.

Apify planPrice per 1,000 transcripts
Free$1.00
Bronze$0.95
Silver$0.90
Gold, Platinum, Diamond$0.85

At the base price, 100 delivered transcripts in one run cost $0.10005. Ten delivered transcripts cost $0.01005. Paid-plan discounts reduce these amounts. Setting maxVideos limits unique videos, and Apify's maximum-charge setting limits the run's bill. The minimum maximum-charge setting is $0.00105, enough for one base-price result and the start fee.

Caption availability

This Actor retrieves existing captions; it does not transcribe audio. Private, deleted, age-restricted, region-restricted and captionless videos may be unavailable. YouTube may block cloud IPs or return empty caption responses. Rotating proxies can improve access but do not guarantee it. Language fallback is reported explicitly in each result.

No YouTube API key or account cookies are required. Only submit public videos you are authorized to process.

API

Use the Apify API or a saved task to run technicaldost/youtube-transcript-scraper-plus. Input and results are compatible with Apify integrations, webhooks and dataset export tools.

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('technicaldost/youtube-transcript-scraper-plus').call({
videoUrls: ['jNQXAC9IVRw'],
languages: ['en'],
subtitleFormat: 'both'
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

For n8n, Make or Zapier, pass the same JSON input to the Apify integration and read the default dataset after the run finishes. For AI agents, use the Apify MCP server to discover and invoke the Actor; the input, dataset and output schemas describe the supported workflow.

Troubleshooting and FAQ

Why was a video not returned? Check REPORT or ERRORS. The video may lack captions, require login, be unavailable, or have blocked the request. Partial batches preserve successful results.

Does this transcribe videos without captions? No. It retrieves existing manual or automatic captions, rather than performing speech recognition.

Does it support every language? It supports caption tracks exposed by YouTube. Disable fallback if you require your preferred language family. Machine translation is not included.

Can I enter a channel or playlist? Enter individual video URLs or IDs. Channel and playlist discovery are not included.

Why is the transcript in another language? With language fallback enabled, the Actor may choose another available track. The actual language is always reported. Set allowLanguageFallback to false to require your preferred languages.

How do I report an issue? Open the Actor's Issues tab with the run URL, video ID and requested language. Do not include account tokens or proxy credentials.

Local development

Use Node.js 22 or newer: npm ci, npm test, then apify run with your local input. Deploy with apify push.