YouTube Channel Video Scraper
Pricing
from $1.00 / 1,000 videos
YouTube Channel Video Scraper
Scrape videos or Shorts from YouTube channels with full channel info on every row: views, likes, comments, duration, exact publish time, description, links, subscribers, country and more. Sort by latest, popular or oldest. No API key needed.
Pricing
from $1.00 / 1,000 videos
Rating
0.0
(0)
Developer
Mr T
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
an hour ago
Last modified
Categories
Share
YouTube Channel Video Scraper
Get a channel's videos or Shorts, with the full channel profile attached to every row: exact views, likes, comment count, duration, exact publish time, description, links, tags, plus the channel's subscribers, total views, country, join date, About links and verified badge. Sort by latest, popular or oldest, just like the buttons on the channel page. No API key, no quota, no Google account.
You only pay per video returned. Channels that don't exist or have no videos still appear in the results so you know what happened, but they are free.
What you get for each video
- Title, URL, thumbnail, full description, links found in the description, hashtags and tags
- Exact view count, like count and comment count
- Exact publish time (UTC, to the second) and duration (
HH:MM:SSand seconds) - Category and a members-only flag
- Channel: name, ID, handle, URL, full description, subscribers, total views, total videos, country (ISO code), join date, avatar, banner, verified badge and the links from its About panel
How to use it
- Add channels to Channel URLs, handles or IDs. All of these work:
https://www.youtube.com/@MrBeast,@MrBeast,UCX6OQ3DkcsbYNE6H8uQQuVA,/channel/UC…,/c/nameand/user/namelinks. - Set Max videos per channel (up to 1,000).
- Choose Long-form videos or Shorts, and the sort order.
- Click Start, then download the results as JSON, CSV, Excel or HTML.
Example input
{"channelUrls": ["https://www.youtube.com/@MrBeast", "@PewDiePie"],"maxResults": 30,"videoType": "long","sortOrder": "latest"}
channelHandle and channelId are also accepted for a single channel.
Example output
{"title": "Lose 150 Lbs Together, Win $250,000","type": "video","id": "RE3_PGwDwhw","url": "https://www.youtube.com/watch?v=RE3_PGwDwhw","thumbnailUrl": "https://i.ytimg.com/vi/RE3_PGwDwhw/maxresdefault.jpg","viewCount": 142698007,"date": "2026-10-17T16:00:18Z","likes": 1940843,"commentsCount": 68193,"duration": "00:43:16","durationSeconds": 2596,"description": "…","descriptionLinks": [{ "url": "https://fstbls.com/5mj6dv", "text": "https://fstbls.com/5mj6dv", "type": "url" }],"hashtags": [],"tags": [],"category": "Entertainment","defaultAudioLanguage": "en","defaultLanguage": null,"isMembersOnly": false,"channelName": "MrBeast","channelUrl": "https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA","channelId": "UCX6OQ3DkcsbYNE6H8uQQuVA","channelUsername": "@mrbeast","channelDescription": "SUBSCRIBE FOR A COOKIE!…","channelJoinedDate": "2012-02-19T00:00:00Z","channelLocation": "US","channelAvatarUrl": "https://yt3.googleusercontent.com/…","channelBannerUrl": "https://yt3.googleusercontent.com/…","channelTotalVideos": 1009,"channelTotalViews": 144353642443,"numberOfSubscribers": 523000000,"isChannelVerified": true,"channelExternalLinks": [{ "title": "Follow", "url": "https://www.instagram.com/mrbeast/" }],"order": 0,"scrapeVideoType": "long","scrapeSortOrder": "latest"}
When a channel can't be scraped, you get one item like this instead (not charged):
{"url": "https://www.youtube.com/@invalidchannel","input": "@invalidchannel","error": "CHANNEL_DOES_NOT_EXIST","note": "Channel does not exist"}
error | Meaning |
|---|---|
CHANNEL_DOES_NOT_EXIST | No channel at that URL, or the channel was terminated. |
NO_VIDEOS | The channel has no public videos (or no Shorts, when scraping Shorts). |
INVALID_INPUT | The value isn't a YouTube channel URL, handle or ID. |
NO_VALID_START_URLS | None of the inputs could be parsed. |
BLOCKED, RATE_LIMITED, TIMEOUT, NETWORK_ERROR, SERVER_ERROR, HTTP_ERROR, UNEXPECTED_RESPONSE | YouTube refused or failed on every retry. Running again usually works. |
Good to know
- Subscriber counts are rounded by YouTube to 3 significant figures (523M becomes 523000000), the same as in the official API. Hidden counts are
null. - Hidden likes are
null, never 0.commentsCountisnullwhen comments are turned off. - Members-only videos are included and flagged with
isMembersOnly: true. YouTube hides their view and comment counts from non-members, so those arenull. - Join date is the day only (
T00:00:00Z) unless you supply an API key. - Live streams aren't included. They live in a separate tab on YouTube; this actor reads the Videos or Shorts tab.
- Two inputs that point to the same channel are scraped once.
Optional: your own YouTube Data API key
Not needed. Spoken language (defaultAudioLanguage) is the original audio track, not an auto-dub and not the viewer's default captions. A player response that comes back without that track is retried; if it never arrives, defaultAudioLanguageStatus is unreadable instead of a silent blank. If you add a key under Advanced, video and channel details come from the official API, which adds the exact join time and defaultLanguage. The video list is still read from the channel page so all three sort orders work. It uses about 1 quota unit per 50 videos plus 1 per channel, far under the free 10,000 units a day. If the key is invalid or out of quota, the run carries on by scraping.
Proxies
The default Apify datacenter proxy works well for channel pages. If YouTube starts blocking it during a run, the scraper switches to Apify Residential on its own. You can also pick Residential up front.
Using it from code
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('adaptable_wheelhouse/youtube-channel-video-scraper').call({channelUrls: ['https://www.youtube.com/@MrBeast'],maxResults: 30,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Is it legal to scrape YouTube?
This actor reads only public pages that anyone can see on youtube.com without logging in. Channel descriptions can contain personal data such as business email addresses, which is protected by laws such as GDPR. Only collect it if you have a legitimate reason, and check with a lawyer if you are unsure.