Home › Guides › YouTube Channel Videos Scraper
YouTube channel videos: every upload with exact figures and an outlier score
The channel page rounds everything — "5.5M views · 7 days ago". The YouTube Channel Videos Scraper returns one row per video from a channel's own Videos, Shorts and Live tabs, followed to their end, with the figures YouTube rounds: the unrounded view and like count, the publish date to the second, and an outlier score — each video's views against the channel's own median, so 1 is the usual and 5 is a hit. The longest list we followed had 4,641 videos. No YouTube API key, no login, no cookies.
Who it's for
- Content strategists finding what works on a channel — the videos that beat its usual, with the titles, lengths and chapters behind them.
- Competitive researchers tracking a set of rival channels on a schedule: who published what, and how it did.
- Influencer and sponsorship teams pricing a deal on the median views of recent videos, not on a subscriber count.
- Analysts and AI builders who need a channel's whole archive with exact figures and descriptions with every link restored.
What you get
| Group | Fields |
|---|---|
| Video | Video ID (stable key), URL, title, kind (video, short or live), position in the list, thumbnail |
| Figures | Unrounded views (with an exact flag), likes, publish date and time to the second, "days since", duration |
| Outlier | channelMedianViews (the channel's usual for that kind) and outlierScore = views ÷ median; plus likeRate, viewsPerDay, viewsPerSubscriber |
| Channel | Channel ID, URL, handle, title, subscribers, country |
Full page (details: full) | Comment count, full description with links restored, hashtags, chapters (creator's or YouTube's) |
| State | Live / was-live / upcoming / members-only flags, live viewers, scheduled start, detail level, scrape time |
A real row from a run on 2026-10-07 with details: "full" (trimmed — description and chapters shortened):
{
"type": "video",
"videoId": "e1q-TuHdc4Y",
"title": "Dear YouTube!",
"videoType": "video",
"channelHandle": "@mkbhd",
"channelTitle": "Marques Brownlee",
"channelSubscribers": 21400000,
"publishedAt": "2026-09-30T14:42:19.000Z",
"publishedDate": "2026-09-30",
"daysSincePublished": 7,
"durationSeconds": 743,
"views": 5557856,
"viewsAreExact": true,
"likes": 124581,
"commentsCount": 9500,
"likeRate": 0.0224,
"viewsPerDay": 793979,
"viewsPerSubscriber": 0.26,
"channelMedianViews": 5104379,
"outlierScore": 1.09,
"position": 2,
"sort": "latest",
"detailLevel": "full"
}
How the outlier score works
The score compares a video with what is usual for its channel: channelMedianViews is the median view count of the first page of the same list in newest-first order (about 30 videos; 48 for Shorts), and outlierScore is the video's views divided by it. 1 is the channel's usual, 3 is three times that. Long videos are compared with long videos and Shorts with Shorts, and recent uploads — still collecting views — score lower than they eventually will. Filter with minOutlierScore to keep only the videos that broke out.
Three depths, one per row, priced apart. list reads only the channel's lists and public feed (about four requests a channel, however many videos you take). figures (the default) adds one small request per video for unrounded views, likes and date. full reads each video's page for the comment count, description, hashtags and chapters. The About panel is read once per channel for subscribers and country.
Lists are followed until they end — until YouTube offers no further page. A list that stops answering part-way is not passed off as complete; what it brought is delivered and the status message says the list was cut.
Input
| Input | What it does |
|---|---|
channels | Channel URLs, @handles or channel IDs, one per line (up to 10,000) |
videoTypes | Which lists to read: videos, shorts, live (default videos) |
maxVideosPerChannel · maxVideos | Videos per channel and kind (default 30) · total rows (default 1,000) |
sort | latest (default), popular or oldest — the channel page's own orders |
details | list, figures (default) or full — how much is read per video |
publishedWithinDays · minViews · minOutlierScore | Keep only videos newer than N days · above a view count · above an outlier score (decimals allowed) |
onlyNewVideos · listName | Remember delivered videos and skip them next run — upload monitoring on a schedule |
The videos that broke out across two channels — most popular first, at least three times the usual:
{ "channels": ["@51Drones", "@LabMuffinBeautyScience"], "sort": "popular", "maxVideosPerChannel": 200, "minOutlierScore": "3" }
New uploads of many channels every day — lists and feeds only, nothing delivered twice:
{ "channels": ["@mkbhd", "@jameshoffmann", "@51Drones"], "videoTypes": ["videos", "shorts"], "maxVideosPerChannel": 15, "details": "list", "onlyNewVideos": true, "listName": "watchlist" }
Measured data quality
Share of rows with a value, measured on 2026-10-07 (each column is a separate run):
| Field | figures: whole archive, 1,852 | full: latest 300 | list: 15+15 of 50 channels, 1,414 |
|---|---|---|---|
| Unrounded view count | 1,845/1,852 | 300/300 | 797/1,414 (rest carry the list's rounded figure) |
| Like count | 1,838/1,852 | 300/300 | 741/1,414 |
| Publish date | 1,852/1,852 | 300/300 | 741/1,414 |
| Outlier score | 1,845/1,852 | 300/300 | 1,412/1,414 |
| Comment count (full) | — | 300/300 | — |
| Unique videos | 1,852/1,852 | 300/300 | 1,414/1,414 |
Where a count is missing, YouTube shows none: the seven archive rows without a view count are six YouTube Originals episodes and a 2013 live stream whose pages carry a date and no count. Read at the same moment, the figures and full levels gave the same views, likes and date for five videos of five kinds; a larger archive of 6,104 videos came back with no request refused.
Honest limits
- YouTube limits video pages, not figures. One address reads roughly a thousand
fullpages before YouTube refuses it; the Actor then routes pages through Apify Proxy (slower) and, if none are accepted, delivers the rest with exact figures. Figures showed no such limit — 6,104 in a row, none refused. For big archives usefigures. - YouTube's feed service can be down for hours. On 2026-10-08 it answered "not found" for channels that have a feed (others report this fault recurring since December 2025). The Actor retries up to five times; when it still fails, videos are delivered anyway and the status message says what the latest uploads lack (the time of day, and at
listlevel older videos' likes and date). - Shorts carry no duration and no date in the list —
figuresorfulldates them. Subscriber and large comment counts are YouTube's rounded figures. - No transcripts, tags, categories or comment texts, and no video or audio files.
- YouTube can change its pages at any time; a number or date that cannot be read is
null, never a guess.
Speed
On the platform with the default 1 GB (2026-10-07): the prefilled 30-video input took 4 to 6 seconds; 300 videos with exact figures 6 to 8 seconds; a whole 1,852-video archive 35 to 44 seconds (1,919 requests, none refused), and 6,104 videos in one run 110 seconds. A full run of 300 took 32 to 50 seconds from an accepted address, slower through the proxy. The latest 15 videos and 15 Shorts of 50 channels — 1,414 rows at list level — took 10 seconds. A run the platform restarts continues from the rows it already delivered.
Pricing
Pay per result, by depth: one event per delivered row named by its detailLevel — video (lists and feed only), video-exact (exact figures, the default) and video-detailed (whole page). Status rows, filtered-out videos and videos that could not be read are free; a full row whose page YouTube refused is delivered with exact figures and charged as the figures event. Each run also has Apify's run-start event. Current prices are on the actor's Pricing tab on Apify.
Turn a channel into a table: every upload with unrounded views, likes, dates and an outlier score — exportable to JSON, CSV or Excel.
Open the YouTube Channel Videos Scraper →Related
This Actor reads one channel's own videos; to find videos by keyword across all channels use the YouTube Search Scraper, to discover the channels themselves use the YouTube Channel Finder, and for the discussion under each video use the YouTube Comments Scraper. For creator outreach, the YouTube Channel Email Scraper pulls public business emails.
Frequently asked questions
How far back does it go?
As far as the channel's own lists go: each list is followed until YouTube offers no further page. The longest list we followed had 4,641 videos. The lists can hold a few videos fewer than the count on the channel's About panel (1,852 against 1,856 for one channel we compared).
Are the view counts exact?
With details set to figures or full, yes: the unrounded counts from each video's page. With list, the channel's latest 15 uploads have unrounded counts from the feed and older videos have the list's rounded ones; viewsAreExact tells you which.
What is a good minOutlierScore?
2 keeps the videos that did clearly better than usual, 5 the rare hits. The score is views against the median of the channel's latest videos of the same kind, so an old hit on a channel that has shrunk since scores very high.
When do I need details: "full"?
For the number of comments, the description, hashtags and chapters. Views, likes and dates are the same in figures, which is several times faster and, in our measurements, not limited by YouTube.
Can I monitor channels without getting the same videos again?
Yes. Turn on onlyNewVideos and give the list a listName. Each run looks at the first maxVideosPerChannel videos of each list and delivers only the ones it has not delivered before. A killed run is made up for by the list's next run.
YouTube Channel Videos Scraper — the whole archive, exact figures, outlier score. Pay per row, no API key.
Get channel videos on Apify →