YouTube Video Details & Metadata Scraper avatar

YouTube Video Details & Metadata Scraper

Pricing

from $0.03 / 1,000 item extracteds

Go to Apify Store
YouTube Video Details & Metadata Scraper

YouTube Video Details & Metadata Scraper

Export public YouTube video and Shorts metadata, views, likes, comments, channels, categories, hashtags, thumbnails, availability, and status diagnostics.

Pricing

from $0.03 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

9

Total users

6

Monthly active users

17 days ago

Last modified

Share

Export public YouTube video and Shorts metadata from video URLs, Shorts URLs, youtu.be links, embed links, or raw video IDs.

Use this actor when you need a repeatable CSV, JSON, Excel, or API export of public YouTube video details for content research, channel analysis, video monitoring, catalog enrichment, or AI-agent workflows.

At a glance

  • Input: YouTube video URLs, Shorts URLs, youtu.be links, embed URLs, or video IDs.
  • Output: One dataset row per unique video with title, description, channel, dates, category, duration, public metrics, availability, thumbnails, hashtags, provenance, and status.
  • Works with Shorts: Shorts URLs are accepted, and eligible square or vertical videos up to three minutes are classified using YouTube's current rules.
  • No login required: The actor reads public video pages and public oEmbed fallback data.
  • Best for: Video metadata exports, channel audits, content inventories, and YouTube API alternative workflows.

Ready-to-run examples

Use these saved Store examples as starting points. Open any example to prefill the Actor input, then adjust URLs, keywords, limits, or filters for your own run.

What can it do?

  • Export YouTube video details: Get public titles, descriptions, video IDs, canonical and embed URLs, categories, thumbnails, keywords, and hashtags.
  • Collect channel context: Save channel names, channel IDs, and channel URLs when YouTube exposes them.
  • Track public metrics: Export view, like, comment, and public subscriber counts, duration, publish/upload dates, and live/Shorts flags when available.
  • Check availability: Collect public country availability, unlisted/family-safe indicators, and normalized private, age, region, rate-limit, challenge, or unavailable errors.
  • Know when data is partial: extractionSource, dataCompleteness, and warnings distinguish full watch-page metadata from public embed or limited oEmbed fallback data.
  • Keep batch progress: Results are stored as each video finishes, transient requests use bounded retries, and RUN_SUMMARY records partial and failed work.
  • Use as a YouTube video API alternative: Run from the Apify UI, API, schedules, webhooks, or the official Apify MCP server.

Common workflows

  • Content inventory: Build a clean spreadsheet of video URLs, titles, descriptions, channels, and publish dates.
  • Competitor video research: Monitor public video metadata and engagement fields across a list of competitor URLs.
  • Shorts analysis: Separate Shorts from regular videos and compare title, channel, and metric patterns.
  • Dataset enrichment: Add video metadata to rows collected by a YouTube search, playlist, or channel scraper.
  • AI-agent research: Let an agent fetch structured video context before summarizing, classifying, or comparing videos.

Input example

{
"videoUrls": [
{ "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" },
{ "url": "https://www.youtube.com/shorts/0zM3nApSvMg" }
],
"videoIds": ["9bZkp7q19f0"],
"maxConcurrency": 3,
"includeRawMetadata": false,
"retryCount": 3,
"runTimeSecs": 270
}

Output example

{
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"videoId": "dQw4w9WgXcQ",
"type": "video",
"title": "Rick Astley - Never Gonna Give You Up (Official Music Video)",
"description": "Official video...",
"channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
"channelName": "Rick Astley",
"channelUrl": "https://www.youtube.com/channel/UCuAXFkgsw1L7xaCfnd5JJOw",
"publishedAt": "2009-10-25",
"uploadDate": "2009-10-25",
"durationSeconds": 213,
"viewCount": 1780000000,
"likeCount": null,
"commentCount": null,
"category": "Music",
"hashtags": [],
"thumbnailUrls": ["https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg"],
"keywords": ["Rick Astley"],
"isLiveContent": false,
"isShort": false,
"embedUrl": "https://www.youtube.com/embed/dQw4w9WgXcQ",
"extractionSource": "watch-page",
"dataCompleteness": "full",
"warnings": [],
"scrapedAt": "2026-07-03T10:00:00.000Z",
"status": "ok"
}

Input configuration

SettingJSON keyWhat to enter
YouTube video or Shorts URLsvideoUrlsWatch, Shorts, youtu.be, or embed URLs.
YouTube video IDsvideoIdsRaw 11-character video IDs when you already have them.
Maximum concurrencymaxConcurrencyNumber of videos to fetch in parallel. Lower it if YouTube throttles large runs.
Include raw metadataincludeRawMetadataAdds selected raw source objects for debugging or custom downstream parsing.
Retry countretryCountBounded retries for rate limits, transient failures, and recognized challenge pages.
Initial retry delayinitialRetryDelayMillisBackoff starting delay; YouTube's Retry-After is honored when present.
Request pacingrequestPacingMillisDelay before later requests to reduce bursts.
Safe run timerunTimeSecsStops new network work before timeout so completed rows and the summary are preserved.
Proxy configurationproxyConfigurationOptional direct, Apify Proxy, or custom proxy routing. Direct requests remain the default.

Output fields

