YouTube Transcript Scraper With AI Insights avatar

YouTube Transcript Scraper With AI Insights

Pricing

Pay per usage

Go to Apify Store
YouTube Transcript Scraper With AI Insights

YouTube Transcript Scraper With AI Insights

Extract full YouTube video transcripts instantly with this Apify YouTube Transcript Scraper. Get accurate subtitles, timestamps, and speaker data for analysis, SEO, or research. Perfect for content creators, marketers, and data scientists. Fast, reliable, and easy to automate.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

API Empire

API Empire

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

0

Monthly active users

4 days ago

Last modified

Share

YouTube Transcript Scraper: Extract Transcripts, AI Insights, Metrics

YouTube Transcript Scraper With AI Insights pulls the transcript from one or more public YouTube videos and, if enabled, sends it to an AI provider of your choice for a summary, key points, and topic tags. Every run also returns video duration, word count, speaking rate, and caption coverage — computed locally, no AI needed. Output is typed, normalized JSON: no HTML, no parsing, no separate summarization step. You'll know which fields come from the transcript, which are AI-generated, and how to run either without a YouTube login.

What is YouTube Transcript Scraper With AI Insights?

YouTube Transcript Scraper With AI Insights is an Apify Actor that fetches the caption/transcript track for one or more public YouTube videos, then optionally distills each transcript into an AI-generated summary, key-point list, and topic tags using a provider you choose. No YouTube account, YouTube Data API key, or OAuth is required — transcript fetching works directly against publicly available caption tracks. AI distillation is opt-in and runs on your own AI provider API key; leave it off and the actor still returns full transcripts plus derived analytics with those fields simply left null.

  • Extract transcripts for one or many videos at once, in plain-text or timestamped-cue format
  • Include or exclude English auto-generated captions and non-English translated captions independently
  • Generate AI summaries, key points, and topic tags via Anthropic, OpenAI, Google, xAI, DeepSeek, Perplexity, or Mistral — using your own API key
  • Get word count, speaking rate, and caption-coverage metrics automatically, even with AI off
  • Built-in residential proxy handling for YouTube access — no proxy setup required

What data does YouTube Transcript Scraper With AI Insights collect?

Every run returns three kinds of data for each video you submit: the transcript itself, AI-generated insights (when enabled), and metrics derived from the transcript and video duration.

Data TypeKey FieldsJSON Field Names
Video Transcriptslanguage, auto-generated vs. manual, plain text or timestamped cues, word/char countstranscripts[].language, transcripts[].isGenerated, transcripts[].content, transcripts[].wordCount
AI-Generated Insights (opt-in)summary, key points, topic tags, which provider/model produced themaiSummary, aiKeyPoints, aiTopics, aiProviderUsed
Derived Video Metricsvideo duration, transcript word count, speaking rate, caption coverage percentagevideoDurationSeconds, wordCount, estimatedSpeakingRateWpm, transcriptCoveragePercent

Need more YouTube data?

If you need more than transcripts, YouTube Channel Finder With Contact Info Extraction discovers channels by keyword or URL and pulls publicly-visible emails and social links from channel descriptions — useful for building an outreach list around the creators behind the videos you're transcribing. If you need audience reaction instead of (or alongside) the video content itself, YouTube Comments Scraper: Comment Analytics & Keyword Search pulls comments plus per-video engagement analytics and keyword filtering.

How does YouTube Transcript Scraper With AI Insights differ from the official YouTube API?

YouTube Data API v3 is Google's official interface to YouTube, but it does not give third parties transcript text for arbitrary videos: its captions.download endpoint requires OAuth authorization as the video's own channel owner, so it can't be used to pull captions for videos you don't control — which is exactly the gap YouTube Transcript Scraper With AI Insights fills.

FeatureYouTube Data API v3YouTube Transcript Scraper With AI Insights
Transcript/caption text for someone else's videoNot accessible — captions.download requires OAuth as the channel ownerReturns transcript text for any video with a public caption track
SetupGoogle Cloud project, API key or OAuth consent screen, quota approvalProvide video URLs and run
AI summarization of the transcriptNot offered by the APIOptional built-in distillation (summary, key points, topics) via your chosen AI provider
Derived analytics (speaking rate, caption coverage)Not offeredComputed automatically for every video
Quota modelSubject to Google's per-project daily unit quota, with caption endpoints consuming part of itNo YouTube Data API quota involved — transcript fetching doesn't go through the Data API
Output shapeMetadata and captions returned through separate endpoints/callsTranscript, metrics, and AI insights combined into one normalized JSON row per video

