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
2 minutes ago
Last modified
Categories
Security
Limited permissionsShare
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. - Without
monitorStoreNamethe store is named after a hash of the run's channels and tabs (youtube-monitor-…), so each different input keeps its own history. The run log and status message name the store. Set your own name to share one history between inputs, or pick a new name to start over. - A video not delivered because of the limit, the run's maximum cost or its timeout is not remembered. Since a later run stops at the newest known video, older videos the first run did not reach are not picked up later, so run the first time with
maxVideosPerChannelat 0. - Two runs on the same store at the same time can both deliver the same new video. 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.
Can I get only the videos that are new since the last run?
Yes. Set onlyNewVideos to true and schedule the run; see "Get new uploads of a YouTube channel" above.
Why is the publish date approximate? Channel pages only show relative times such as "3 weeks ago". Turn on details for the exact date.
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. It can also be used as an MCP tool by AI agents.
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
On first connection the client opens a browser window to sign in to Apify, or you pass your Apify API token instead. After that you can ask in plain language, for example "list the last 30 uploads of @mkbhd with their view counts", and the assistant fills channelUrls, maxVideosPerChannel and fetchDetailsForListedVideos itself, runs the actor and reads the videos back as JSON. Billing is the same as a normal run, at the prices listed above. Mention a limit in your prompt, which the assistant passes as maxVideosPerChannel, if you want to cap the cost of a single question.
Paying from an AI agent without an Apify account (x402 and Skyfire)
Apify lets autonomous agents buy a prepaid, spend-capped API token from Apify AGI and use it like a normal Apify token, both for the API and for the MCP server. The token can be paid with USDC on Base or Solana through the x402 protocol or from a Skyfire wallet. Prepaid tokens only run actors with limited permissions. This actor uses limited permissions, so it works with them. The smallest token is $1, tokens expire 14 days after purchase, and unused balance is not refunded. Apify marks agentic payments as experimental, and the details may change.
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.