YouTube Channel & Video Scraper avatar

YouTube Channel & Video Scraper

Pricing

from $1.50 / 1,000 videos

Go to Apify Store
YouTube Channel & Video Scraper

YouTube Channel & Video Scraper

Scrape the latest videos from any YouTube channel with exact views, likes, comments, description and upload date, plus channel ID, description and subscriber count. No YouTube API key, quota or login. Export to JSON, CSV or Excel. Failed channels are free.

Pricing

from $1.50 / 1,000 videos

Rating

0.0

(0)

Developer

Arishma

Arishma

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

YouTube Channel Scraper

Extract the latest videos from any number of public YouTube channels with exact views, likes, comments, description and upload date, plus optional channel information (ID, description, subscribers).

No YouTube API key, quota or login required.

Pricing

This Actor uses Pay Per Event (PPE) monetization.

EventPrice
video-scraped: one video saved to the dataset$0.0015 ($1.50 per 1,000 videos)
channel-scraped: one successfully scraped channel$0.002
  • Example: 50 videos from each of 20 channels = 1,000 × $0.0015 + 20 × $0.002 = $1.54.
  • In channel-information-only mode you pay only the channel event.
  • Platform usage and proxies are included.
  • You are charged only after the channel's results are saved to the dataset.
  • Failed channels (not found, terminated, unavailable, invalid URL) are not charged.
  • Duplicate URLs in the same run are scraped and charged once.
  • Set a maximum cost per run in the Apify Console to cap your spend. The Actor stops when the limit is reached.

What it extracts

Videos

  • Video ID and URL
  • Title and full description
  • Upload date (ISO 8601)
  • Exact view count
  • Like count
  • Comment count
  • Highest resolution thumbnail URL

Channel (optional)

  • Channel ID
  • Channel description
  • Subscriber count

Input

FieldDefaultDescription
startUrlsChannel URLs, @handles or channel IDs.
maxItems10Latest videos per channel (0 to 200). 0 returns channel information only.
onlyVideosNewerThanOnly videos published after this date. Absolute (2026-01-31) or relative (7 days, 2 weeks, 3 months).
includeProfileInfofalseAdd a channel object (id, description, subscribersCount) to every video record.
onlyProfileInfofalseReturn one { "channel": {...} } record per URL and skip videos.
proxyApify ProxyProxy configuration. Recommended, as YouTube rate-limits repeated requests.
maxConcurrency3Channels processed in parallel.
maxRequestRetries4Retries for failed or blocked requests, each with a new proxy session.

Supported channel formats:

  • https://www.youtube.com/@coursera
  • https://www.youtube.com/@coursera/videos (any tab)
  • https://www.youtube.com/channel/UCZ50rYSkYQG31YDEJm9Di_g
  • https://www.youtube.com/user/DisneyParks
  • https://www.youtube.com/c/Name
  • @coursera
  • UCZ50rYSkYQG31YDEJm9Di_g

Latest videos

{
"startUrls": [
"https://www.youtube.com/@coursera",
"@netflix"
],
"maxItems": 20,
"includeProfileInfo": true
}

Videos from the last 7 days

{
"startUrls": ["https://www.youtube.com/@coursera"],
"maxItems": 50,
"onlyVideosNewerThan": "7 days"
}

Channel information only

{
"startUrls": ["https://www.youtube.com/@coursera"],
"onlyProfileInfo": true
}

Output

Results are written to the default Apify Dataset and can be exported as JSON, CSV, XLSX, XML, or retrieved through the Apify API.

Each video is one record. With includeProfileInfo: true the channel object is added:

{
"id": "kXJPy1J-ps0",
"url": "https://www.youtube.com/watch?v=kXJPy1J-ps0",
"title": "2026 09 24 Illuminate",
"views": 28,
"description": null,
"uploadDate": "2026-09-28T06:19:39-07:00",
"thumbnailUrl": "https://i.ytimg.com/vi/kXJPy1J-ps0/maxresdefault.jpg",
"likes": 0,
"comments": 0,
"channel": {
"id": "UCploDBIVOE0jyhEsHFHrMeg",
"description": "At UM, we attract people from around the world who share our ideals and vision for positive change...",
"subscribersCount": 39500
}
}

Without includeProfileInfo, the record is the same without channel.

With onlyProfileInfo: true (or maxItems: 0), each channel returns one record:

{
"channel": {
"id": "UCploDBIVOE0jyhEsHFHrMeg",
"description": "At UM, we attract people from around the world...",
"subscribersCount": 39500
}
}

Notes:

  • subscribersCount is rounded by YouTube (e.g. 39.5K becomes 39500). Video views and likes are exact.
  • likes is 0 when the channel hides likes. comments is 0 when comments are turned off.
  • description is null when the video has no description.
  • uploadDate is ISO 8601 with the channel timezone offset.
  • Videos come from the channel's Videos tab, newest first. Shorts and live streams that only appear in their own tabs are not included.
  • If a video page can't be read (for example an age-restricted video), the record keeps the title, views and thumbnail from the channel listing, with uploadDate: null.
  • A channel with no videos matching the filters returns one { "channel": {...} } record and is charged as a successful channel.

Failed channels are returned with status: "failed" and a note explaining why. They are not charged:

{
"url": "https://www.youtube.com/@doesnotexist",
"status": "failed",
"note": "Channel not found.",
"isProxyUsed": true
}

Important

This Actor collects only publicly available information. Users are responsible for complying with YouTube's terms, applicable laws, and privacy/data-protection requirements.

The Actor is not affiliated with, endorsed by, or sponsored by YouTube or Google.