YouTube Channel Videos Scraper avatar

YouTube Channel Videos Scraper

Pricing

from $1.00 / 1,000 video listeds

Go to Apify Store
YouTube Channel Videos Scraper

YouTube Channel Videos Scraper

List every video on a YouTube channel with title, duration, approximate upload date, thumbnail, and direct URL.

Pricing

from $1.00 / 1,000 video listeds

Rating

0.0

(0)

Developer

Andrew

Andrew

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Share

List every video on a YouTube channel — title, duration, approximate upload date, thumbnail, and direct video URL — and paginate across runs to fetch the full back catalog.

What you get

For every video on the channel, one dataset row with:

  • videoId, url — canonical YouTube video ID and watch URL
  • title — video title
  • durationSeconds — length in seconds (null for live streams)
  • uploadDate — approximate YYYY-MM-DD upload date (YouTube only exposes relative dates like "3 weeks ago" in channel listings, so this is rounded to the day)
  • thumbnailUrl — highest-resolution thumbnail URL
  • isLive — true if currently live or upcoming, false if recorded, null if unknown
  • isShort — true for Shorts (vertical short videos under 60s or sourced from the Shorts tab)
  • channelId, channelName, channelUrl — canonical channel identity
  • listIndex — 1-based position in the channel's video list (newest = 1)

Use cases

  • Content research — analyze a competitor's full upload history, posting cadence, and view trajectories
  • Influencer vetting — verify channel size, output volume, and content mix before brand deals
  • Trend analysis — pull a channel's catalog into a spreadsheet to spot top-performing topics
  • Backlog mirroring — build an index of every video on a channel for archival or search
  • SEO research — extract titles and view counts to study what topics rank on YouTube

How to use

  1. Paste a channel URL or handle into YouTube Channel URL@mkbhd, https://www.youtube.com/@mkbhd, /c/, /user/, or /channel/UC... formats all work
  2. Pick a Tab — Videos (default), Shorts, or Live streams
  3. Set Max Items (default 500) — how many videos to fetch in this run; set 0 for unlimited (capped at 5000 per run as a safety net)
  4. Leave Page ID blank on the first run
  5. Run the actor — videos appear in the Dataset tab in newest-first order
  6. To fetch the next page, open the Key-value store tab → copy the NEXT_PAGE_ID value → paste it into Page ID on your next run. If NEXT_PAGE_ID is null, you've fetched the entire channel.

Output format

Each dataset record:

{
"videoId": "abc123XYZ",
"url": "https://www.youtube.com/watch?v=abc123XYZ",
"title": "Reviewing the new flagship phone",
"durationSeconds": 743,
"uploadDate": "2025-09-14",
"thumbnailUrl": "https://i.ytimg.com/vi/abc123XYZ/maxresdefault.jpg",
"isLive": false,
"isShort": false,
"channelId": "UCBJycsmduvYEL83R_U4JriQ",
"channelName": "Marques Brownlee",
"channelUrl": "https://www.youtube.com/@mkbhd",
"listIndex": 1
}

Notes & limits

  • One channel per run. For multiple channels, run the actor once per channel (each gets its own dataset and cursor).
  • Newest-first order. Videos are listed in YouTube's default channel order — most recent uploads first.
  • View, like, and comment counts are not included — YouTube does not expose those in channel listings, and fetching them would require one extra request per video (impractically slow at channel scale). For per-video deep metadata, run the YouTube Video Metadata Scraper on the URLs from this dataset.
  • Shorts and Live streams have separate tabs — set the Tab input to fetch them. A channel's Videos tab does not include Shorts or past live streams.
  • Pagination is index-based. NEXT_PAGE_ID is the position in the channel's listing (e.g. 501 after fetching the first 500). YouTube channels can have thousands of videos — chain runs to fetch them all.
  • Wall-clock safety: the actor stops ~60s before the platform timeout and writes NEXT_PAGE_ID so progress is never lost on long runs.