YouTube Channel Videos Scraper: All Videos, Shorts & Streams
Pricing
from $1.00 / 1,000 video listeds
YouTube Channel Videos Scraper: All Videos, Shorts & Streams
List every video, Short and live stream of any YouTube channel with title, views, duration, publish date and thumbnail, optionally with full details (likes, description, tags). No API key, no quotas. $1 per 1,000 videos.
Pricing
from $1.00 / 1,000 video listeds
Rating
0.0
(0)
Developer
PulseData
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
1
Monthly active users
a day ago
Last modified
Categories
Features
Share
YouTube Channel Videos Scraper
YouTube Channel Videos Scraper lists every video of one or more YouTube channels: regular videos, Shorts and past live streams. Each video comes back as a JSON item with title, view count, duration, publish date, thumbnail and URL, and with details turned on also likes, full description, tags, category and the channel's subscriber count. It costs $1 per 1,000 listed videos, or $2 per 1,000 videos with full details.
No YouTube Data API key is needed and there is no daily quota: the actor reads YouTube's public channel pages. It is the channel part of the YouTube Scraper with a shorter input form; search, playlists and single video lookups are left out.
Features
- Export all videos of a YouTube channel to JSON, CSV or Excel, with no cap by default (
maxVideosPerChannelis 0). - List all Shorts of a YouTube channel by picking the
shortstab. - List past live streams of a YouTube channel with the
streamstab. - Get likes, description and tags for every channel video with
fetchDetailsForListedVideos. - Scrape several channels in one run: channel URLs (
/@handle,/channel/UC…,/c/name,/user/name) or bare@handles, one per line. - Get new uploads of a YouTube channel: with
onlyNewVideosa scheduled run returns and charges only videos it has not delivered before. - A channel profile item per channel with subscriber count, video count, description, handle, avatar and RSS URL.
Use cases
- Content audits: pull a channel's full catalogue and see which topics and formats get views, and how Shorts compare with long-form videos.
- Competitor and creator research: upload cadence, best performing videos and view counts across a set of channels.
- Upload monitoring: schedule a daily run with
maxVideosPerChannel: 20to catch a channel's new uploads. - Archives and catalogues: a complete list of a channel's video IDs and URLs for further processing.
- Datasets for AI: pass the video URLs to the YouTube Transcript Scraper and YouTube Comments Scraper.
Input
{"channelUrls": ["https://www.youtube.com/@veritasium","@3blue1brown"],"channelTabs": ["videos", "shorts"],"maxVideosPerChannel": 0,"fetchDetailsForListedVideos": false}
| Field | Type | Default | What it does |
|---|---|---|---|
channelUrls | array | required | Channel URLs or @handles, one per line. |
channelTabs | array | ["videos"] | Any combination of videos, shorts, streams. |
maxVideosPerChannel | integer | 0 | Maximum videos per channel and per tab; 0 means all. |
fetchDetailsForListedVideos | boolean | false | Fetch full details for every video (one extra request per video, detailed price). |
concurrency | integer | 5 | Parallel detail requests, 1 to 20. |
proxyConfiguration | object | no proxy | Optional Apify Proxy settings. |
onlyNewVideos | boolean | false | Monitor mode: output and charge only videos not delivered on an earlier run. |
monitorStoreName | string | empty | Key-value store that remembers delivered videos. Empty means a name derived from the channels and tabs. |
Get new uploads of a YouTube channel
Turn on onlyNewVideos to get only the videos a channel uploaded since your last run:
{ "channelUrls": ["https://www.youtube.com/@veritasium"], "channelTabs": ["videos", "shorts"], "maxVideosPerChannel": 0, "onlyNewVideos": true }
The actor remembers the ID of every video it delivers in a named key-value store in your Apify account. On the next run it skips those videos before fetching any details, so they are neither output nor charged. The first run has no history yet: it returns every video up to maxVideosPerChannel and fills the store.
How to set up new-upload alerts:
- Save the input above as an Apify task.
- Add an Apify schedule for the task, daily or weekly.
- Add an integration on the task (email, Slack, Google Sheets, Make, Zapier or a webhook) that fires when a run succeeds. Each run's dataset then holds only the new videos.
Details:
- A channel tab lists newest first, so a run stops reading it at the first video it already knows. The channel profile item is returned once, on the first run.
- Known videos still count towards
maxVideosPerChannel, which sets how far down each tab a run looks. Keep it at 0 to watch everything. - Older videos the first run did not reach are not picked up later, so run the first time with
maxVideosPerChannelat 0. - Without
monitorStoreNameeach different input keeps its own history; the run log names the store. Schedule one run per store.
Output
A video from the Videos tab:
{"type": "video","videoId": "lIId8IDP6TU","url": "https://www.youtube.com/watch?v=lIId8IDP6TU","title": "Why the Sky Is Blue (and Sunsets Red)","publishedTimeText": "3 weeks ago","publishedAt": "2026-08-08T14:10:45.184Z","durationText": "18:21","durationSeconds": 1101,"viewCountText": "2,655,142 views","viewCount": 2655142,"thumbnailUrl": "https://i.ytimg.com/vi/lIId8IDP6TU/hq720.jpg","isShort": false,"isLive": false,"source": "channel:@veritasium:videos","position": 1}
The first item for each channel is the channel profile:
{"type": "channel","channelId": "UCHnyfMqiRRG1u-2MsSQLbXA","url": "https://www.youtube.com/channel/UCHnyfMqiRRG1u-2MsSQLbXA","handle": "@veritasium","title": "Veritasium","subscriberCount": 18900000,"videoCount": 420,"description": "…","avatarUrl": "…","rssUrl": "…","source": "https://www.youtube.com/@veritasium"}
With fetchDetailsForListedVideos each video item also has likeCount, the full description, keywords, category, uploadDate, channelName, channelId, channelSubscriberCount and detailed: true, and publishedAt becomes the exact publish date.
Notes on the data:
- Without details,
publishedAtis computed from YouTube's relative text ("3 weeks ago") and is approximate. - Items from the Shorts tab contain the title, view count, thumbnail and URL only; turn on details for more.
- Channel name and ID fields on listed video items can be empty because the channel tab does not repeat them per video. The channel profile item has them.
- If a channel cannot be resolved or fails, the dataset gets an item with
type: "error"and the reason.
Pricing
Pay per event:
| Event | Price | Per 1,000 |
|---|---|---|
video-listed (a video from a channel tab) | $0.001 | $1 |
video-detail (a video with full details) | $0.002 | $2 |
With details on, each video is charged only at the detailed price. The channel profile item has no event in this actor's pricing.
Worked example: a channel with 500 videos in the Videos tab and 300 Shorts, listed without details, is 800 listed videos: 800 x $0.001 = $0.80. The same run with details on costs 800 x $0.002 = $1.60. A daily monitoring run with maxVideosPerChannel: 20 on the Videos tab of 10 channels is at most 200 videos, or $0.20.
In monitor mode only new videos are charged. A daily run on 10 channels that finds 4 new videos costs 4 x $0.001 = $0.004. This actor has no per-run event, so a run with nothing new costs nothing.
FAQ
Do I need a YouTube API key? No, and there is no quota. The actor reads YouTube's public pages.
Can I get all videos of a large channel?
Yes. Keep maxVideosPerChannel at 0. Channels with thousands of videos take longer, since the list is paged the same way YouTube pages it in the browser.
Does the limit apply per channel or per run?
Per channel and per tab. With channelTabs: ["videos", "shorts"] and maxVideosPerChannel: 50 you get up to 100 videos per channel.
Do I need proxies? Usually not. If YouTube starts returning errors and you have not set a proxy, the actor retries through Apify residential proxy.
What can it not do? It does not search YouTube, read playlists, download video files, or return transcripts and comments. For search and playlists use the YouTube Scraper; for transcripts and comments see the related actors below.
How do I export or automate it? Download the dataset as JSON, CSV or Excel, call it through the Apify API or SDKs, schedule it, or connect it to Google Sheets, Make, Zapier or n8n.
Use it from Claude, ChatGPT or Cursor (Apify MCP server)
The actor can be called as a tool by any AI assistant that speaks the Model Context Protocol. Add the Apify MCP server to your client with this URL, which loads only this actor as a tool:
https://mcp.apify.com?tools=pulsedata/youtube-channel-videos-scraper
You sign in to Apify on first connection, then ask in plain language, for example "list the last 30 uploads of @mkbhd with their view counts". Billing is the same as a normal run.
Paying from an AI agent without an Apify account (x402 and Skyfire)
An agent can buy a prepaid, spend-capped Apify token at Apify AGI, paid in USDC through x402 or from a Skyfire wallet, and use it for both the API and the MCP server. This actor runs with limited permissions, so it works with these tokens. The smallest token is $1, tokens expire 14 days after purchase, and Apify marks agentic payments as experimental.
Related actors
- YouTube Scraper: adds YouTube search, playlists and single video lookups to the channel features.
- YouTube Transcript Scraper: transcripts and subtitles for the videos this actor lists.
- YouTube Comments Scraper: comments and replies for the same videos.
- Google Ads Transparency Center Scraper: the YouTube video ads a brand runs next to its channel uploads.