Youtube Video Summarizer & Most-Replayed Highlights avatar

Youtube Video Summarizer & Most-Replayed Highlights

Pricing

from $3.99 / 1,000 results

Go to Apify Store
Youtube Video Summarizer & Most-Replayed Highlights

Youtube Video Summarizer & Most-Replayed Highlights

YouTube Video Summarizer extracts and summarizes video content with most-replayed highlights, key moments, video details, and audience engagement insights. Ideal for content research, competitor analysis, audience analysis, and YouTube trend discovery.

Pricing

from $3.99 / 1,000 results

Rating

0.0

(0)

Developer

Scrapio

Scrapio

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

0

Monthly active users

3 days ago

Last modified

Share

YouTube Scraper β€” Extract Transcripts, Chapters & Replay Highlights

Youtube Video Summarizer & Most-Replayed Highlights turns any YouTube video link into structured JSON: full video and channel metadata, a timestamped transcript, every published chapter, and the audience's most-replayed key moments β€” the exact seconds real viewers rewatched most, each with a clickable timestamped link. Unlike scraping frameworks that hand back raw HTML or an embed player, it returns typed JSON ready for a database, a spreadsheet, or an LLM context window with no parsing step. Optional AI summaries run on your own API key across 19 models from 7 providers. This guide covers every field returned and how teams wire it into enrichment, monitoring and dataset-building pipelines.


🧭 What Does Youtube Video Summarizer & Most-Replayed Highlights Do?

It reads any public YouTube video β€” a watch link, a youtu.be short link, or a Shorts link β€” and returns full video and channel metadata, a timestamped transcript, the video's published chapters, and its audience "most replayed" key moments in one structured row. No YouTube account or sign-in is required; every field comes from data YouTube serves on the public watch page. When you don't have specific links on hand, search topics can discover matching videos and the same pipeline runs on each one.

Key capabilities:

  • πŸ“Š Full video metadata β€” views, likes, comments, engagement rate, category, upload type, live status, tags and hashtags
  • πŸ“Ί Channel details β€” name, handle, subscriber count, verification badge, plus the channel's own About-page description, country and join date
  • πŸ“œ Timestamped transcript β€” the caption track as {start, dur, text} entries, from creator subtitles or YouTube's auto-captions
  • πŸ“‘ Video chapters β€” every published chapter with start/end timestamps, a deep link, and the transcript text spoken inside it
  • πŸ”₯ Most-replayed key moments β€” the ranked peaks of the audience replay curve, each with a replay-intensity score and a &t= deep link
  • πŸ€– Optional AI summaries β€” a short summary, a structured long summary, and per-chapter mini-summaries, generated with your own AI provider key
  • πŸ” Topic-based discovery β€” search YouTube by topic instead of pasting links, and run the full pipeline on the matches

⚑ Features & Capabilities

Capabilities split into two groups: what gets extracted per video, and how this Actor fits alongside the rest of Scrapio's YouTube tooling.

Core features

  • Every video is returned as one row containing chapters[], keyMoments[] and transcript[] alongside metadata β€” no separate calls needed
  • keyMoments[] links each replay peak to chapterTitle and the exact transcriptText spoken there, so a "hot moment" is never just a bare timestamp
  • chapterSource distinguishes creator-written chapters from YouTube's auto-generated ones
  • mostReplayedAvailable tells apart "no peaks found" from "replay data isn't published for this video yet"
  • minReplayIntensity and maxKeyMoments filter the replay curve down to just the moments worth acting on, ranked by replayIntensityPercent
  • Every row carries the same key set whether the video succeeded or failed β€” failed rows return status: "error" and a plain-English error message instead of missing keys
  • Rows are written to the dataset as soon as each video finishes, not batched at the end of the run

Youtube Video Summarizer & Most-Replayed Highlights within the Scrapio data stack

