YouTube Channel & Video Scraper avatar

YouTube Channel & Video Scraper

Pricing

from $0.30 / 1,000 video scrapes

Go to Apify Store
YouTube Channel & Video Scraper

YouTube Channel & Video Scraper

Scrape YouTube channels and videos without a browser or API key: subscriber counts, full upload lists, exact view counts, durations, publish dates, keywords, and optional likes and comments. No quota limits. From $0.30 per 1,000 videos.

Pricing

from $0.30 / 1,000 video scrapes

Rating

0.0

(0)

Developer

Eimantas V

Eimantas V

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

3 days ago

Last modified

Share

Channel stats and full video lists with exact view counts — no browser, no API key, no quota.

@mkbhd Marques Brownlee 21.1M subscribers · 1.8K videos
6 recent uploads · median 3,642,713 views · uploading every 7 days
Google Pixel 11/Pro/Fold Impressions 1,562,071 views 11:14 14 hours ago
Galaxy Z Fold 8 Review: Honeymoon's Over 4,097,984 views 11:35 12 days ago
Framework 13 Pro: The Modular Laptop 3,187,441 views 12:48 2 weeks ago

One channel with 6 videos: 8 requests, 0.4 MB, 0.8 seconds.


Why it is fast and cheap

Most YouTube scrapers load the page in a headless browser. This one calls the same internal API youtube.com calls from your browser, and the difference is not small: a watch page is 1.25 MB of HTML wrapped around 16 KB of data. Reading the data directly makes runs roughly eighty times lighter, which is why the price below is what it is.


What you get

Per channelchannelId, handle, title, description, keywords, subscriberCount, videoCount, avatarUrl, rssUrl, plus rollups over the videos returned: medianViewsScraped and uploadIntervalDays, the mean gap between uploads.

Per video

GroupFields
ReachviewCount, viewCountIsExact, viewsPerDay, viewCountText
EngagementlikeCount (exact), commentCount, likesPerThousandViews — opt-in
TimingpublishedAt, publishedText, daysSincePublished
Contenttitle, descriptionSnippet, keywords, category, durationSeconds
FormatisShort, isLive, thumbnailUrl

viewsPerDay is the one that matters for comparison. A three-year-old video with 4M views and a three-week-old video with 4M views are not the same result, and raw view counts cannot tell you which is winning.


Who this is for

  • Influencer marketing — vet creators before you pay them. Subscriber count is vanity; medianViewsScraped against subscriberCount shows how many people actually watch, and uploadIntervalDays shows whether the channel is still active.
  • Content strategy — pull a competitor's last 200 uploads, sort by viewsPerDay, and read what worked.
  • Trend researchkeywords and category across a set of channels, refreshed daily.
  • Media monitoring — watch specific channels for new uploads with publishedWithinDays: 1.

Pairs with the TikTok Creator Scraper: same buyer, the other half of the picture.


Input

{
"channels": ["@mkbhd", "@MrBeast"],
"maxVideosPerChannel": 100,
"publishedWithinDays": 90
}

Accepts handles, channel URLs, UC… ids, legacy /c/ and /user/ paths, and — for videos — watch, youtu.be, /shorts/ and /live/ links.

OptionDefaultNotes
maxVideosPerChannel50Your main billing guard. 0 = channel stats only
includeShortsfalseSeparate tab. Shorts carry no duration or date of their own — those need exactVideoStats
publishedWithinDaysApplied after fetching; YouTube's tab has no date filter
exactVideoStatstrueExact views and timestamps; one small request per video
includeEngagementfalseLikes and comments — ~25× the data
includeDescriptionfalseOff keeps the dataset far smaller
language / countryen / USAffects display text and region-restricted videos

Four things worth knowing

Each was measured against live channels.

Subscriber counts are rounded, and that is YouTube's doing. The site itself publishes "21.1M subscribers" — the exact number has not been public since 2019. subscriberCount is that text parsed to 21100000, and subscriberCountText keeps the original so you can see it is rounded. Any tool quoting an exact subscriber figure is inventing precision.

View counts are exact, but only if you ask — and only if YouTube agrees. A channel listing gives "1.5M views"; resolving the video gives 1584034. exactVideoStats is on by default and costs one 16 KB request per video.

YouTube sometimes answers that request without describing the video, which datacenter addresses see routinely. When it does the Actor tries a second client, and if that is also refused it keeps the rounded listing figure rather than inventing one.

Two fields tell you exactly what you got, and they are deliberately separate:

  • viewCountIsExact — whether viewCount is the real number. It can be true even when the video lookup failed, because turning on engagement recovers the exact count from that payload.
  • publishedText — when it is set, publishedAt was estimated from wording like "2 weeks ago". Videos the lookup did describe have an exact timestamp and no publishedText.

keywords and category come only from the video lookup, so they are empty when it is refused. The run log reports both gaps separately.

Likes cost 25× more than everything else. The like total is not in the cheap endpoint — fetching it means a second request that is roughly 400 KB against 16 KB. That is why includeEngagement is off by default. Comment counts are rounded by YouTube itself: "2.4M" is as precise as the site is.

Publish dates are exact where possible, approximate otherwise. With exactVideoStats you get a real timestamp. Without it, "2 weeks ago" is anchored to the coarsest unit YouTube gave, and publishedText always carries the original wording so you can tell which you are looking at.


Output

{
"recordType": "video",
"videoId": "Z6z_feacXW8",
"channelTitle": "Marques Brownlee",
"title": "Galaxy Z Fold 8 Review: Honeymoon's Over",
"viewCount": 4097984, "viewCountText": "4M views",
"durationSeconds": 695, "durationText": "11:35",
"publishedAt": "2026-08-01T…", "publishedText": "12 days ago",
"daysSincePublished": 12, "viewsPerDay": 341499,
"category": "Science & Technology", "isShort": false
}

Three ready-made views: Videos, Channels and Engagement. Set flattenOutput: true for CSV.


Honest limits

  • No transcripts. YouTube stopped serving caption tracks to anonymous clients; the endpoint returns zero bytes. Anything offering bulk transcripts is running a browser fleet or an authenticated session.
  • No comment text. Only the count, and only when engagement is enabled.
  • Subscriber counts are rounded. See above.
  • Region-restricted videos will not resolve outside their country. Set country to reach them.
  • videosScraped describes this run, not the channel. A cap of 10 gives cadence and median over the last 10 uploads, not the channel's lifetime.
  • A private, deleted or age-restricted video returns VIDEO_NOT_FOUND and is not charged. Failed rows carry no figures at all — a row that says it could not read the video will never also report a like count.
  • viewCountIsExact: false means viewCount came from YouTube's rounded display text. See above.
  • Empty keywords and a null category mean the per-video lookup was refused for that row; publishedAt is estimated in that case too.

Pricing

EventPriceWhen
Actor start$0.005Once per run
Channel scraped$0.004Per channel profiled
Video scraped$0.0003Per video returned, after filters

$0.30 per 1,000 videos. Tracking 50 creators with their 20 most recent uploads costs about $0.51. Channels and videos that cannot be resolved are never charged.


Tips

  • Rank by viewsPerDay, not viewCount. It is the only fair comparison across videos of different ages.
  • medianViewsScraped ÷ subscriberCount is the number influencer marketers actually want: what share of an audience shows up.
  • uploadIntervalDays climbing run over run means a channel is slowing down — usually before its view counts show it.
  • publishedWithinDays: 1 with a daily schedule is a cheap new-upload feed across a whole competitive set.
  • Leave includeEngagement off unless you specifically need likes. It is the single biggest cost lever in this Actor.