YouTube Channel Videos Scraper avatar

YouTube Channel Videos Scraper

Pricing

$0.20 / 1,000 videos

Go to Apify Store
YouTube Channel Videos Scraper

YouTube Channel Videos Scraper

Extract all videos from any YouTube channel: titles, views, duration, publish time, thumbnails. Supports @handles, channel URLs and IDs.

Pricing

$0.20 / 1,000 videos

Rating

0.0

(0)

Developer

Z Michael

Z Michael

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

List a YouTube channel's recent uploads — title, views, duration, publish time and URL — without an API key.

Use it to monitor a competitor's upload cadence, build outreach lists, or keep a lightweight content audit of channels you track.

What you get

  • ~50-60 most recent videos per channel — YouTube caps anonymous channel listings at this depth
  • Accepts @handles, channel URLs, or UC… IDs
  • Views and durations included, not just titles
  • Fast — about 6 seconds per channel
  • No API key, no proxy setup

A note on depth

YouTube only serves roughly the first 50-60 entries of a channel's video list to sessions that are not logged in. That is a platform limit, not a setting in this Actor.

  • Good fit: monitoring new uploads, tracking a competitor's recent output, auditing the visible front page of a channel
  • Not a fit: archiving a channel's complete history from 10 years back

If you need complete historical archives, use a channel's uploads playlist with an authenticated session, or pull older videos by ID through the YouTube Search Scraper.

Example output

{
"channelId": "UCAiLfjNXkNv24uhpzUgPa6A",
"channelName": "MrBeast",
"videoId": "rsOiZE19RVo",
"title": "I Built 100 Houses And Gave Them Away",
"channel": "MrBeast",
"views": "42M views",
"publishedTime": "3 days ago",
"duration": "18:24",
"thumbnail": "https://i.ytimg.com/vi/rsOiZE19RVo/hqdefault.jpg",
"url": "https://www.youtube.com/watch?v=rsOiZE19RVo"
}

Use cases

  • Competitor tracking — see what rivals publish and how it performs
  • Creator research — build shortlists for outreach or sponsorship
  • Upload cadence monitoring — run on a schedule and diff against the previous run
  • Content audits — review the visible recent catalog before a campaign

Input

FieldTypeDescription
Channel handles, URLs or IDsarraye.g. @GoogleDevelopers, https://youtube.com/@mkbhd, UC_x5XG1OV2P6uZZ5FSM9Ttw
Max videos per channelintegerRequested ceiling. Actual count is capped by what YouTube serves (~50-60).
Content languagestringInterface language. Default en.

Output fields

FieldExample
channelIdUCAiLfjNXkNv24uhpzUgPa6A
channelNameMrBeast
videoIdrsOiZE19RVo
titleI Built 100 Houses And Gave Them Away
views42M views
publishedTime3 days ago
duration18:24
urlhttps://www.youtube.com/watch?v=...

Pricing

Pay per video: $0.0002 per video.

  • 54 videos from one channel = $0.0108
  • 500 videos across 10 channels = $0.10

You are only charged for videos actually delivered.

FAQ

Why did I get 54 videos when I asked for 500? YouTube stops serving the list after roughly 50-60 entries for non-logged-in sessions. The Actor returns everything YouTube gives it and stops. You are only charged for what is delivered.

Why is publishedTime sometimes empty in the output? Channel listings usually include it. When a channel's layout omits the date, the field is null rather than guessed.

Can I scrape Shorts separately? Shorts appear in the channel listing when YouTube includes them. There is no separate Shorts mode in this Actor.

Does it work with @handles? Yes. @mkbhd, a full channel URL, or a raw UC… channel ID all resolve correctly.

How do I get older videos? Use the video IDs with the Search Scraper, or pair this Actor with a scheduled run that stores each batch — over weeks you accumulate history beyond YouTube's window.

Monitor Mode (daily incremental runs)

Set Only new items = true to turn this scraper into a monitor. It remembers what was already delivered for each query/video/channel and returns only new items since the last run.

How it works:

  1. First run = baseline, returns everything
  2. Every run after = returns only the delta (new comments / newly listed videos)
  3. No new data = empty dataset, you are not charged (pay-per-result billing only fires on delivered items)
  4. Combine with Apify Schedules to run it daily or hourly

Optional Webhook URL: whenever new items are found, the actor POSTs a JSON payload — {event, source, newCount, scannedCount, sample, at} — to your endpoint (Slack webhook, n8n, Make, your own API). Nothing is sent when there is no new data; failed deliveries never fail the run.

Typical use cases: track brand mentions in new YouTube comments, alert on newly published videos matching a keyword, watch a competitor channel for fresh uploads — without re-paying for data you already have.