YouTube Channel Scraper
Pricing
from $0.45 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
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
| Field | Type | Default | Description |
|---|---|---|---|
channel_sources | array | — | Required. Channel URLs, @handles, usernames, or UC… IDs. |
channel_sections | multi-select | ["about","videos"] | Required. Sections to collect from every channel. |
channel_search_term | string | — | Required when search_results is selected. |
maxItems | integer | 100 | Maximum rows saved across all channels and sections. 0 removes the limit. |
region_code | string | US | Two-letter country code used to localize results. |
language_code | string | en | Language 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
| Value | Produces | Paginates |
|---|---|---|
about | One profile row per channel | — |
videos | Long-form uploads, newest first | Yes |
shorts | Shorts, newest first | Yes |
live_streams | Past and scheduled live streams | No |
playlists | Playlists the channel publishes | Yes |
community_posts | Community tab posts, with attachments | Yes |
home_sections | The shelves shown on the channel home tab | No |
store_products | Products listed on the channel store | No |
search_results | Results of channel_search_term inside the channel | Yes |
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:
| Field | Contents |
|---|---|
recordType | Section that produced the row, such as channel_about or channel_videos |
source | The channel target as supplied in the input |
url | Canonical URL, derived from the row's identifier |
position | One-based position within the run |
meta | The parent channel's profile, on paginated sections |
Channel details (about):
| Field | Contents |
|---|---|
channelId, title, description | Channel identity |
channelHandle | The @handle |
subscriberCount, subscriberCountText | Subscriber count, numeric and displayed |
videosCount, viewCount | Lifetime totals |
avatar, banner | Image sets |
country, joinedDate | Declared country and creation date |
keywords | Channel tags |
links | Public links listed on the channel |
Videos, Shorts, live streams, playlists, and search results:
| Field | Contents |
|---|---|
type | video, shorts, or playlist |
videoId or playlistId | Item identifier |
title, description | Item text |
viewCount, viewCountText | View counts |
lengthText | Duration |
publishedTimeText, publishedAt | Relative and ISO 8601 publication time |
videoCount | Number of videos, on playlist rows |
thumbnail | Thumbnail images |
Community posts:
| Field | Contents |
|---|---|
postId | Post ID |
contentText | Post body |
authorText, authorChannelId, authorChannelHandle | Author |
replyCount | Reported replies |
attachment | Image, 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.
Related Actors
| Actor | Purpose |
|---|---|
| YouTube Video Scraper | Full metadata and transcripts for known videos and Shorts |
| YouTube Search Scraper | Keyword search, hashtags, Trending, Hype, and Home feeds |
| YouTube Comments Scraper | Comments from videos, Shorts, and community posts |
| YouTube Playlist Scraper | Playlist metadata and every video in it |