YouTube Video Details & Metadata Scraper
Pricing
from $0.03 / 1,000 item extracteds
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
Maintained by CommunityActor stats
0
Bookmarked
9
Total users
6
Monthly active users
17 days ago
Last modified
Categories
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.
- Export Video Metadata For Archive
- Check Youtube Canonical Urls
- Enrich Videos From Google Sheets
- Extract Youtube Details For Media Monitoring
- Batch Enrich Competitor Video Links
- Enrich Youtube Video Urls For Notion
- View all ready-to-run examples (43 examples)
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"}
Input configuration
| Setting | JSON key | What to enter |
|---|---|---|
| YouTube video or Shorts URLs | videoUrls | Watch, Shorts, youtu.be, or embed URLs. |
| YouTube video IDs | videoIds | Raw 11-character video IDs when you already have them. |
| Maximum concurrency | maxConcurrency | Number of videos to fetch in parallel. Lower it if YouTube throttles large runs. |
| Include raw metadata | includeRawMetadata | Adds selected raw source objects for debugging or custom downstream parsing. |
| Retry count | retryCount | Bounded retries for rate limits, transient failures, and recognized challenge pages. |
| Initial retry delay | initialRetryDelayMillis | Backoff starting delay; YouTube's Retry-After is honored when present. |
| Request pacing | requestPacingMillis | Delay before later requests to reduce bursts. |
| Safe run time | runTimeSecs | Stops new network work before timeout so completed rows and the summary are preserved. |
| Proxy configuration | proxyConfiguration | Optional direct, Apify Proxy, or custom proxy routing. Direct requests remain the default. |
Output fields
| Field | Description |
|---|---|
url, videoId, type | Canonical URL, YouTube ID, and detected type: video, short, or unknown. |
title, description | Public video text when available. |
channelId, channelName, channelUrl | Public channel information when exposed. |
publishedAt, uploadDate, durationSeconds, category | Public dates, duration, and category when available. |
viewCount, likeCount, commentCount, subscriberCount | Public engagement and channel audience counts when YouTube exposes them. |
thumbnailUrls, thumbnails, bestThumbnailUrl | Thumbnail URLs plus available dimensions and a convenient largest-image URL. |
keywords, hashtags, availableCountries | Public discovery terms and country availability metadata. |
isLiveContent, isShort, isUnlisted, isFamilySafe, isEmbeddable | Public video-type and availability indicators. |
embedUrl, extractionSource, dataCompleteness, warnings | Embed link and explicit source/completeness diagnostics. |
status, errorType, errorMessage, scrapedAt | Per-video status, normalized error detail, and scrape timestamp. |
rawMetadata | Optional 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.
| Event | What is charged | Free / no discount | Starter / Bronze | Scale / Silver | Business / Gold | Custom / Platinum | Custom / Diamond |
|---|---|---|---|---|---|---|---|
start | One validated run | $0.005 | $0.005 | $0.005 | $0.005 | $0.005 | $0.005 |
item | 1,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
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 osfrom apify_client import ApifyClientclient = 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().itemsprint(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.
Related actors
- YouTube Search Results Scraper
- YouTube Channel Videos Scraper
- YouTube Playlist Videos Scraper
- YouTube Shorts Scraper
- YouTube Comments Scraper
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.