Youtube Channel Scraper Pro
Pricing
Pay per usage
Pricing
Pay per usage
Rating
0.0
(0)
Developer
seungkyu cho
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Share
YouTube Channel Scraper Pro ๐
A high-performance, reliable Apify Actor for scraping YouTube channel videos โ including Long-Form and Shorts โ with advanced filtering and infinite scroll support.
๐ Apify Actor URL: https://apify.com/skcho/youtube-channel-scraper-pro
โจ Key Features
- ๐ Infinite Scroll (Pagination): Automatically scrolls through the entire channel page using a real browser โ no 30-video limit.
- ๐๏ธ Long-Form & Shorts Separation: Precisely scrape and categorize videos by type.
- ๐ฆ Rich Data Extraction: Titles, View Counts, Upload Dates, Durations, HQ Thumbnails, and Animated WebP Previews โ all extracted out of the box.
- ๐ Optional Like Count Extraction: A lightweight, high-concurrency HTTP-based fetcher grabs like counts at ~430 videos/min without launching extra browsers.
- ๐ฏ Precision Filtering: Filter by minimum views, likes, upload date range, and more.
- ๐ง Hybrid Architecture:
PlaywrightCrawlerhandles real-browser scrolling;HttpCrawlerhandles likes โ minimizing memory usage and maximizing speed.
โก Performance
| Scenario | Speed |
|---|---|
| Channel scroll + data extract (100 videos) | ~15 seconds |
Like count fetch (per 100 videos, fetchLikes: true) | ~15 seconds |
| Total for 100 videos with likes | ~30 seconds |
Likes are fetched at ~430 requests/min in parallel via lightweight HTTP requests โ no extra browser needed.
๐ ๏ธ Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
channelUrls | Array<String> | (Required) | YouTube channel URLs to scrape (e.g., https://www.youtube.com/@mkbhd). Multiple channels supported. |
videoType | Enum | "ALL" | Which video type to scrape: "ALL", "LONG_FORM", or "SHORTS". |
minUploadDate | String | "" | Only include videos uploaded on or after this date. Format: YYYY-MM-DD. |
maxUploadDate | String | "" | Only include videos uploaded on or before this date. Format: YYYY-MM-DD. |
minViews | Integer | 0 | Only include videos with at least this many views. (e.g., 1000000 for 1M+). |
maxItemsPerChannel | Integer | 100 | Maximum videos to scrape per channel. HTTP extraction is used first for speed and low cost. |
enableDeepScroll | Boolean | false | Enable browser scrolling when HTTP extraction returns fewer videos than requested. Keep disabled for faster, lower-cost runs. |
autoResolveChannelUrls | Boolean | true | Resolve display-name style or outdated channel URLs with YouTube channel search before scraping. |
fetchLikes | Boolean | false | If enabled, fetches exact Like counts for every video via fast parallel HTTP requests. Adds ~15s per 100 videos. |
minLikes | Integer | 0 | (Requires fetchLikes: true) Only include videos with at least this many likes. |
๐ Output Data Structure
Each video is pushed as a JSON object to the Apify Dataset:
{"channelName": "Marques Brownlee","channelUrl": "https://www.youtube.com/@mkbhd","videoId": "eFeDpUVEy48","videoUrl": "https://www.youtube.com/watch?v=eFeDpUVEy48","title": "The Biggest Android Update Ever","type": "LONG_FORM","uploadDateText": "8 days ago","viewCount": 4099999,"durationText": "12:59","thumbnailUrl": "https://i.ytimg.com/vi/eFeDpUVEy48/hqdefault.jpg","animatedThumbnailUrl": "https://i.ytimg.com/an_webp/eFeDpUVEy48/mqdefault_6s.webp","likeCount": 125000}
Field Reference
| Field | Type | Description |
|---|---|---|
channelName | String | Official channel display name |
channelUrl | String | Input channel URL |
videoId | String | YouTube video ID |
videoUrl | String | Full youtube.com/watch?v=... URL |
title | String | Video title |
type | String | "LONG_FORM" or "SHORTS" |
uploadDateText | String | Relative upload date (e.g., "8 days ago") |
viewCount | Integer | Parsed integer view count |
durationText | String | Video duration string (e.g., "12:59") |
thumbnailUrl | String | Highest-quality static thumbnail URL |
animatedThumbnailUrl | String | 3-second animated WebP preview URL |
likeCount | Integer | Like count โ present only when fetchLikes: true |
โ๏ธ How It Works (Architecture)
This actor uses a two-phase hybrid architecture to maximize both stability and speed:
Phase 1 โ HTTP Extract (Default)
The actor first fetches YouTube channel /videos and /shorts tabs with lightweight HTTP requests and parses embedded ytInitialData. This is the default path because it is fast, low-cost, and avoids browser timeouts.
If autoResolveChannelUrls is enabled, display-name style or outdated channel URLs are resolved through YouTube channel search before scraping.
Optional โ Deep Scroll (PlaywrightCrawler)
When enableDeepScroll is enabled, a real Chromium browser can navigate to channel tabs and scroll for more loaded items. Keep this disabled unless you specifically need more than the HTTP-loaded batch.
Browser optimizations:
- Blocks unnecessary resources (images, fonts, media) to reduce memory usage
- Disables GPU, extensions, and background services
- Anti-bot fingerprint masking (
navigator.webdriversuppressed)
Phase 2 โ Like Count Fetch (HttpCrawler, Optional)
If fetchLikes is enabled, up to 20 concurrent lightweight HTTP requests are made to individual youtube.com/watch?v=... pages. Like counts are extracted by parsing the embedded ytInitialData JSON object โ no browser required. This runs at ~430 requests/min.
๐ค Support & Issues
Found a bug or have a feature request? Please reach out via the Apify Issues tab!