Export recent public videos from YouTube channels by channel URL, @handle, or channel ID.
Use this actor to turn YouTube channel inputs into clean video metadata rows for competitor monitoring, creator research, content operations, trend tracking, and agent workflows. Results can be downloaded as CSV, JSON, Excel, XML, RSS, or used through the Apify Dataset API.
At a glance
- Recent channel videos: Save video IDs, canonical URLs, titles, descriptions, published dates, thumbnails, durations, Shorts flags, and view counts.
- Flexible channel inputs: Use full channel URLs, @handles, or stable
UC...channel IDs. - Shorts control: Keep Shorts in the output or filter them out with
includeShorts. - Per-channel caps: Limit saved videos per channel for cost control and repeatable monitoring.
- Resilient batch handling: Invalid inputs fail before the start charge; transient public-feed responses use bounded retries, while one failed channel does not discard successful channel rows.
- Agent-ready output: Feed stable video URLs and IDs into transcript, comment, enrichment, alerting, or reporting workflows.
What can it do?
YouTube Channel Videos Scraper saves one dataset row per recent public video found for each submitted channel.
- Resolve channels: Accept channel URLs, @handles, and
UC...IDs. - Export video metadata: Save video ID, URL, title, description, publish date, thumbnail, duration, view count, and source channel data.
- Separate Shorts workflows: Keep Shorts by default or set
includeShortstofalsefor long-form-only exports. - Control volume: Use
maxVideosPerChannelto cap saved rows per channel. - Chain workflows: Send
videoUrlorvideoIdinto transcript, comment, summarization, or monitoring actors.
Common workflows
- Competitor monitoring: Schedule a list of competitor channels and compare recent uploads over time.
- Creator discovery: Export recent videos from target creators before analyzing topics, cadence, or engagement.
- Content operations: Feed new video URLs into transcript, clipping, tagging, or editorial workflows.
- Research datasets: Build bounded datasets for channel-level or niche-level video analysis.
- Shorts inventory: Keep
includeShortsenabled to capture short-form uploads when they appear in channel feeds.
Example input
{
"channelUrlsOrIds": [
"https://www.youtube.com/@GoogleDevelopers",
"UC_x5XG1OV2P6uZZ5FSM9Ttw"
],
"maxVideosPerChannel": 10,
"includeShorts": true,
"proxyConfiguration": {
"useApifyProxy": false
}
}
Example output
{
"channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw",
"channelName": "Google for Developers",
"channelUrl": "https://www.youtube.com/channel/UC_x5XG1OV2P6uZZ5FSM9Ttw",
"videoId": "eaUd3iYkj_w",
"videoUrl": "https://www.youtube.com/shorts/eaUd3iYkj_w",
"title": "In production, which file actually gets loaded?",
"description": "A package import can look simple on the surface.",
"publishedAt": "2026-06-15T13:00:09+00:00",
"thumbnailUrl": "https://i2.ytimg.com/vi/eaUd3iYkj_w/hqdefault.jpg",
"duration": null,
"isShort": true,
"viewCount": 1315,
"sourceUrl": "https://www.youtube.com/@GoogleDevelopers",
"scrapedAt": "2026-06-15T20:00:00.000Z"
}
Tips for best results
- Prefer channel IDs for automation: IDs are more stable than handles.
- Use handles for quick setup: Handles such as
@GoogleDevelopersare easy to paste into the UI. - Set a per-channel cap: Keep
maxVideosPerChannellow for tests and monitoring tasks. - Decide on Shorts early: Set
includeShortstofalseif your downstream workflow expects only regular video pages. - Chain by video ID: Use
videoIdorvideoUrlfor transcript, comment, or video-detail enrichment.
API and integrations
- Run the actor from the Apify Console, API, SDKs, webhooks, schedules, or MCP-compatible agents.
- Export datasets as CSV, JSON, Excel, XML, RSS, or stream rows through the Dataset API.
- Schedule recurring runs to monitor upload cadence.
- Feed video URLs into transcript, comment, summarization, classification, or alerting workflows.
Node.js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/youtube-channel-videos-scraper').call({
channelUrlsOrIds: ['https://www.youtube.com/@GoogleDevelopers'],
maxVideosPerChannel: 10,
includeShorts: true,
});
console.log(`Dataset: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
Python
from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('fetch_cat/youtube-channel-videos-scraper').call(run_input={
'channelUrlsOrIds': ['https://www.youtube.com/@GoogleDevelopers'],
'maxVideosPerChannel': 10,
'includeShorts': True,
})
print(f"Dataset: https://console.apify.com/storage/datasets/{run['defaultDatasetId']}")
cURL
curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~youtube-channel-videos-scraper/runs?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"channelUrlsOrIds":["https://www.youtube.com/@GoogleDevelopers"],"maxVideosPerChannel":10,"includeShorts":true}'
MCP and AI agents
Use the official Apify MCP server when you want Claude, ChatGPT, or another MCP-compatible client to run this Actor.
claude mcp add apify --transport http "https://mcp.apify.com?tools=fetch_cat/youtube-channel-videos-scraper"
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/youtube-channel-videos-scraper"
}
}
}
Example prompt: "Export the latest videos from these YouTube channels, skip Shorts, and return titles, video URLs, publish dates, thumbnails, and view counts."
Limits and responsible use
- The actor extracts public recent-video metadata. It does not download video files or access private analytics.
- YouTube public channel feeds may expose only a recent batch of videos, not a complete historical archive.
- Some fields, such as duration or view count, may be unavailable for some videos.
- A run keeps successful channel rows when another channel is unavailable. Review the
RUN_SUMMARYkey-value record for failed channels, retries, pending channels, and deadline-related partial completion. Runs with zero saved videos fail rather than producing a misleading empty success. - The actor uses public YouTube pages and feeds only; it does not collect cookies, use account credentials, or attempt PO-token or account-access circumvention.
- Review your use of exported data against YouTube terms, Apify terms, and applicable privacy rules.
Support
If a public channel input fails, try a stable channel ID first. If the issue continues, open an issue or report a bug from the actor page with the run ID or run URL, input JSON, expected output, actual output, and a reproducible public URL such as a channel page.
Privacy and data handling
This Actor only requests the permissions needed to run the input you provide. It uses your input (such as URLs, search terms, identifiers, filters, and limits) only to fetch the requested public data from the relevant source site or API for this Actor, then writes results to your Apify dataset/key-value store.
Data may pass through Apify platform services and Apify Proxy during the run, and requests are sent only to the target site or public data provider required for this Actor's results. FetchCat does not send your inputs or outputs to advertising networks, data brokers, or model-training services, and does not retain run data outside Apify storage after the run except when you explicitly share run details for transient support debugging.
You are responsible for using this Actor lawfully, respecting the target site's terms, and avoiding unnecessary personal or sensitive data in inputs. Review the output before storing, sharing, or combining it with other data.