The official API is the right tool when you own the channel and need to manage your own captions or video metadata under Google's terms. YouTube Transcript Scraper With AI Insights is the right tool when you need transcript text and a distilled summary from videos you don't own, without OAuth or quota approval.

Why do developers and teams scrape YouTube?

For AI engineers and agent builders

Video transcripts are a direct source of long-form, spoken-language text — exactly the kind of content RAG pipelines and LLM training sets need, but rarely have in clean form. Instead of downloading captions and writing your own summarization step, you can pull transcripts[].content for indexing and aiSummary/aiKeyPoints/aiTopics as pre-computed metadata for retrieval filtering or chunk headers. Because output is typed JSON with stable field names, it drops into an embedding pipeline or agent tool call without an HTML- or caption-file-parsing step in between.

For content marketers and SEO teams

Turning a video into a blog post, show-notes page, or social snippet usually starts with someone rewatching it and taking notes by hand. With AI insights enabled, aiKeyPoints gives you a ready-made outline and aiTopics gives you keyword candidates straight from the actual spoken content — not guessed from the title or description. Combined with transcriptCoveragePercent, you can also tell which caption tracks are too incomplete to repurpose reliably before you build content on top of them, and estimatedSpeakingRateWpm helps flag videos that are too dense or too slow-paced to translate cleanly into short-form content.

For researchers and analysts

Academic and market researchers studying public video content — lecture series, product announcements, public talks — need transcript text at scale without manually opening each video. Because this actor only reads publicly available caption tracks and video duration, it stays within publicly accessible data: no login, no private content, no circumventing access controls. wordCount and estimatedSpeakingRateWpm also give a quick, consistent way to compare pacing and density across a video set without watching every one, and transcriptCoveragePercent flags videos whose caption track is too incomplete to cite reliably in a dataset.

For developers building data products

Teams building a video-monitoring dashboard, a podcast/video summarization product, or a scheduled content-tracking pipeline can call this actor per video ID and get transcript, metrics, and (optionally) AI insights back as one JSON row, ready to store or forward. Because the schema doesn't change based on whether AI insights are on, you can build a pipeline once and toggle enableAiInsights per run — or per customer plan — without changing your downstream parsing code, and swap aiProvider models later without touching your data model at all.

How to scrape YouTube (step by step)

  1. Open YouTube Transcript Scraper With AI Insights on the Apify Store and start a run from the Actor's console page, or call it via the Apify API.
  2. Provide one or more video URLs in videoUrls — it's the only field the actor actually needs to do anything.
  3. Choose your transcript options: caption languages via excludeAutoGeneratedCaptions / includeTranslatedCaptions, and cue format via transcriptFormat.
  4. Optionally turn on enableAiInsights, pick an aiProvider model, and supply your own aiApiKey for that provider.
  5. Start the run and download results as JSON or CSV from the dataset, or pull them via the Apify API.

What to do when YouTube changes its structure

The actor is maintained, and its output schema — field names and types — stays stable across updates, so downstream integrations keep working. Video duration (used for speaking-rate and coverage metrics) is read from YouTube's public watch-page HTML; if that page format changes, videoDurationSeconds and the metrics derived from it fall back to null instead of breaking the run.

⬇️ Input

ParameterRequiredTypeDescriptionExample Value
videoUrlsNoarrayOne or more YouTube video URLs to extract transcripts from and distill. Also accepts the base actor's urls key.["https://www.youtube.com/watch?v=4KbrxIpQgkM"]
excludeAutoGeneratedCaptionsNobooleanLeave unchecked (default) to include English auto-generated caption tracks. Check to exclude them.false
includeTranslatedCaptionsNobooleanInclude caption tracks in languages other than English. Unchecked (default) excludes them.false
transcriptFormatNostring ("timestamp" | "text")"timestamp" returns cue-level start/end times; "text" returns one clean text blob per language. Default "text"."text"
enableAiInsightsNobooleanWhen ON, sends the primary transcript to an AI provider to generate aiSummary, aiKeyPoints, and aiTopics. Requires aiApiKey (or a matching provider env var) — with no key, these fields stay null and the rest of the actor still runs normally. Default false.true
insightDepthNostring ("short" | "medium" | "long")Controls how detailed the AI summary/key-points/topics are. Ignored when AI insights are off. Default "medium"."medium"
aiProviderNostringModel to use for AI insights; provider is auto-detected from the name prefix (claude-*, gpt-*/o1/o3, gemini-*, grok-*, deepseek-*, sonar*, mistral-*). Ignored when AI insights are off. Default "claude-haiku-4-5"."claude-haiku-4-5"
aiApiKeyNostring (secret)API key for the selected provider. If left empty, falls back to the matching environment variable (ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY/GOOGLE_API_KEY, XAI_API_KEY/GROK_API_KEY, DEEPSEEK_API_KEY, PERPLEXITY_API_KEY/PPLX_API_KEY, MISTRAL_API_KEY). With no key available anywhere, AI fields are simply null."sk-ant-..."
proxyConfigurationNoobjectOptional proxy setup for stable access. Uses Apify Residential Proxy by default when needed to bypass YouTube IP blocking.{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}

