YouTube Transcript Enhanced
Pricing
Pay per event
YouTube Transcript Enhanced
Extract YouTube transcripts with SRT/VTT subtitle export, paragraph chunking, keyword search, time range filtering, and text analytics. Works with any public video.
Pricing
Pay per event
Rating
0.0
(0)
Developer

Stas Persiianenko
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Extract YouTube transcripts with SRT/VTT subtitle export, paragraph chunking, keyword search, time range filtering, and text analytics. Works with any public YouTube video.
What does YouTube Transcript Enhanced do?
YouTube Transcript Enhanced extracts transcripts from YouTube videos and adds powerful post-processing features. Beyond raw transcript segments, it provides ready-to-use subtitle files (SRT/VTT), intelligent paragraph grouping, keyword search across the transcript, time range filtering, and text analysis with word counts and keyword extraction.
It uses YouTube's public InnerTube API to access caption tracks — the same API YouTube's own player uses. Both manual captions and auto-generated subtitles are supported across 100+ languages.
Why use YouTube Transcript Enhanced?
- Multiple output formats — Export as SRT subtitles, VTT subtitles, timestamped plain text, or JSON segments
- Paragraph chunking — Groups small caption segments into coherent paragraphs using pause detection
- Keyword search — Find specific content in transcripts with timestamp references
- Time range filtering — Extract only the portion of the transcript you need
- Text analytics — Word count, reading time, unique words, and top keyword extraction
- Full metadata — Video title, channel, views, duration, keywords, thumbnail, publish date
- Batch processing — Process multiple videos in a single run
- Language selection — Choose preferred language with smart fallback logic
Use cases
- Content repurposing — Convert video transcripts into blog posts, articles, or social media content
- Subtitle generation — Get SRT/VTT files for videos that lack proper subtitles
- Research — Search transcripts for specific topics or keywords across multiple videos
- SEO analysis — Extract keywords and topics from video content
- Accessibility — Generate formatted transcripts for hearing-impaired users
- Education — Extract and chunk lecture transcripts into study materials
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
urls | string[] | Yes | — | YouTube video URLs or 11-character video IDs |
language | string | No | en | ISO 639-1 language code for preferred transcript |
includeAutoGenerated | boolean | No | true | Allow auto-generated captions as fallback |
outputFormat | string | No | json | Output format: json, srt, vtt, or text |
chunkParagraphs | boolean | No | false | Group segments into paragraphs |
searchKeywords | string | No | — | Comma-separated keywords to search in transcript |
timeRangeStart | integer | No | — | Start time in seconds for time range filter |
timeRangeEnd | integer | No | — | End time in seconds for time range filter |
includeTextAnalysis | boolean | No | true | Include word count, reading time, top keywords |
Output example
{"videoId": "jNQXAC9IVRw","videoUrl": "https://www.youtube.com/watch?v=jNQXAC9IVRw","videoTitle": "Me at the zoo","channelName": "jawed","language": "en","isAutoGenerated": true,"segmentCount": 5,"fullText": "All right so here we are...","srt": "1\n00:00:01,000 --> 00:00:04,000\nAll right so here we are...","paragraphs": [{"text": "All right so here we are in front of the elephants...","startTime": 1.0,"endTime": 12.5,"segmentCount": 3}],"paragraphCount": 2,"textAnalysis": {"wordCount": 42,"uniqueWordCount": 30,"characterCount": 210,"readingTimeMinutes": 0.2,"topKeywords": [{ "word": "elephants", "count": 2 },{ "word": "cool", "count": 2 }]},"wordCount": 42,"readingTimeMinutes": 0.2,"enrichedAt": "2026-03-01T12:00:00.000Z"}
Output formats explained
| Format | Description | Output field |
|---|---|---|
json | Raw transcript segments with start time and duration | segments array (always included) |
srt | SubRip subtitle format, ready to use with video players | srt string |
vtt | WebVTT subtitle format, compatible with HTML5 video | vtt string |
text | Plain text with [MM:SS] timestamps per line | formattedText string |
Enhancement features
Paragraph chunking
When chunkParagraphs is enabled, the actor groups small segments into paragraphs based on natural pause detection (gaps > 1.5 seconds between segments). Each paragraph includes start/end times and the merged text.
Keyword search
Set searchKeywords to a comma-separated list (e.g., "AI, machine learning, neural") to search the transcript. Returns matching segments with the keyword that triggered the match and the timestamp.
Time range filtering
Use timeRangeStart and timeRangeEnd (in seconds) to extract only a portion of the transcript. For example, timeRangeStart: 60, timeRangeEnd: 300 extracts minutes 1-5 only.
Text analysis
When includeTextAnalysis is enabled, the output includes word count, unique word count, character count, estimated reading time (~200 WPM), and the top 20 most frequent meaningful keywords (stop words excluded).
How much does it cost?
YouTube Transcript Enhanced uses pay-per-event pricing:
| Event | Price | Description |
|---|---|---|
| Actor start | $0.035 | Charged once per run |
| Transcript enriched | $0.005 | Charged per successfully enriched transcript |
Example costs:
- 1 video: $0.035 + $0.005 = $0.04
- 10 videos: $0.035 + (10 x $0.005) = $0.085
- 100 videos: $0.035 + (100 x $0.005) = $0.535
Using the Apify API
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('YOUR_ACTOR_ID').call({urls: ['https://www.youtube.com/watch?v=dQw4w9WgXcQ'],outputFormat: 'srt',chunkParagraphs: true,includeTextAnalysis: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach((item) => {console.log(`${item.videoTitle} — ${item.wordCount} words, ${item.readingTimeMinutes} min read`);console.log(`Top keywords: ${item.textAnalysis.topKeywords.map(k => k.word).join(', ')}`);// Save SRT fileif (item.srt) fs.writeFileSync(`${item.videoId}.srt`, item.srt);});
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("YOUR_ACTOR_ID").call(run_input={"urls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"outputFormat": "srt","chunkParagraphs": True,"includeTextAnalysis": True,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['videoTitle']} — {item['wordCount']} words")# Save SRT fileif item.get("srt"):with open(f"{item['videoId']}.srt", "w") as f:f.write(item["srt"])
Integrations
- Google Sheets — Export transcript data and analytics to spreadsheets
- Webhooks — Get notified when transcript extraction completes
- Zapier / Make — Automate workflows triggered by new transcripts
- Other Apify actors — Chain with scrapers that collect YouTube URLs
Tips and best practices
- Use
outputFormat: "srt"or"vtt"when you need subtitle files for video editing - Enable
chunkParagraphsfor content repurposing — paragraphs are easier to read than raw segments - Use
searchKeywordsto quickly find relevant sections in long videos - Time range filtering is useful for extracting specific sections from lectures or interviews
- The
fullTextfield is always included and ready for further text processing - For batch processing, all videos share the same settings — use separate runs for different configurations
Compliance
This actor uses YouTube's public InnerTube API to access caption tracks — the same API used by YouTube's own video player. It accesses only publicly available video metadata and captions. No login credentials or private data are used.