This Actor covers full video-level data: metadata, transcript, chapters and most-replayed key moments for videos you point it at directly. For a caption-coverage audit across many languages and videos β€” which subtitle languages exist, manual vs. auto-generated, cross-checked against the languages your project needs β€” use YouTube Video Subtitles Scraper: Caption Coverage Insights Data instead. Both tools live in Scrapio's YouTube toolset and can run against the same video list.


Why do developers and data teams scrape YouTube?

🎬 Content strategists & video teams

Teams point the Actor at their own or a competitor's video and read keyMoments[] and replayIntensityPercent to see exactly which seconds viewers rewatched most β€” a retention signal not exposed the same way inside YouTube Studio. Cross-referencing topReplayedTimestamp against chapters[] shows which chapter is actually working, informing where to cut a Short, where a mid-roll ad belongs, or which section to expand in a re-edit. engagement_rate (likes + comments over views) and upload_type (short / normal / live_replay) let a team compare formats at a glance without opening each video.

πŸ“Š AI training data and RAG indexing

transcript[], chapters[].transcriptText and keyMoments[].transcriptText are the high-information text fields β€” spoken content already segmented by topic (chapter) and by audience attention (key moment) β€” useful chunks for a RAG index without a separate segmentation step. Two uses: (1) RAG enrichment β€” index chapter-level transcript slices with their deepLinkUrl so a retrieved answer can cite the exact moment in the source video; (2) training data β€” summary and long_summary (when AI summaries are enabled) give a consistent transcript-in, summary-out pair per video. All fields return as typed primitives β€” no HTML parsing before they reach a prompt.

πŸ“± Competitive and market intelligence

Running the Actor against a competitor's or a partner's video links on a schedule turns views, likes, comment_count and engagement_rate into a trackable series. topReplayedTimestamp and keyMomentCount show whether a new video landed with viewers at all, not just whether it got views. category, hashtags and upload_type make it possible to group a channel's output by format and see which one it's leaning into.

πŸ”¬ Research and academic use

Media studies and communication research use the transcript, chapter structure and replay curve as public-data inputs for discourse analysis, retention studies, or dataset construction β€” no login is required and every field is drawn from the public watch page. Scope is limited to what YouTube already serves publicly; the Actor does not access private, unlisted, age-restricted, or members-only content.

πŸŽ₯ Product and SaaS development

Teams building video-analytics dashboards, AI clip-generation tools, or "auto-chapter" products for creators use chapters[] and keyMoments[] as a ready-made structural layer instead of building a heatmap parser and a captions pipeline from scratch. chapterSummary (when chapterSummaries is on) gives a per-section blurb a product can surface directly in a UI.


🍚 Input Parameters

Youtube Video Summarizer & Most-Replayed Highlights takes either a list of video links or a list of search topics β€” at least one of the two must be filled in for a run to have something to process. Every other input tunes which data blocks are collected and how AI summaries run.