No field is required — running with no input at all does nothing (the actor logs a warning and exits) because videoUrls needs at least one URL to process.

Example input:

{
"videoUrls": ["https://www.youtube.com/watch?v=4KbrxIpQgkM"],
"excludeAutoGeneratedCaptions": false,
"includeTranslatedCaptions": false,
"transcriptFormat": "text",
"enableAiInsights": true,
"insightDepth": "medium",
"aiProvider": "claude-haiku-4-5",
"aiApiKey": "sk-ant-...",
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

The most common mistake is turning on enableAiInsights without supplying aiApiKey or setting the matching provider environment variable — the run still finishes successfully and every non-AI field populates normally, but aiSummary, aiKeyPoints, aiTopics, and aiProviderUsed come back null instead of raising an error, which looks like a bug rather than the actor's documented no-key behavior.

⬆️ Output

Results are written to the Actor's dataset as one row per video, exportable as JSON, CSV, Excel, or the other formats Apify's dataset export supports. Each row bundles three logical parts together: the transcript(s), derived video metrics, and — when enabled — AI-generated insights.

Video transcripts

{
"transcripts": [
{
"language": "English",
"languageCode": "en",
"isGenerated": false,
"content": "so today we're going to walk through three ways to cut prompt token usage in a production pipeline...",
"wordCount": 481,
"charCount": 2604
}
]
}

When transcriptFormat is "timestamp" instead of "text", each transcript's content becomes an array of cue objects instead of one text blob:

{
"content": [
{
"startMs": 0,
"endMs": 3200,
"startTime": "0:00",
"text": "so today we're going to walk through"
},
{
"startMs": 3200,
"endMs": 6800,
"startTime": "0:03",
"text": "three ways to cut prompt token usage"
}
]
}

Derived video metrics

{
"id": "4KbrxIpQgkM",
"url": "https://www.youtube.com/watch?v=4KbrxIpQgkM",
"input": "https://www.youtube.com/watch?v=4KbrxIpQgkM",
"videoDurationSeconds": 212,
"wordCount": 481,
"estimatedSpeakingRateWpm": 136.1,
"transcriptCoveragePercent": 97.4,
"scrapedAt": "2026-07-13T00:00:00Z"
}

videoDurationSeconds, estimatedSpeakingRateWpm, and transcriptCoveragePercent are null when the video's duration can't be fetched (for example, a transient block on the watch-page request); wordCount is always computed locally from the transcript text and doesn't depend on the duration fetch.

AI-generated insights (opt-in)

{
"aiSummary": "The video walks through the core idea in three stages, explaining each with a practical example before summarizing the takeaway.",
"aiKeyPoints": [
"Introduces the main concept and why it matters",
"Walks through a practical example step by step",
"Summarizes the key takeaway for viewers"
],
"aiTopics": ["tutorial", "walkthrough", "explainer"],
"aiProviderUsed": "anthropic:claude-haiku-4-5"
}

aiSummary, aiKeyPoints, aiTopics, and aiProviderUsed are null whenever AI insights are off, no usable API key is available, or the transcript is empty — never faked or filled with placeholder text.

How many results can you scrape with YouTube Transcript Scraper With AI Insights?

There's no hard cap on how many videos you can submit in a single run — the actor loops through every URL in videoUrls and processes each one independently, so one video's failure (missing captions, a malformed URL) doesn't stop the rest of the batch from completing. Pagination isn't applicable here: each URL you submit maps to exactly one output row, so the practical ceiling is how many URLs you list and how long you're willing to let one run take, not a limit enforced by the actor's own code. If you enable AI insights, note that processing more videos in one run also means one AI provider call per video — the cost and rate limits for those calls are governed by your own AI provider account, not by this actor.

Integrate YouTube Transcript Scraper With AI Insights and automate your workflow

YouTube Transcript Scraper With AI Insights works with any language or tool that can send an HTTP request — it's an Apify Actor, callable through the Apify API like any other.

REST API integration

import requests
APIFY_TOKEN = "apify_api_xxx"
ACTOR_ID = "your-username/youtube-transcript-scraper-with-ai-insights"
resp = requests.post(
f"https://api.apify.com/v2/acts/{ACTOR_ID}/run-sync-get-dataset-items",
headers={"Authorization": f"Bearer {APIFY_TOKEN}"},
json={
"videoUrls": ["https://www.youtube.com/watch?v=4KbrxIpQgkM"],
"enableAiInsights": True,
},
)
for row in resp.json():
print(row["id"], row["wordCount"], row["aiSummary"])

Works in Python, Node.js, Go, Ruby, cURL.

Automation platforms (n8n, Make, LangChain)

Apify publishes official integrations for n8n and Make that can run any Actor, including this one, as a workflow step: point the n8n Apify node or the Make Apify app at this actor's ID, pass videoUrls and your other input fields as the node/module's input, and feed the resulting dataset items into the rest of your workflow. For LangChain or a custom agent framework, call the same REST endpoint shown above as a tool function — the JSON response needs no further parsing before it reaches your LLM.

Scraping publicly available YouTube data is generally lawful; this actor only reads caption tracks and duration information already made public through YouTube's own player and caption feature, and it doesn't bypass a login wall or access private content. Video transcripts are typically not personal data on their own; that changes if a specific video is about identifiable individuals, in which case ordinary data-protection principles for personal data apply to how you store and use the transcript or the AI-generated summary. The underlying content is still subject to YouTube's Terms of Service and to copyright in the video and its captions, so treat bulk transcript storage and redistribution as a ToS and copyright question first. Consult legal counsel for commercial use cases involving bulk personal data or redistribution of transcript content.

Frequently asked questions

Does YouTube Transcript Scraper With AI Insights work without a YouTube account?

No YouTube account or YouTube Data API key is required. Transcript extraction reads public caption tracks directly; the only credential this actor ever asks for is your own AI provider API key, and only if you turn on enableAiInsights.

How often is the scraped data updated?

Every run fetches transcripts and video duration live from YouTube at request time — nothing is served from a cache. If a video's captions change between runs, a new run reflects that.

What happens if a video has no captions or transcript available?

The transcripts array comes back empty for that video, and every field derived from it (wordCount, estimatedSpeakingRateWpm, transcriptCoveragePercent, and the AI fields) is null. The run continues to the next URL rather than failing the whole batch.

Can I scrape private or age-restricted YouTube videos?

No. Only videos with publicly accessible caption tracks can be processed; the actor doesn't authenticate as a YouTube user and can't reach private, unlisted, or login-gated video content.

Is the AI insight genuinely AI-generated, and by what model?

Yes. When enableAiInsights is on and a usable API key is available, the transcript is sent to a real model call — Anthropic's Messages API, or an OpenAI-compatible chat-completions call for OpenAI, Google Gemini, xAI Grok, DeepSeek, Perplexity, or Mistral, depending on the aiProvider you pick. The default model is claude-haiku-4-5. Without a working API key, aiSummary, aiKeyPoints, and aiTopics are left null — they are never fabricated or filled with placeholder text.

Does YouTube Transcript Scraper With AI Insights work for AI agent workflows and LLM pipelines?

Yes — it's callable as a plain HTTP endpoint by any agent framework or custom tool. Every response is typed JSON with stable field names, so there's no HTML or caption-file parsing step between the actor's output and your LLM context or agent tool call.

How does YouTube Transcript Scraper With AI Insights handle YouTube's anti-bot system?

It routes both transcript fetching and the video-duration lookup through Apify Proxy, defaulting to residential IPs, to reduce the chance of YouTube's IP-based blocking. You can supply your own proxy configuration or turn proxy use off entirely via proxyConfiguration.

Does YouTube Transcript Scraper With AI Insights return data in a format LLMs can use directly?

Yes. Output is typed, normalized JSON with stable field names — no HTML, no selectors, no parsing step. Pass a row straight into an LLM context window, index transcripts[].content into a vector store, or route the whole row through an agent tool.

Can I use YouTube Transcript Scraper With AI Insights without managing proxies?

Yes. The actor requests an Apify Residential Proxy session automatically when none is supplied; you never have to source, rotate, or maintain proxies yourself unless you want to override the default.

What happens when YouTube changes its structure or blocks part of the actor?

The actor is maintained, and its output schema — field names and types — doesn't change on your end. If YouTube's page structure changes in a way that affects the duration lookup specifically, the affected fields (videoDurationSeconds and the metrics built from it) fall back to null rather than breaking the run or silently returning wrong numbers.

Your feedback

Found a bug, a field that doesn't match this README, or a YouTube video type this actor mishandles? We want to know — report it through the Actor's Issues tab on Apify Console, or contact API-Empire support directly. Feedback like this is how the schema and the AI-provider list stay accurate over time.