YouTube Channel Videos Scraper
Pricing
from $1.00 / 1,000 video listeds
Go to Apify Store
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
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
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-DDupload 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
- Paste a channel URL or handle into YouTube Channel URL —
@mkbhd,https://www.youtube.com/@mkbhd,/c/,/user/, or/channel/UC...formats all work - Pick a Tab — Videos (default), Shorts, or Live streams
- 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)
- Leave Page ID blank on the first run
- Run the actor — videos appear in the Dataset tab in newest-first order
- To fetch the next page, open the Key-value store tab → copy the
NEXT_PAGE_IDvalue → paste it into Page ID on your next run. IfNEXT_PAGE_IDisnull, 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_IDis the position in the channel's listing (e.g.501after 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_IDso progress is never lost on long runs.