YouTube Transcript Enhanced avatar

YouTube Transcript Enhanced

Pricing

from $3.50 / 1,000 transcript enricheds

Go to Apify Store
YouTube Transcript Enhanced

YouTube Transcript Enhanced

Extract available YouTube captions with SRT/VTT export, paragraph chunking, keyword search, time-range filtering, text analytics, and per-video diagnostics.

Pricing

from $3.50 / 1,000 transcript enricheds

Rating

1.0

(1)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

19

Total users

1

Monthly active users

11 hours ago

Last modified

Categories

Share

Extract available YouTube captions with SRT/VTT subtitle export, paragraph chunking, keyword search, time-range filtering, text analytics, and actionable per-video diagnostics.

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
  • Actionable batch diagnostics — Inspect status, stable errorCode, and error for every requested video

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

ParameterTypeRequiredDefaultDescription
urlsstring[]Yes1–100 YouTube video URLs or 11-character video IDs; duplicate video IDs are processed once
languagestringNoenISO 639-1 language code for preferred transcript
includeAutoGeneratedbooleanNotrueAllow auto-generated captions as fallback
outputFormatstringNojsonOutput format: json, srt, vtt, or text
chunkParagraphsbooleanNofalseGroup segments into paragraphs
searchKeywordsstringNoComma-separated keywords to search in transcript
timeRangeStartintegerNoStart boundary in seconds; overlapping segments are included
timeRangeEndintegerNoExclusive end boundary in seconds; must be ≥ start
includeTextAnalysisbooleanNotrueInclude word count, reading time, top keywords

Output example

{
"status": "SUCCEEDED",
"videoId": "dQw4w9WgXcQ",
"videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"videoTitle": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
"channelName": "Rick Astley",
"language": "en",
"isAutoGenerated": false,
"segmentCount": 61,
"fullText": "[♪♪♪] ♪ We're no strangers to love ♪ ...",
"srt": "1\n00:00:01,360 --> 00:00:03,040\n[♪♪♪]\n...",
"textAnalysis": {
"wordCount": 366,
"uniqueWordCount": 77,
"characterCount": 2089,
"readingTimeMinutes": 1.8,
"topKeywords": [
{ "word": "gonna", "count": 42 },
{ "word": "never", "count": 40 }
]
},
"wordCount": 366,
"readingTimeMinutes": 1.8,
"enrichedAt": "2026-03-01T12:00:00.000Z"
}

Output formats explained

FormatDescriptionOutput field
jsonRaw transcript segments with start time and durationsegments array (always included)
srtSubRip subtitle content for saving to an .srt filesrt string
vttWebVTT subtitle content for saving to a .vtt filevtt string
textPlain text with [MM:SS] timestamps per lineformattedText 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.

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 a half-open interval. A caption segment is included when it overlaps [start, end), so speech crossing the start boundary is not dropped. timeRangeStart must not exceed timeRangeEnd.

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).

Result status and limitations

Every dataset row has status (SUCCEEDED or FAILED). Failed rows retain the existing error field and add a stable errorCode, such as INVALID_INPUT, CAPTIONS_UNAVAILABLE, LANGUAGE_UNAVAILABLE, VIDEO_UNAVAILABLE, LOGIN_REQUIRED, ACCESS_DENIED, TRANSIENT_ACCESS_ERROR, TRANSCRIPT_PARSE_ERROR, or TIME_RANGE_EMPTY.

The actor reads caption tracks made available by YouTube; it does not transcribe audio. A public video can still have no captions, require login or regional access, or be temporarily rate-limited. SRT and VTT values are strings in the dataset—save those fields as .srt or .vtt files when needed.

How to extract enhanced YouTube transcripts

  1. Open YouTube Transcript Enhanced on Apify.
  2. Enter one or more YouTube video URLs or video IDs in the urls field.
  3. Choose your preferred outputFormat (json, srt, vtt, or text).
  4. Optionally enable chunkParagraphs, set searchKeywords, or specify a time range.
  5. Click Start and wait for the extraction to finish.
  6. Download results as JSON, CSV, or Excel from the Dataset tab.

How much does it cost to extract YouTube transcripts?

YouTube Transcript Enhanced uses pay-per-event pricing:

EventPriceDescription
Actor start$0.035Charged once per run
Transcript enriched$0.005Charged 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('automation-lab/youtube-transcript-enhanced').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 file
if (item.srt) fs.writeFileSync(`${item.videoId}.srt`, item.srt);
});

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("automation-lab/youtube-transcript-enhanced").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 file
if 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

cURL:

curl -X POST "https://api.apify.com/v2/acts/automation-lab~youtube-transcript-enhanced/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"urls":["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"outputFormat":"srt","chunkParagraphs":true,"includeTextAnalysis":true}'

Use with AI agents via MCP

YouTube Transcript Enhanced is available as a tool for AI assistants via the Model Context Protocol (MCP).

Setup for Claude Code

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/youtube-transcript-enhanced"

Setup for Claude Desktop, Cursor, or VS Code

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/youtube-transcript-enhanced"
}
}
}

Example prompts

  • "Get an enriched transcript with timestamps for this video"
  • "Extract and summarize this YouTube video's content"
  • "Download SRT subtitles for this lecture and find all mentions of 'neural network'"

Learn more in the Apify MCP documentation.

FAQ

What's the difference between this and the basic YouTube Transcript Scraper? YouTube Transcript Enhanced adds SRT/VTT subtitle export, paragraph chunking, keyword search, time range filtering, and text analytics (word count, reading time, top keywords). Use the basic scraper if you just need raw transcript segments; use Enhanced if you need formatted output or post-processing features.

Keyword search returns no results even though the word is in the video. Why? The keyword search matches against the transcript text, not audio. If the video's captions are auto-generated, words may be misspelled or split differently. Try searching for partial keywords or common variations. Also check that the transcript language matches — if captions are in Spanish but you're searching for English words, there won't be matches.

Tips and best practices

  • Use outputFormat: "srt" or "vtt" when you need subtitle files for video editing
  • Enable chunkParagraphs for content repurposing — paragraphs are easier to read than raw segments
  • Use searchKeywords to quickly find relevant sections in long videos
  • Time range filtering is useful for extracting specific sections from lectures or interviews
  • The fullText field is always included and ready for further text processing
  • Check status before consuming transcript fields; failed videos remain visible in mixed batches
  • 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.

Who is it for

YouTube Transcript Enhanced is built for content creators repurposing video content into articles, researchers analyzing video transcripts at scale, developers building subtitle tools, and educators extracting lecture content for study materials.

Pricing

This actor uses pay-per-event pricing. See the Pricing tab on Apify Store for current rates.

API usage

You can run this actor programmatically using the Apify API or the Apify client libraries for Node.js and Python. See the code examples above for usage details.

MCP

This actor is compatible with Model Context Protocol (MCP). Use it with AI assistants via the Apify MCP server.

Legality

Scraping publicly available data is generally legal. This actor only accesses publicly available pages. Users are responsible for compliance with applicable laws and the target site's Terms of Service.