YouTube Channel Videos Scraper
Pricing
from $0.06 / 1,000 video results
YouTube Channel Videos Scraper
Export recent public videos from YouTube channels with video IDs, URLs, titles, descriptions, published dates, thumbnails, Shorts flags, and view counts.
Pricing
from $0.06 / 1,000 video results
Rating
0.0
(0)
Developer
Hanna Nosova
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
13 days ago
Last modified
Categories
Share
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.
Ready-to-run examples
Open an example or task, review the input, and run it as-is or adjust the channel list:
- Export TED Channel Videos: Export recent public videos from the TED channel.
- Monitor Google Developers YouTube Uploads: Track recent uploads from Google Developers.
- Track NASA YouTube Channel Videos: Build a recent video dataset for NASA.
- YouTube Channel Latest Videos by Handle: Start from a handle-based task pattern.
- YouTube Channel Shorts Inventory: Keep Shorts in the output for a Shorts-focused inventory.
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.
Pricing
This Actor uses Apify pay-per-event pricing. The prices below come from the current Actor pricing configuration. Apify public plans map to Store discount tiers, so the table shows both the user-facing plan context and the pricing tier name. The final price shown in Apify depends on the user account plan and any custom agreement.
| Event | What is charged | Price |
|---|---|---|
start | One-time fee per run | $0.005 |
| Event | What is charged | Free / no discount | Starter / Bronze | Scale / Silver | Business / Gold | Custom / Platinum | Custom / Diamond |
|---|---|---|---|---|---|---|---|
result | Per YouTube video saved to the dataset | $0.115 / 1,000 | $0.1 / 1,000 | $0.078 / 1,000 | $0.06 / 1,000 | $0.04 / 1,000 | $0.028 / 1,000 |
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.
Input configuration
| Setting | JSON key | Use it for |
|---|---|---|
| Channel URLs, handles, or IDs | channelUrlsOrIds | Public YouTube channel URLs, @handles, or UC... channel IDs. |
| Maximum videos per channel | maxVideosPerChannel | Maximum recent videos to save for each channel. YouTube public channel feeds usually expose the latest batch of public videos. |
| Include Shorts | includeShorts | Keep YouTube Shorts in the output when they appear in the channel's recent videos feed. |
| Resume pending channels after migration | resumeFromCheckpoint | Continue with this run's saved pending channels after a platform restart; enabled by default. |
| Proxy configuration for feed fallback | proxyConfiguration | Optional Apify Proxy settings used only after temporary public channel-feed failures. Direct requests are used by default. |
Only public YouTube @handle URLs, @handles, and stable UC... channel IDs are accepted. Video, playlist, search, and non-YouTube URLs are rejected before the run's start event is charged.
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"}
Output fields
| Field | Description |
|---|---|
channelId | Stable YouTube channel ID when available. |
channelName | Channel name. |
channelUrl | Public channel URL. |
videoId | Stable YouTube video ID. |
videoUrl | Public video URL. |
title | Video title. |
description | Public video description or snippet text. |
publishedAt | Public publish timestamp when available. |
thumbnailUrl | Public thumbnail URL. |
duration | Duration value when available. |
isShort | Whether the actor identified the item as a YouTube Short. |
viewCount | Public view count when available. |
sourceUrl | Original channel input or source URL. |
scrapedAt | Timestamp when the row was saved. |
retryCount | Number of bounded transient retries used while resolving and reading the channel feed. |
httpStatusCodes | HTTP response status codes observed for that channel. |
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 ApifyClientclient = 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.
Related actors
- YouTube Channel Details Scraper for channel profiles and public channel metrics.
- YouTube Video Details Scraper for video-level metadata.
- YouTube Transcript Scraper for public transcript extraction.
- YouTube Comments Scraper for comment datasets.
- YouTube Playlist Videos Scraper for playlist-based video exports.
- YouTube Shorts Scraper for Shorts-focused workflows.
FAQ
Can I scrape multiple channels in one run? Yes. Add multiple values to channelUrlsOrIds; the actor saves up to maxVideosPerChannel videos for each channel.
Can I use channel IDs instead of URLs? Yes. Channel IDs are supported and are the most stable input format.
Does this actor download videos? No. It extracts public metadata and URLs, not media files.
Does it include Shorts? Yes, by default. Set includeShorts to false to skip Shorts when they appear.
Can I run it from code? Yes. Use the Apify API, SDKs, webhooks, schedules, or MCP-compatible agents.
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.