ParameterRequiredTypeDescriptionExample Value
videoLinksNoarray (string list)One line per video β€” watch links, youtu.be short links, or Shorts links. Every link becomes its own row.["https://www.youtube.com/watch?v=dQw4w9WgXcQ"]
searchTopicsNoarray (string list)Topics to search on YouTube when videoLinks is empty; every matching video runs through the same pipeline.["official trailer", "guitar tutorial"]
maxVideosPerTopicNointegerHow many videos to take per topic above. Only applies when the link list is empty. Default 2, minimum 1, maximum 50.2
includeChaptersNobooleanAdds chapters[] with timestamps, deep links and the words spoken per chapter. Default true.true
includeKeyMomentsNobooleanAdds keyMoments[], the ranked most-replayed peaks. Default true.true
maxKeyMomentsNointegerKeeps only the top N replay peaks, ranked by intensity. 0 keeps every peak. Default 5, minimum 0, maximum 100.5
minReplayIntensityNointegerPercentage floor (0–100) on a moment's replay score; 0 keeps everything. Default 0, minimum 0, maximum 100.0
includeMomentTranscriptNobooleanFills keyMoments[].transcriptText with the words spoken at that moment. Default true.true
includeReplayHeatmapNobooleanAdds replayHeatmap[], the full ~100-point raw replay curve. Off by default β€” it enlarges every row. Default false.false
includeTranscriptNobooleanAdds transcript[] as {start, dur, text} entries. Default true.true
aiSummariesNobooleanGenerates summary and long_summary from the transcript. Requires aiApiKey below β€” without one the fields stay empty rather than being invented. Default true.true
aiApiKeyNostring (secret)API key for the provider matching aiModel. Can be left empty and set instead as an environment variable on the Actor (OPENAI_API_KEY, ANTHROPIC_API_KEY, GOOGLE_API_KEY, XAI_API_KEY, DEEPSEEK_API_KEY, PERPLEXITY_API_KEY, or MISTRAL_API_KEY).sk-...
aiModelNostring (enum)Model used for summaries; provider is auto-detected from the model name. Default "gpt-4o-mini". Full enum list below."claude-haiku-4-5"
aiApiEndpointNostringCustom chat-completions URL β€” an Azure OpenAI deployment or any OpenAI-compatible gateway. Leave empty for the provider's public endpoint.""
chapterSummariesNobooleanFills chapters[].chapterSummary with a 1–2 sentence summary per chapter. Needs chapters, captions and an AI key; costs one extra model call per video. Default false.false
maxDurationSecondsNointegerSkips videos longer than this many seconds, with a clear reason, instead of processing them. 0 = no limit. Default 0, minimum 0.7200
maxRetriesNointegerAttempts per video before the row is written with an explanatory error. Default 3, minimum 1, maximum 10.3
urlsNoarray (string list)Legacy alias for videoLinks; used only as a fallback when videoLinks is empty. Kept for backward compatibility.["https://youtu.be/aqz-KE-bpKQ"]
proxyConfigurationNoobject (proxy editor)Apify Proxy configuration. Prefilled with {"useApifyProxy": true}.{"useApifyProxy": true}

aiModel enum values: gpt-4o-mini (GPT-4o mini β€” OpenAI, cheap), gpt-4o (GPT-4o β€” OpenAI), gpt-4.1-mini (GPT-4.1 mini β€” OpenAI), gpt-4.1 (GPT-4.1 β€” OpenAI), o3-mini (o3-mini β€” OpenAI, reasoning), claude-haiku-4-5 (Claude Haiku 4.5 β€” Anthropic, cheapest), claude-sonnet-5 (Claude Sonnet 5 β€” Anthropic), claude-opus-4-8 (Claude Opus 4.8 β€” Anthropic, best), gemini-2.0-flash-lite (Gemini 2.0 Flash-Lite β€” Google, cheapest), gemini-2.0-flash (Gemini 2.0 Flash β€” Google), gemini-2.5-flash (Gemini 2.5 Flash β€” Google), gemini-2.5-pro (Gemini 2.5 Pro β€” Google, best), grok-3-mini (Grok 3 mini β€” xAI, cheap), grok-3 (Grok 3 β€” xAI), deepseek-chat (DeepSeek Chat, cheap), sonar (Sonar β€” Perplexity, cheap), sonar-pro (Sonar Pro β€” Perplexity), mistral-small-latest (Mistral Small, cheap), mistral-large-latest (Mistral Large).

JSON input example:

{
"videoLinks": [
"https://www.youtube.com/watch?v=dQw4w9WgXcQ"
],
"searchTopics": [],
"maxVideosPerTopic": 2,
"includeChapters": true,
"includeKeyMoments": true,
"maxKeyMoments": 5,
"minReplayIntensity": 0,
"includeMomentTranscript": true,
"includeReplayHeatmap": false,
"includeTranscript": true,
"aiSummaries": true,
"aiApiKey": "",
"aiModel": "gpt-4o-mini",
"aiApiEndpoint": "",
"chapterSummaries": false,
"maxDurationSeconds": 0,
"maxRetries": 3,
"urls": [],
"proxyConfiguration": {
"useApifyProxy": true
}
}

