Youtube Channel Scraper Pro avatar

Youtube Channel Scraper Pro

Pricing

Pay per usage

Go to Apify Store
Youtube Channel Scraper Pro

Youtube Channel Scraper Pro

Youtube Channel Scraper Pro

Pricing

Pay per usage

Rating

0.0

(0)

Developer

seungkyu cho

seungkyu cho

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 minutes 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: PlaywrightCrawler handles real-browser scrolling; HttpCrawler handles likes โ€” minimizing memory usage and maximizing speed.

โšก Performance

ScenarioSpeed
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

ParameterTypeDefaultDescription
channelUrlsArray<String>(Required)YouTube channel URLs to scrape (e.g., https://www.youtube.com/@mkbhd). Multiple channels supported.
videoTypeEnum"ALL"Which video type to scrape: "ALL", "LONG_FORM", or "SHORTS".
minUploadDateString""Only include videos uploaded on or after this date. Format: YYYY-MM-DD.
maxUploadDateString""Only include videos uploaded on or before this date. Format: YYYY-MM-DD.
minViewsInteger0Only include videos with at least this many views. (e.g., 1000000 for 1M+).
maxItemsPerChannelInteger100Maximum videos to scrape per channel. HTTP extraction is used first for speed and low cost.
enableDeepScrollBooleanfalseEnable browser scrolling when HTTP extraction returns fewer videos than requested. Keep disabled for faster, lower-cost runs.
autoResolveChannelUrlsBooleantrueResolve display-name style or outdated channel URLs with YouTube channel search before scraping.
fetchLikesBooleanfalseIf enabled, fetches exact Like counts for every video via fast parallel HTTP requests. Adds ~15s per 100 videos.
minLikesInteger0(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

FieldTypeDescription
channelNameStringOfficial channel display name
channelUrlStringInput channel URL
videoIdStringYouTube video ID
videoUrlStringFull youtube.com/watch?v=... URL
titleStringVideo title
typeString"LONG_FORM" or "SHORTS"
uploadDateTextStringRelative upload date (e.g., "8 days ago")
viewCountIntegerParsed integer view count
durationTextStringVideo duration string (e.g., "12:59")
thumbnailUrlStringHighest-quality static thumbnail URL
animatedThumbnailUrlString3-second animated WebP preview URL
likeCountIntegerLike 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.webdriver suppressed)

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!