YouTube Channel Videos Scraper: All Videos, Shorts & Streams avatar

YouTube Channel Videos Scraper: All Videos, Shorts & Streams

Pricing

from $1.00 / 1,000 video listeds

Go to Apify Store
YouTube Channel Videos Scraper: All Videos, Shorts & Streams

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

PulseData

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

1

Monthly active users

2 minutes ago

Last modified

Security

Limited permissions

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 (maxVideosPerChannel is 0).
  • List all Shorts of a YouTube channel by picking the shorts tab.
  • List past live streams of a YouTube channel with the streams tab.
  • 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 onlyNewVideos a 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: 20 to 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
}
FieldTypeDefaultWhat it does
channelUrlsarrayrequiredChannel URLs or @handles, one per line.
channelTabsarray["videos"]Any combination of videos, shorts, streams.
maxVideosPerChannelinteger0Maximum videos per channel and per tab; 0 means all.
fetchDetailsForListedVideosbooleanfalseFetch full details for every video (one extra request per video, detailed price).
concurrencyinteger5Parallel detail requests, 1 to 20.
proxyConfigurationobjectno proxyOptional Apify Proxy settings.
onlyNewVideosbooleanfalseMonitor mode: output and charge only videos not delivered on an earlier run.
monitorStoreNamestringemptyKey-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:

  1. Save the input above as an Apify task.
  2. Add an Apify schedule for the task, daily or weekly.
  3. 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 monitorStoreName the 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 maxVideosPerChannel at 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, publishedAt is 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:

EventPricePer 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.