Supported URL types and input formats

  • Watch links β€” https://www.youtube.com/watch?v=VIDEO_ID
  • Short links β€” https://youtu.be/VIDEO_ID
  • Shorts links β€” accepted the same way, matched by the /shorts/ path
  • At least one of videoLinks (or its legacy alias urls) or searchTopics must have entries β€” a run with both empty stops immediately with an explanatory error instead of charging for nothing.
  • videoLinks takes priority: if it has any entries, searchTopics is ignored for that run.

Real examples:

{ "videoLinks": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"] }
{ "searchTopics": ["guitar tutorial"], "maxVideosPerTopic": 3, "includeReplayHeatmap": false, "aiSummaries": false }
{ "urls": ["https://youtu.be/aqz-KE-bpKQ"] }

πŸ“¦ Output Format

Typed, normalized JSON β€” one row per video, pushed as soon as that video finishes, not batched at the end of the run. Every row carries the same top-level key set whether the video succeeded or failed, because failed rows are built from the same empty-row template as successful ones, with fields nulled rather than omitted. Each processed video charges exactly one row_result event, success or failure β€” filter on status == "error" after the run to find the ones that didn't complete; the charge already applied to those rows too. Export the dataset as JSON, JSONL, CSV, Excel, HTML table, RSS or XML directly from the Apify platform, no extra transform step.

The default dataset view surfaces 37 columns for quick scanning; the row itself carries more (50 top-level keys). Fields present in the row but not in the default view: inputUrl, video_id, description, channel_id, published_date, duration_seconds, language, resolution, ageLimit, availability, mostReplayedSegments, replayHeatmap, long_summary.

Output for a video

{
"inputUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"id": "dQw4w9WgXcQ",
"video_id": "dQw4w9WgXcQ",
"type": "video",
"title": "Example Video Title",
"description": "Example video description text...",
"channel_id": "UCuAXFkgsw1L7xaCfnd5JJOw",
"channel_name": "Example Channel",
"channel": {
"id": "UCuAXFkgsw1L7xaCfnd5JJOw",
"name": "Example Channel",
"handle": "examplechannel",
"url": "https://www.youtube.com/channel/UCuAXFkgsw1L7xaCfnd5JJOw",
"subscriberCount": "1000000 subscribers",
"logo": ["https://yt3.ggpht.com/example.jpg"],
"badges": ["Verified"],
"subscriberCountRaw": 1000000,
"description": "Official channel description from the About page.",
"joined": "Jan 1, 2010",
"country": "US",
"totalViews": "1,000,000,000 views",
"videoCount": "500 videos",
"canonicalUrl": "https://www.youtube.com/@examplechannel",
"links": [{ "title": "Website", "url": "https://example.com" }]
},
"published_date": "2009-10-25",
"publishedAt": "2009-10-25T00:00:00Z",
"relativeDate": "16 year(s) ago",
"duration_seconds": 213,
"durationTimestamp": "3:33",
"views": 1000000000,
"likes": 15000000,
"comment_count": 2000000,
"engagement_rate": 0.017,
"tags": ["example", "tutorial"],
"hashtags": ["#example"],
"category": "Music",
"language": "en",
"live_status": "not_live",
"upload_type": "normal",
"resolution": "1920x1080",
"thumbnails": {
"default": "https://i.ytimg.com/vi/dQw4w9WgXcQ/default.jpg",
"medium": "https://i.ytimg.com/vi/dQw4w9WgXcQ/mqdefault.jpg",
"high": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg",
"standard": "https://i.ytimg.com/vi/dQw4w9WgXcQ/sddefault.jpg",
"maxres": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg"
},
"ageLimit": 0,
"availability": "public",
"transcript": [
{ "start": "0.000", "dur": "3.500", "text": "Never gonna give you up" }
],
"transcriptEntryCount": 120,
"transcriptSource": "subtitles:en",
"transcriptWordCount": 480,
"chapters": [ { "index": 1, "title": "Intro", "startSeconds": 0.0, "endSeconds": 20.0, "startTimestamp": "00:00", "endTimestamp": "00:20", "durationSeconds": 20.0, "deepLinkUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ&t=0s", "transcriptText": "Never gonna give you up", "chapterSummary": null } ],
"chapterCount": 1,
"chapterSource": "creator",
"keyMoments": [ { "rank": 1, "startSeconds": 42.0, "endSeconds": 45.0, "timestamp": "00:42", "replayIntensity": 0.98, "replayIntensityPercent": 98.0, "deepLinkUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ&t=42s", "chapterTitle": "Chorus", "transcriptText": "Never gonna let you down" } ],
"keyMomentCount": 1,
"mostReplayedAvailable": true,
"topReplayedTimestamp": "00:42",
"topReplayedUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ&t=42s",
"mostReplayedSegments": [ { "visibleTimeRangeStartMillis": 40000, "visibleTimeRangeEndMillis": 46000, "decorationTimeMillis": 42000, "label": "Most replayed" } ],
"replayHeatmap": null,
"summary": "A short 3-4 sentence overview of the video.",
"long_summary": "# Example Video Title\n\n## Overview\n\nDetailed markdown summary...",
"summary_source": "transcript",
"summaryStatus": "generated",
"status": "ok",
"error": null,
"scrapedAt": "2026-08-15T09:12:00Z"
}

Output for a key moment

Each entry inside keyMoments[]:

{
"rank": 1,
"startSeconds": 42.0,
"endSeconds": 45.0,
"timestamp": "00:42",
"replayIntensity": 0.98,
"replayIntensityPercent": 98.0,
"deepLinkUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ&t=42s",
"chapterTitle": "Chorus",
"transcriptText": "Never gonna let you down"
}

Output for a chapter

Each entry inside chapters[]:

{
"index": 1,
"title": "Intro",
"startSeconds": 0.0,
"endSeconds": 20.0,
"startTimestamp": "00:00",
"endTimestamp": "00:20",
"durationSeconds": 20.0,
"deepLinkUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ&t=0s",
"transcriptText": "Never gonna give you up, never gonna let you down",
"chapterSummary": null
}

Schema stability and export options

Metadata is read from two independent sources per video β€” the page's own embedded state and a yt-dlp-based reader tried across several player-client profiles β€” and merged, so a gap in one source doesn't blank a field the other one has. Export the dataset as JSON, JSONL, CSV, Excel, HTML table, RSS or XML from the Apify Console or via the API; results are also reachable through the Apify API and apify-client libraries, and through a webhook on run completion.


πŸ’‘ Youtube Video Summarizer & Most-Replayed Highlights Strategy Guide

🎯 Strategy 1: Real-time enrichment pipeline

When a video is published or added to your content pipeline, trigger a run with videoLinks: [newVideoUrl]. Read back chapters[], keyMoments[], engagement_rate, summary (if aiSummaries is on) and transcriptWordCount, then write them onto the matching record in your CMS or CRM. Because each row is pushed the moment that video finishes, a webhook on run completion β€” or dataset polling β€” can fire the write-back without waiting on a batch job.

🎯 Strategy 2: Scheduled monitoring and alerting

Maintain your own list of tracked video links (or use searchTopics for a channel or topic you follow), and run the Actor on an Apify Schedule β€” daily or weekly. Diff views, engagement_rate and topReplayedTimestamp against the previous run's dataset for the same video_id, and alert when a video crosses a view threshold or a new most-replayed peak appears. The Actor has no channel-crawl input of its own β€” you supply the link list; the schedule supplies the repetition.

🎯 Strategy 3: Bulk dataset build

Feed a long videoLinks list (or several searchTopics) into one run to build a research or training dataset. Videos inside a single run are processed one at a time, in the order supplied β€” there is no documented in-run concurrency β€” so very large batches split more predictably across several parallel Actor runs than into one oversized run. Aggregate the resulting dataset to CSV or a database via the Apify API once the run finishes.

Strategy comparison at a glance

StrategyBest forRun patternOutput format
Real-time enrichmentSingle new videos as they publishOne run per video, triggered on publishJSON row appended to your system
Scheduled monitoringTracking known videos over timeRecurring Apify Schedule, diffed against prior runsJSON dataset per run, diffed externally
Bulk dataset buildResearch or training datasetsOne run per batch, videos processed sequentiallyDataset exported to CSV/DB

Within Scrapio's YouTube tools, this Actor covers full video-level metadata, chapters, most-replayed key moments and transcripts for videos you point it at directly. Pair it with the subtitles scraper below for a caption-language audit across a larger video batch, or with the Facebook transcript extractor when the same "video β†’ structured transcript" workflow needs to run on a different platform.

Scraper NameWhat it extracts
YouTube Video Subtitles Scraper: Caption Coverage Insights DataWhich caption languages exist per video (manual vs. auto-generated), cross-checked against the languages you need, plus the full transcript for your primary language
Facebook Video Transcript With Caption ExtractorSpoken transcripts from public Facebook videos, plus hashtag and link entities parsed straight out of the caption text

πŸ”Œ How to integrate Youtube Video Summarizer & Most-Replayed Highlights with your stack

Youtube Video Summarizer & Most-Replayed Highlights works with any language or tool that can make an HTTP request β€” through the Apify API and the official apify-client libraries.

Python

from apify_client import ApifyClient
import csv
client = ApifyClient("<APIFY_API_TOKEN>")
run_input = {
"videoLinks": [
"https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"https://youtu.be/aqz-KE-bpKQ",
],
"includeChapters": True,
"includeKeyMoments": True,
"maxKeyMoments": 5,
"aiSummaries": False,
}
run = client.actor("<your-username>/youtube-video-summarizer-most-replayed-highlights").call(run_input=run_input)
with open("videos.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow(["title", "url", "views", "chapterCount", "keyMomentCount", "topReplayedTimestamp"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
writer.writerow([
item.get("title"), item.get("url"), item.get("views"),
item.get("chapterCount"), item.get("keyMomentCount"), item.get("topReplayedTimestamp"),
])

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<APIFY_API_TOKEN>' });
const input = {
videoLinks: ['https://www.youtube.com/watch?v=dQw4w9WgXcQ'],
includeChapters: true,
includeKeyMoments: true,
maxKeyMoments: 5,
};
const run = await client.actor('<your-username>/youtube-video-summarizer-most-replayed-highlights').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) {
console.log(item.title, item.topReplayedTimestamp, item.keyMomentCount);
}

Async and scheduled pipelines

Runs are asynchronous by nature: client.actor(...).call() blocks until the run finishes, or use .start() and poll the dataset while it's still filling, since rows are pushed one video at a time. For recurring jobs, add an Apify Schedule (cron) in the Console; for fire-and-forget notification instead of polling, attach a webhook to the run's completion event.


🎯 Who Needs Youtube Video Summarizer & Most-Replayed Highlights? (Use Cases & Industries)

🎬 Content strategists & video teams

A creator or a video team runs the Actor on their latest upload and reads keyMoments[] and topReplayedTimestamp against chapters[] to decide where the next Short gets cut from and where a re-edit should trim.

πŸ“Š AI/ML and RAG engineers

Engineers building a video-grounded assistant index chapters[].transcriptText and keyMoments[].transcriptText with their deepLinkUrl, so a retrieved answer can cite the exact moment in the source video.

πŸ“± Marketing and competitive-intelligence analysts

Analysts track views, engagement_rate and keyMomentCount across a competitor's video links on a schedule, turning individual uploads into a comparable performance series.

πŸ”¬ Researchers

Media and communication researchers pull the transcript, chapter structure and replay curve for discourse or retention studies, working only with what YouTube already serves on the public watch page.

πŸŽ₯ SaaS and analytics product builders

Teams building video-analytics dashboards or "auto-chapter" tools for creators use chapters[] and keyMoments[] as a ready-made structural layer instead of parsing the replay heatmap and captions pipeline themselves.


Scraping publicly accessible web data is broadly lawful in the United States β€” courts have found that accessing data a site makes available without a login is not a computer-fraud violation (hiQ Labs v. LinkedIn, 9th Cir., 2019). That precedent covers the access question; it does not clear every use. Two separate questions still apply:

  • Terms of Service β€” YouTube's Terms of Service restrict automated access. Violating a platform's terms is a contract/civil matter between the user and the platform, not a criminal one, but it can carry consequences such as account or IP restrictions.
  • Data protection β€” this Actor returns video, chapter, transcript and channel-level content data β€” public creator/publisher information, not private individual profiles. Full GDPR/CCPA "personal data" framing does not attach to that kind of content data the way it would to a scraper built around private user profiles. If your dataset happens to combine this data with information that identifies a private individual, ordinary data-protection obligations for that use still sit with you.

Youtube Video Summarizer & Most-Replayed Highlights returns only publicly accessible data. What you do with that data is your responsibility β€” consult legal counsel for commercial applications involving personal data.


❓ Frequently asked questions

Does Youtube Video Summarizer & Most-Replayed Highlights work without a YouTube account?

Yes. No YouTube account or sign-in is required β€” every field is read from the public watch page and its caption track. Optional AI summaries need your own AI provider key, not a YouTube credential.

How does it handle YouTube's anti-scraping measures?

It rotates through Apify Proxy (with a residential fallback route triggered automatically on bot-check or connection-refusal signals) and tries several yt-dlp "player client" profiles in sequence until one returns a complete metadata read. Failed attempts are retried with a backoff delay that grows from 1 second up to a cap of 8 seconds between tries.

Can I run it at scale without getting blocked?

Videos are attempted up to maxRetries times (default 3, up to 10) with proxy fallback on repeated failures. Within a single run, videos are processed one at a time rather than in parallel, so very large batches are more predictable split across multiple parallel runs than crammed into one. No uptime or success-rate figure is published for this Actor.

How fresh is the data Youtube Video Summarizer & Most-Replayed Highlights returns?

Live per run. The video page, channel About page, and caption track are fetched fresh every time the Actor runs β€” nothing is cached or served from a prior run.

Which YouTube fields work best for AI training and RAG indexing?

For RAG: transcript[], chapters[].transcriptText and keyMoments[].transcriptText β€” pre-segmented spoken text with a deepLinkUrl for citation. For training data: summary and long_summary (when aiSummaries is on) give a consistent transcript-in, summary-out pair. All fields return as typed primitives requiring no normalization.

Does it work with Claude, ChatGPT, and other AI agent tools?

There's no dedicated MCP server for this Actor. It's callable as an HTTP endpoint through the Apify API by any agent framework β€” every response is typed JSON, no parsing required before it reaches a model's context window.

What happens if a video has no chapters or no most-replayed data?

Both are returned honestly rather than guessed: a video with no published chapters returns chapters: [] and chapterCount: 0; a video with no published replay curve returns mostReplayedAvailable: false and keyMoments: [], distinct from a video that has replay data but no peak passed your minReplayIntensity filter.

What happens when AI summaries are on but no API key is supplied?

The run still returns every other field β€” metadata, transcript, chapters, key moments. summary and long_summary stay empty, and summaryStatus records the reason (not_generated_no_ai_key_supplied) instead of the fields being invented.

Does retrying help with private, removed, or over-the-limit videos?

No. maxRetries covers transient failures β€” timeouts, connection errors, temporary bot checks. A video that's private, removed, or longer than maxDurationSeconds fails on the first attempt with a matching error message and is not retried, since retrying wouldn't change the outcome.


ℹ️ Disclaimer

Youtube Video Summarizer & Most-Replayed Highlights extracts only publicly available data from YouTube. This tool is intended for lawful use cases only. Users are responsible for complying with YouTube's Terms of Service and applicable data protection laws in their jurisdiction.