YouTube Channel Scraper - Videos, Shorts, Views & Channel Stats avatar

YouTube Channel Scraper - Videos, Shorts, Views & Channel Stats

Pricing

from $0.55 / 1,000 videos

Go to Apify Store
YouTube Channel Scraper - Videos, Shorts, Views & Channel Stats

YouTube Channel Scraper - Videos, Shorts, Views & Channel Stats

YouTube channel scraper and YouTube Data API alternative: list a channel's videos, Shorts or live streams with exact view counts, duration and publish date, plus subscribers, video count, total views and country. Accepts @handles, URLs and channel ids, no API key or login.

Pricing

from $0.55 / 1,000 videos

Rating

0.0

(0)

Developer

CrawlKit

CrawlKit

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

List the videos, Shorts or live streams of one or more YouTube channels. Each video comes as one flat JSON row with its title, URL, view count, duration, publish time and thumbnail, plus the channel's subscriber count, video count, total views, country and join date.

What it does

  • Takes YouTube channels in any common form: https://www.youtube.com/@TED, @TED, TED, https://www.youtube.com/channel/UC..., a bare channel id UC..., or legacy /c/... and /user/... URLs.
  • Reads one tab per run: Videos, Shorts or Live (past and current live streams), sorted like on YouTube: latest, popular (most viewed) or oldest.
  • Follows YouTube's pagination (about 30 videos per page, 48 for Shorts) until maxItems videos per channel or the end of the tab.
  • Returns the exact view count for regular videos and past live streams.
  • Adds the channel's About panel data to every row: country, exact video count, total views, join date, description.
  • Removes duplicates: a video is returned once per run, and a channel given twice (for example as a handle and as an id) is scraped once.
  • Uses YouTube's public web API (the one the mobile site calls). No login, no API key, no browser.

Input

ParameterTypeRequiredDefaultDescription
channelsarray of stringsYes—Channel URLs, handles (@TED) or channel ids (UC...), one per line
contentTypestringNovideosvideos, shorts or streams (Live tab)
sortBystringNolatestlatest, popular (most viewed first) or oldest
maxItemsintegerNo20Maximum videos per channel (1 to 10,000)

Example:

{
"channels": ["https://www.youtube.com/@TED", "@MrBeast"],
"contentType": "videos",
"sortBy": "popular",
"maxItems": 100
}

Output

One dataset row per video. Real example (TED, Videos tab, 28 October 2026; channelDescription shortened here):

{
"videoId": "tu6tF-lVDJI",
"url": "https://www.youtube.com/watch?v=tu6tF-lVDJI",
"title": "Why You Should Share a Recipe with a Stranger | Anuj Gupta | TED",
"contentType": "video",
"position": 1,
"viewCount": 32423,
"viewCountText": "32K views",
"publishedTimeText": "15 hours ago",
"publishedAt": "2026-10-27T15:57:20+00:00",
"durationSeconds": 233,
"durationText": "3:53",
"thumbnailUrl": "https://i.ytimg.com/vi/tu6tF-lVDJI/hq720.jpg?sqp=-oaymwEcCK4FEIIDSEbyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLARb81KrPx9W4bT0yxksh9b0687Hw&usqp=CBQ",
"isLive": false,
"isUpcoming": false,
"isShort": false,
"channelId": "UCAuUUnT6oDeKwE6v1NGQxug",
"channelName": "TED",
"channelHandle": "@TED",
"channelUrl": "https://www.youtube.com/@TED",
"channelSubscriberCount": 27900000,
"channelVideoCount": 5872,
"channelTotalViews": 3265605072,
"channelCountry": "United States",
"channelJoinedDate": "2006-12-06",
"channelDescription": "The TED Talks channel features the best talks and performances from the TED Conference, where the world's leading thinke...",
"channelAvatarUrl": "https://yt3.googleusercontent.com/ytc/AIdro_koIFcCOrvh0KThLNOiazAIDu6hcs8bjkGNwe1f6A_OYm8=s900-c-k-c0x00ffffff-no-rj",
"channelInput": "https://www.youtube.com/@TED",
"scrapedAt": "2026-10-28T06:57:20+00:00"
}
FieldNotes
viewCountExact for videos and past streams; rounded by YouTube for Shorts (5.8K gives 5800); null for streams that are live now or upcoming (see viewCountText, e.g. 2.4K watching)
publishedAtApproximate, computed from publishedTimeText (15 hours ago, Streamed 6 months ago); a month counts as 30 days and a year as 365 days, so precision is the unit YouTube shows
durationSecondsnull for Shorts and live-now streams
channelSubscriberCountNumber, rounded by YouTube (27.9M gives 27900000)
channelVideoCount, channelTotalViews, channelCountry, channelJoinedDateFrom the channel's About panel; channelCountry is null when the channel did not set one
positionRank of the video in the tab for the chosen sort

Pricing

Pay-per-event, no start fee: $0.91 per 1,000 videos on the Apify Free plan, lower on paid plans. One VIDEO event is charged per dataset row; channel data is included.

EventFreeStarterScaleBusinessEnterprise
Video (VIDEO)$0.91$0.77$0.68$0.55$0.55

Prices in USD per 1,000 events.

The run stops cleanly when the "Maximum cost per run" you set is reached; the videos already returned are kept.

Limitations

  • Shorts: YouTube's Shorts tab shows rounded view counts and no publish date or duration, so viewCount is rounded and publishedTimeText, publishedAt and durationSeconds are null.
  • publishedAt is an estimate derived from relative text such as "1 year ago"; for an exact date, open the video page.
  • Subscriber counts are rounded by YouTube (3 significant digits); exact subscriber counts are not public.
  • One tab per run. To get videos and Shorts of the same channel, run the Actor twice (or use two tasks).
  • Only what the channel tab shows to a signed-out visitor is listed: private and unlisted videos are not returned.
  • Very long tabs are read page by page (about 30 videos per request), so channels with thousands of videos take longer.
  • If YouTube rejects the requests, the Actor retries on new proxy sessions (datacenter, then residential) and fails with an explicit message if every attempt is refused. Channels that do not exist or have no video in the chosen tab are reported in the run's status message.