FieldDescription
url, videoId, typeCanonical URL, YouTube ID, and detected type: video, short, or unknown.
title, descriptionPublic video text when available.
channelId, channelName, channelUrlPublic channel information when exposed.
publishedAt, uploadDate, durationSeconds, categoryPublic dates, duration, and category when available.
viewCount, likeCount, commentCount, subscriberCountPublic engagement and channel audience counts when YouTube exposes them.
thumbnailUrls, thumbnails, bestThumbnailUrlThumbnail URLs plus available dimensions and a convenient largest-image URL.
keywords, hashtags, availableCountriesPublic discovery terms and country availability metadata.
isLiveContent, isShort, isUnlisted, isFamilySafe, isEmbeddablePublic video-type and availability indicators.
embedUrl, extractionSource, dataCompleteness, warningsEmbed link and explicit source/completeness diagnostics.
status, errorType, errorMessage, scrapedAtPer-video status, normalized error detail, and scrape timestamp.
rawMetadataOptional selected source metadata when includeRawMetadata is enabled.

Pricing

This Actor uses pay-per-event pricing. The start event is charged once after valid input is confirmed. The item event is charged only for a saved usable row; error rows are not charged as items. The final tier depends on your Apify plan or custom agreement.

EventWhat is chargedFree / no discountStarter / BronzeScale / SilverBusiness / GoldCustom / PlatinumCustom / Diamond
startOne validated run$0.005$0.005$0.005$0.005$0.005$0.005
item1,000 saved full or partial usable rows$0.06488$0.05642$0.04401$0.03385$0.02257$0.0158

Apify may also charge platform usage for compute, storage, proxies, or data transfer outside this Actor pricing. Check the Actor run and the Apify Pricing tab for the exact cost shown to your account.

Tips for best results

  • Start with 5-20 URLs before running a large list.
  • Mix videoUrls and videoIds only when you need both; duplicates are deduplicated by video ID.
  • Keep includeRawMetadata off for normal exports because it makes dataset rows larger.
  • Use status, errorType, and dataCompleteness to separate full results, partial fallback rows, and unavailable/private/blocked videos.
  • For recurring batches, inspect the RUN_SUMMARY key-value-store record or the Output tab after every run.
  • Expect some metric fields to be null; YouTube does not expose every count for every video.

Limits and caveats

  • The actor exports metadata. It does not download videos, scrape comments, or extract transcripts.
  • Private, age-restricted, deleted, or region-blocked videos may return partial data or an uncharged error row.
  • Like and comment counts are only available when YouTube exposes them in public page metadata.
  • YouTube page structure can change, so large monitoring workflows should keep a small scheduled test run.

API usage

cURL

curl "https://api.apify.com/v2/acts/fetch_cat~youtube-video-details-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"videoUrls": [{ "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" }],
"maxConcurrency": 3
}'

JavaScript (Node.js)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/youtube-video-details-scraper').call({
videoUrls: [{ url: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ' }],
maxConcurrency: 3,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("fetch_cat/youtube-video-details-scraper").call(run_input={
"videoUrls": [{"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"}],
"maxConcurrency": 3,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

MCP and AI agents

Use this Actor as a focused tool through the official Apify MCP server:

https://mcp.apify.com/?tools=fetch_cat/youtube-video-details-scraper

Add it to Claude Code:

$claude mcp add apify-youtube-details 'https://mcp.apify.com/?tools=fetch_cat/youtube-video-details-scraper'

Example MCP JSON configuration:

{
"mcpServers": {
"apify-youtube-details": {
"url": "https://mcp.apify.com/?tools=fetch_cat/youtube-video-details-scraper"
}
}
}

Example prompts:

  • “Export metadata and public engagement counts for these YouTube video URLs, and flag partial or unavailable rows.”
  • “Compare categories, hashtags, duration, and views for this list of competitor videos.”
  • “Check which of these public videos are Shorts, unlisted, live, or region-limited.”

Agent-friendly inputs include videoUrls, videoIds, maxConcurrency, retryCount, runTimeSecs, and includeRawMetadata. The published input, output, dataset, and RUN_SUMMARY schemas let agents distinguish full, partial, and failed video lookups without guessing.

FAQ

Can this scrape YouTube Shorts?
Yes. Paste Shorts URLs into videoUrls; rows are marked with isShort.

Do I need a YouTube API key?
No. This actor reads publicly available video metadata.

Does it scrape comments or transcripts?
No. It extracts video metadata and public engagement fields, not comments, transcript text, or media files.

Can I export to CSV or Excel?
Yes. Download the Apify dataset as CSV, Excel, JSON, XML, RSS, or through the Dataset API.

Support

If a run fails, returns no data, or a field looks wrong, open an issue from the Actor page.

Please include the Apify run ID or run URL, input JSON, one example public URL, query, or input item, what you expected, and what the dataset returned. Small reproducible inputs make parsing or site-layout issues much faster to fix.

Privacy and data handling

This Actor runs with Apify limited permissions and only processes data needed for the documented run. It uses content lookup inputs and public posts, profiles, videos, comments, or channel metadata needed for the requested output to produce the output dataset and sends requests to public Youtube Video Details pages/endpoints; results are stored in Apify run storage for your account. FetchCat does not use your inputs or outputs for advertising, does not use them for model training, and does not retain them outside the Apify run except for transient support debugging when you explicitly share run details. You are responsible for using the Actor lawfully, respecting the target site's terms, and avoiding unnecessary personal or sensitive data in inputs.