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.
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, andwarningsdistinguish 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_SUMMARYrecords 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"
}
Tips for best results
- Start with 5-20 URLs before running a large list.
- Mix
videoUrlsandvideoIdsonly when you need both; duplicates are deduplicated by video ID. - Keep
includeRawMetadataoff for normal exports because it makes dataset rows larger. - Use
status,errorType, anddataCompletenessto separate full results, partial fallback rows, and unavailable/private/blocked videos. - For recurring batches, inspect the
RUN_SUMMARYkey-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.
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.