YouTube Video Metadata & Chapter Extractor avatar

YouTube Video Metadata & Chapter Extractor

Pricing

from $0.49 / 1,000 results

Go to Apify Store
YouTube Video Metadata & Chapter Extractor

YouTube Video Metadata & Chapter Extractor

Get full metadata for any YouTube video or Short: channel info, chapters, endscreen elements, caption track list, related videos and comments, from a URL or video ID.

Pricing

from $0.49 / 1,000 results

Rating

0.0

(0)

Developer

vexaloom-labs

vexaloom-labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Give this actor YouTube video or Short links (or bare 11-character IDs) and get one structured row per video: exact metadata, manual and automatic chapters, heatmap segments, caption-track availability, live and age status, and optional comments or transcript text. No YouTube API key, cookies, or proxy setup.

What this actor does

  • Exact metadata: title, description, channel, exact views and likes, duration, ISO publish time, category, creator keywords, thumbnails and canonical URL.
  • Chapters: manual creator chapters and YouTube-generated automatic chapters, each with title, start, end, source and a deep link. Description timestamps are used only when YouTube exposes no chapter panel.
  • Heatmap: optional Most replayed segments and YouTube's own labels. Heatmap is available when YouTube provides it and is omitted otherwise.
  • Captions: the full caption-track list with language, manual or auto-generated status, and a transcript when a track can be downloaded.
  • Status: live now, was live, upcoming, age-restricted, unlisted, family-safe, available countries and playability flags.
  • Shorts and batches: watch, youtu.be, Shorts, embed, live, /v/ and mobile links or bare IDs; repeated IDs are processed once.
  • Comments: up to 1,000 comment texts per video when enabled. The display comment count is captured separately.
  • Omit-empty: a field is present only when YouTube returned real data. On a gated page some values, including caption summaries, can be unavailable rather than genuinely empty; see Limitations.

Output

Each dataset row is one unique video.

FieldTypeNotes
videoId, url, inputUrlstringCanonical watch URL and the original input
type, uploadTypestringvideo or short; a Short is labelled short from a /shorts/ link or the Shorts player surface
title, descriptionstringFull values on normal pages; a gated description can be truncated to about 160 characters
channelId, channelNamestringUploader identity
channelobjectid, name, handle, url, subscriber count/text, logo, badges
viewCount, likeCountintegerExact values when YouTube exposes them
commentCountTextstringDisplay count such as 2.4M
commentCountintegerOnly when the display value is an exact integer
durationSecondsintegerOmitted for live streams or unknown duration
publishedDatestringYYYY-MM-DD
publishedAtstringISO-8601 timestamp with the original offset; omitted when YouTube hides it on a gated page
uploadDatestringRaw YouTube upload value
category, tags, hashtagsstring / arrayCreator settings and description hashtags
thumbnailsobjectdefault, medium, high, standard, maxres when available
captionTracksarraylanguage, name, auto-generated flag, translatable; empty when YouTube exposes none or gates the page
captionTrackCount, hasManualCaptions, hasAutoCaptionsinteger / booleanCaption availability summary; 0/false can mean "not observed" on a gated page
chapterSourcestringmanual, auto or description
chaptersarraytitle, startSeconds, endSeconds, startTimeText, source, url, thumbnailUrl
heatmaparraystartSeconds, endSeconds, intensity (when enabled)
mostReplayedarrayYouTube's Most replayed labels (when enabled)
heatmapSegmentCountintegerPresent only when a heatmap exists
liveStatusstringlive_now, was_live or upcoming; omitted for regular uploads
isLiveNow, isUpcoming, isUnlisted, isFamilySafe, isShortsEligiblebooleanAvailability flags
isAgeGated, requiresLogin, isPlayable, playabilityStatusboolean / stringAccess state
availableCountriesarrayCountry codes YouTube reports
transcriptarrayTimed {start, dur, text} segments when available
commentsarrayComment texts when maxComments > 0
success, error, scrapedAtboolean / stringResult state; failure rows still carry real partial data

Failure rows are written for invalid, removed, private or region-blocked links. They keep the input URL, a real video ID when known, success: false and an explanatory error; they never invent metadata.

Input

