YouTube Channel Scraper avatar

YouTube Channel Scraper

Pricing

from $0.45 / 1,000 results

Go to Apify Store
YouTube Channel Scraper

YouTube Channel Scraper

Scrape one or many YouTube channels by URL, @handle, username, or ID. Collect channel details, videos, Shorts, live streams, playlists, community posts, store products, or a search inside the channel.

Pricing

from $0.45 / 1,000 results

Rating

0.0

(0)

Developer

The Netaji

The Netaji

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

The Actor reads one or many public YouTube channels and collects the sections you select — channel details, videos, Shorts, live streams, playlists, community posts, home shelves, store products, or a search performed inside the channel. Channels are accepted as URLs, @handles, legacy usernames, or UC… IDs, and are resolved to a channel ID automatically. No YouTube account, API key, or cookie is required.

Accepted input

FieldTypeDefaultDescription
channel_sourcesarrayRequired. Channel URLs, @handles, usernames, or UC… IDs.
channel_sectionsmulti-select["about","videos"]Required. Sections to collect from every channel.
channel_search_termstringRequired when search_results is selected.
maxItemsinteger100Maximum rows saved across all channels and sections. 0 removes the limit.
region_codestringUSTwo-letter country code used to localize results.
language_codestringenLanguage code for result text.
{
"channel_sources": [
{ "url": "https://www.youtube.com/@TED" },
{ "url": "@veritasium" },
{ "url": "UC_x5XG1OV2P6uZZ5FSM9Ttw" }
],
"channel_sections": ["about", "videos", "shorts"],
"maxItems": 200,
"region_code": "US"
}

The sections

ValueProducesPaginates
aboutOne profile row per channel
videosLong-form uploads, newest firstYes
shortsShorts, newest firstYes
live_streamsPast and scheduled live streamsNo
playlistsPlaylists the channel publishesYes
community_postsCommunity tab posts, with attachmentsYes
home_sectionsThe shelves shown on the channel home tabNo
store_productsProducts listed on the channel storeNo
search_resultsResults of channel_search_term inside the channelYes

Sections are collected per channel in the order listed above, and maxItems is a budget shared across all of them. Asking for about, videos, and shorts from three channels with maxItems: 100 will not necessarily reach the third channel's Shorts — raise the limit or run the sections separately when even coverage matters.

How channel targets are resolved

A UC… ID is used directly. Anything else — a URL, an @handle, or a legacy username — is sent to YouTube's own resolver first, and the resulting channel ID is written to the run log so the interpretation is visible.

Resolution costs one extra request per channel, and only for targets that are not already IDs. Supplying UC… IDs skips it entirely.

Response fields

One row per item. Which fields appear depends on the section — a profile row and a community post have little in common.

Common to every row:

FieldContents
recordTypeSection that produced the row, such as channel_about or channel_videos
sourceThe channel target as supplied in the input
urlCanonical URL, derived from the row's identifier
positionOne-based position within the run
metaThe parent channel's profile, on paginated sections

Channel details (about):

FieldContents
channelId, title, descriptionChannel identity
channelHandleThe @handle
subscriberCount, subscriberCountTextSubscriber count, numeric and displayed
videosCount, viewCountLifetime totals
avatar, bannerImage sets
country, joinedDateDeclared country and creation date
keywordsChannel tags
linksPublic links listed on the channel

Videos, Shorts, live streams, playlists, and search results:

FieldContents
typevideo, shorts, or playlist
videoId or playlistIdItem identifier
title, descriptionItem text
viewCount, viewCountTextView counts
lengthTextDuration
publishedTimeText, publishedAtRelative and ISO 8601 publication time
videoCountNumber of videos, on playlist rows
thumbnailThumbnail images

Community posts:

FieldContents
postIdPost ID
contentTextPost body
authorText, authorChannelId, authorChannelHandleAuthor
replyCountReported replies
attachmentImage, poll, or video attached to the post
{
"recordType": "channel_about",
"channelId": "UCAuUUnT6oDeKwE6v1NGQxug",
"title": "TED",
"channelHandle": "@TED",
"subscriberCount": 27700000,
"subscriberCountText": "27.7M",
"videosCount": "5745",
"viewCount": "3199315747",
"country": "United States",
"joinedDate": "2006-12-06",
"url": "https://www.youtube.com/channel/UCAuUUnT6oDeKwE6v1NGQxug"
}

Behaviour on partial results

A channel that cannot be resolved is logged and skipped, and the run continues with the remaining channels. A section YouTube declines to serve for one channel is logged and skipped, and the other sections for that channel still run. Rows already collected are kept in both cases. The run fails only when no supplied target resolved to a public channel at all.

This matters on large input lists: one deleted or renamed channel among two hundred costs that channel's rows, not the run.

Promoted results carrying type: "ad" are dropped before rows are saved, so they are neither stored nor billed.

Frequently asked questions

Which forms of channel address are accepted? Full channel URLs in any form, @handles with or without the @, legacy /user/ names, and UC… IDs. Mixing forms in one run is fine. Only UC… IDs skip the resolution request.

Why did a channel return fewer videos than it has published? maxItems is shared across every channel and section in the run, so it is usually the limit that was reached first. Where a channel genuinely has more, the video and Shorts tabs paginate until YouTube stops serving pages.

Why can live streams and home shelves not be paginated? YouTube serves those tabs as a single page with no cursor to follow. The Actor collects what that page contains and moves on. Videos, Shorts, playlists, community posts, and in-channel search all paginate normally.

Can videos be sorted by popularity instead of newest? Not currently. YouTube's channel tabs accept a sort parameter but reject every value except newest, so offering the other options would only produce failed sections. Sorting the collected rows on viewCount afterwards gives the same result for a fully collected tab.

Why is store_products empty? Most channels have no store. The section returns rows only for channels that have configured one, and returns nothing rather than failing for those that have not.

How is subscriberCount different from subscriberCountText? subscriberCountText is what YouTube displays, such as 27.7M. subscriberCount is the number behind it, 27700000. YouTube rounds public subscriber counts to three significant figures above 1,000, so both are approximations — that rounding is YouTube's, not the Actor's. videosCount and viewCount are exact.

Is a YouTube account or API key required? No. Only publicly visible channel content is read, with no credentials or logged-in session, and no YouTube Data API quota is consumed.

ActorPurpose
YouTube Video ScraperFull metadata and transcripts for known videos and Shorts
YouTube Search ScraperKeyword search, hashtags, Trending, Hype, and Home feeds
YouTube Comments ScraperComments from videos, Shorts, and community posts
YouTube Playlist ScraperPlaylist metadata and every video in it