FieldTypeDefaultDescription
videoUrlsarray– (required)Watch/youtu.be/Shorts/embed/live//v/ links or bare 11-character IDs. Duplicates are removed.
maxCommentsinteger0Comment texts to collect per video (0–1000). 0 skips comments.
includeChaptersbooleantrueManual and automatic chapters with source and end times.
includeHeatmapbooleanfalseMost replayed segments and labels when available.
includeEndscreenbooleantrueEndscreen elements when YouTube exposes them.
includeCardsbooleanfalseInfo cards embedded in the player.
includeTranscriptMetadatabooleantrueCaption-track list with language and manual/auto status.
includeTranscriptbooleantrueDownload transcript text when a caption track is available.
includeRelatedVideosinteger0Related sidebar videos to include (0–50).

Example: core metadata and chapters

{
"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
"includeChapters": true,
"includeHeatmap": false
}

Example: batch IDs with heatmap and comments

{
"videoUrls": ["jNQXAC9IVRw", "https://youtu.be/dQw4w9WgXcQ", "https://www.youtube.com/shorts/IaSm0LeErrc"],
"includeHeatmap": true,
"maxComments": 20,
"includeTranscript": false
}

Use cases

  • Content research: compare exact views, likes, dates and chapter structure across a list of videos.
  • SEO and publishing: inspect titles, descriptions, tags, categories and hashtags from competitors.
  • Retention analysis: see which parts YouTube marks as Most replayed and how they line up with chapters.
  • Caption and accessibility audits: find which languages have manual captions versus auto-generated tracks.
  • Monitoring: re-run the same list to track view growth, live status and availability changes.
  • AI and analytics pipelines: feed clean, stable JSON into summaries, dashboards or datasets.

FAQ

Does it need cookies or a proxy? No. It reads public YouTube pages and public InnerTube endpoints without cookies, logins or API keys. No proxy setup is required. After a block it can retry through Apify's built-in datacenter proxy automatically; there is no proxy field and nothing to configure.

Why is commentCount missing when I can see a count on YouTube? YouTube shows abbreviated counts such as 2.4M. That value is returned in commentCountText. commentCount is populated only when the display value is an exact integer, so a rounded number is never presented as exact.

Why is a description short or a field missing? On Apify cloud/datacenter IPs YouTube sometimes shows a bot-check page. The actor still returns the chapters and heatmap visible on that page and recovers what it can, but some fields (publish time, duration, tags, caption tracks, transcript) may be missing and a gated description can be cut to about 160 characters. It never invents values. Re-running can recover more because the gate is per request.

Why is a heatmap missing? YouTube does not publish Most replayed data for every video. It is commonly absent on live streams, very new or low-view videos, some music videos and age-restricted videos. The field is omitted rather than fabricated.

Why do some videos have no chapters? Only creators who add chapters, or videos where YouTube generates automatic chapters, have them. chapterSource tells you which kind was found. Videos with neither have no chapters field.

Are auto-generated chapters supported? Yes. They use YouTube's AUTO_CHAPTERS surface and are labelled auto; creator chapters are labelled manual.

Why are captions missing for some videos? YouTube only exposes caption tracks when the uploader provided them or the platform generated them. Live streams, some age-restricted videos and bot-gated pages often have none. captionTrackCount, hasManualCaptions and hasAutoCaptions show what was observed; a zero on a gated page can mean "not observed" rather than "no captions".

Is the transcript always available? No. Transcript text is returned only when a caption track can be downloaded. Set includeTranscript to false to skip the extra request.

What happens for age-restricted or private videos? Age-restricted videos can return real metadata with isAgeGated: true. Private, removed or members-only videos produce a failure row with success: false and the reason YouTube gave. The actor does not bypass access controls.

Does a failed link stop the run? No. Every unique input gets its own row; failures do not stop the remaining videos.

Is this affiliated with YouTube? No. It is an independent tool that reads publicly available YouTube data.

Limitations

  • Heatmap, automatic chapters, captions and transcripts are conditional on what YouTube publishes for each video.
  • Cloud runs can be partially gated by YouTube. Missing fields (publish time, duration, tags, caption tracks, transcript) are omitted rather than guessed; a gated description can be truncated to about 160 characters, and summary values such as captionTrackCount: 0 can mean "not observed" rather than "none". Re-running can recover more because the gate is per request.
  • A Short is labelled short when the input uses a /shorts/ link or YouTube exposes the Shorts player; a bare ID without those signals is labelled video (isShortsEligible and duration are still returned).
  • Exact comment counts and exact subscriber counts are not available from the public surfaces used here; display text is returned instead.
  • Private, members-only and login-gated content is not supported.
  • YouTube's public endpoints can intermittently ask for a bot check; the actor retries with a fresh connection before reporting a real failure.