YouTube Channel About, Playlists & Posts Finder
Look up a YouTube channel's About page details - subscribers, views, country, join date, links - with optional playlist and Community Post snapshots nested into the same row. No cookies or login required.
Input schema
Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | optional | Channel profile returns one row per channel with its About details. Playlists returns one row per public playlist, show, course, or podcast. Posts returns one row per public Community Post. |
channelUrls | array | required | Public YouTube channel URLs, @handles, or UC… channel IDs. One row set is produced for each channel. |
includeLinks | boolean | optional | In channel profile mode, include the external links shown on the public About page, with their titles and favicons. |
Show all input fields
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | optional | Channel profile returns one row per channel with its About details. Playlists returns one row per public playlist, show, course, or podcast. Posts returns one row per public Community Post. |
channelUrls | array | required | Public YouTube channel URLs, @handles, or UC… channel IDs. One row set is produced for each channel. |
includeLinks | boolean | optional | In channel profile mode, include the external links shown on the public About page, with their titles and favicons. |
includePlaylists | boolean | optional | In channel profile mode, add a snapshot of the channel's public playlists, shows, courses, and podcasts to the same row. Use the playlists mode for one row per playlist. |
maxPlaylists | integer | optional | Maximum playlist, show, course, or podcast rows to collect per channel. Applies to the playlists mode and to nested profile snapshots. |
includePosts | boolean | optional | In channel profile mode, add a snapshot of the channel's public Community Posts to the same row. Use the posts mode for one row per post. |
maxPosts | integer | optional | Maximum Community Posts to collect per channel. Applies to the posts mode and to nested profile snapshots. YouTube exposes at most 200 posts per channel. |
includePostDetails | boolean | optional | Open each Community Post's public detail page to fill its exact ISO publish date and exact like count. Adds one request per post. |
includePostComments | boolean | optional | Collect public comments on each Community Post, up to the per-post limit. Adds one detail and one or more comment requests per post. |
maxPostComments | integer | optional | Maximum public top-level comments to keep per Community Post when comments are included. Replies are not expanded. |
Download the published input schema
View complete JSON
{
"properties": {
"channelUrls": {
"description": "Public YouTube channel URLs, @handles, or UC… channel IDs. One row set is produced for each channel.",
"editor": "stringList",
"items": {
"type": "string"
},
"minItems": 1,
"prefill": [
"https://www.youtube.com/@Apify"
],
"title": "Channel URLs",
"type": "array"
},
"includeLinks": {
"default": true,
"description": "In channel profile mode, include the external links shown on the public About page, with their titles and favicons.",
"prefill": true,
"title": "Include public external links",
"type": "boolean"
},
"includePlaylists": {
"default": false,
"description": "In channel profile mode, add a snapshot of the channel's public playlists, shows, courses, and podcasts to the same row. Use the playlists mode for one row per playlist.",
"prefill": false,
"title": "Nest playlists in the profile row",
"type": "boolean"
},
"includePostComments": {
"default": false,
"description": "Collect public comments on each Community Post, up to the per-post limit. Adds one detail and one or more comment requests per post.",
"prefill": false,
"title": "Include post comments",
"type": "boolean"
},
"includePostDetails": {
"default": true,
"description": "Open each Community Post's public detail page to fill its exact ISO publish date and exact like count. Adds one request per post.",
"prefill": false,
"title": "Fetch exact post dates and likes",
"type": "boolean"
},
"includePosts": {
"default": false,
"description": "In channel profile mode, add a snapshot of the channel's public Community Posts to the same row. Use the posts mode for one row per post.",
"prefill": false,
"title": "Nest Community Posts in the profile row",
"type": "boolean"
},
"maxPlaylists": {
"default": 20,
"description": "Maximum playlist, show, course, or podcast rows to collect per channel. Applies to the playlists mode and to nested profile snapshots.",
"maximum": 10000,
"minimum": 1,
"prefill": 10,
"title": "Maximum playlists per channel",
"type": "integer"
},
"maxPostComments": {
"default": 20,
"description": "Maximum public top-level comments to keep per Community Post when comments are included. Replies are not expanded.",
"maximum": 1000,
"minimum": 1,
"prefill": 10,
"title": "Maximum comments per post",
"type": "integer"
},
"maxPosts": {
"default": 20,
"description": "Maximum Community Posts to collect per channel. Applies to the posts mode and to nested profile snapshots. YouTube exposes at most 200 posts per channel.",
"maximum": 10000,
"minimum": 1,
"prefill": 10,
"title": "Maximum Community Posts per channel",
"type": "integer"
},
"mode": {
"default": "profiles",
"description": "Channel profile returns one row per channel with its About details. Playlists returns one row per public playlist, show, course, or podcast. Posts returns one row per public Community Post.",
"editor": "select",
"enum": [
"profiles",
"playlists",
"posts"
],
"enumTitles": [
"Channel profiles (About page)",
"Channel playlists, shows & courses",
"Community posts"
],
"prefill": "profiles",
"title": "What to collect",
"type": "string"
}
},
"required": [
"channelUrls"
],
"schemaVersion": 1,
"title": "YouTube Channel Profile Scraper Input",
"type": "object"
}
Output schema
Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.
| Field | Type | Required | Description |
|---|---|---|---|
profiles | string | optional | Dataset containing channel profile rows, playlist/show/course rows, Community Post rows, and explanatory status rows. |
Download the published output schema
View complete JSON
{
"actorOutputSchemaVersion": 1,
"description": "Channel profile rows with About details, external links, and optional nested surfaces, plus one-row-per-playlist and one-row-per-Community-Post modes.",
"properties": {
"profiles": {
"description": "Dataset containing channel profile rows, playlist/show/course rows, Community Post rows, and explanatory status rows.",
"template": "{{links.apiDefaultDatasetUrl}}/items",
"title": "YouTube channel profiles, playlists and posts",
"type": "string"
}
},
"title": "YouTube Channel About, Playlists & Posts Finder Output"
}
Dataset schema
Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.
Download the published dataset schema
View complete JSON
{
"actorSpecification": 1,
"views": {
"overview": {
"display": {
"component": "table",
"properties": {
"channelName": {
"format": "text",
"label": "Channel"
},
"country": {
"format": "text",
"label": "Country"
},
"handle": {
"format": "text",
"label": "Handle"
},
"isVerified": {
"format": "boolean",
"label": "Verified"
},
"joinedDateText": {
"format": "text",
"label": "Joined"
},
"recordType": {
"format": "text",
"label": "Type"
},
"subscriberCountText": {
"format": "text",
"label": "Subscribers"
},
"title": {
"format": "text",
"label": "Title"
},
"totalViewsText": {
"format": "text",
"label": "Total views"
},
"videoCountText": {
"format": "text",
"label": "Videos"
}
}
},
"title": "Channel profiles",
"transformation": {
"fields": [
"recordType",
"channelName",
"title",
"handle",
"subscriberCountText",
"videoCountText",
"totalViewsText",
"country",
"joinedDateText",
"isVerified"
]
}
},
"playlists": {
"display": {
"component": "table",
"properties": {
"lastUpdatedText": {
"format": "text",
"label": "Updated"
},
"playlistType": {
"format": "text",
"label": "Type"
},
"playlistUrl": {
"format": "link",
"label": "URL"
},
"title": {
"format": "text",
"label": "Title"
},
"videoCount": {
"format": "number",
"label": "Items"
}
}
},
"title": "Playlists & collections",
"transformation": {
"fields": [
"recordType",
"playlistType",
"title",
"videoCount",
"lastUpdatedText",
"playlistUrl"
]
}
},
"posts": {
"display": {
"component": "table",
"properties": {
"contentText": {
"format": "text",
"label": "Text"
},
"likeCount": {
"format": "number",
"label": "Likes"
},
"postType": {
"format": "text",
"label": "Type"
},
"postUrl": {
"format": "link",
"label": "URL"
},
"publishedAt": {
"format": "text",
"label": "Published"
}
}
},
"title": "Community posts",
"transformation": {
"fields": [
"recordType",
"postType",
"postId",
"publishedAt",
"likeCount",
"contentText",
"postUrl"
]
}
}
}
}
Key-value schema
Published key-value store definitions, when provided by this build.
This definition is not present in the default published build. See the published README for available documentation.
Published README
Read the full published documentation
YouTube Channel About, Playlists & Posts Finder
A YouTube channel page hides its most useful facts behind three different tabs. This actor reads the public About panel, the Playlists tab (including shows, courses, and podcasts), and the Community Posts tab in one cookieless run — then returns clean rows you can filter, compare, or export.
What this actor does
- Resolves a channel from an
@handle, a full channel URL, or a rawUC…channel ID. - Collects the public About details: description, subscriber and video counts, total views, country, join date, external links, avatar, banner, verification badge, family-safe flag, RSS URL, and owner keywords.
- Lists every public playlist, show, course, and podcast on a channel with its item count, thumbnail, first video, and last-updated text.
- Lists public Community Posts with text, images, videos, polls, quizzes, shared playlists, and reposts — plus optional exact publish dates, exact likes, and public comments.
- Follows YouTube's continuation pages until the requested limit or the real end of the tab.
- Emits an explanatory status row when a channel has no such tab or no public rows, instead of returning silence.
Modes
| Mode | One row per… | Best for |
|---|---|---|
profiles |
Channel | A profile table with optional nested playlist and post snapshots |
playlists |
Playlist / show / course / podcast | Building a catalog of a channel's collections |
posts |
Community Post | Content research, engagement tracking, and giveaway or poll analysis |
All rows include recordType, channelId, channelName, channelHandle, channelUrl, and scrapedAt, so rows from different modes can be combined in one dataset.
Channel profile fields
| Field | Description |
|---|---|
channelId |
Channel's UC… ID |
channelName |
Display name |
handle |
Public @handle |
channelUrl |
Canonical channel URL |
description |
Full About-panel description |
subscriberCountText, subscriberCount |
Subscriber label as shown, and an exact integer only when YouTube shows an exact number |
videoCountText, videoCount |
Video count as shown, and exact integer when available |
totalViewsText, totalViews |
Total channel views |
country, countryCode |
Country name from About and its ISO 3166-1 alpha-2 code |
joinedDateText, joinedDate |
Join date as shown and as YYYY-MM-DD |
avatarUrl, bannerUrl |
Channel avatar and banner images |
isVerified, isFamilySafe |
Public badges and family-safe flag |
keywords |
Owner-set channel keywords, when present |
rssUrl |
Channel RSS URL (metadata only; the feed is not used as a data path) |
links |
External links from About, each with title, url, and faviconUrl |
playlists |
Nested playlist snapshot when includePlaylists is on |
communityPosts |
Nested post snapshot when includePosts is on |
surfaceStatus |
Explains an empty optional surface (no_playlists_tab, no_posts_tab, no_public_playlists, no_public_posts, unavailable) |
Playlist row fields
playlistId, playlistUrl, playlistType (playlist, show, course, podcast), title, videoCountText, videoCount, thumbnailUrl, thumbnailSources, firstVideoId, firstVideoUrl, watchUrl, lastUpdatedText, contentType, metadataRowsRaw, plus channel context and scrapedAt.
Counts cover videos, episodes, and items (for example 28 episodes), so podcast shows and courses are not dropped.
Community Post row fields
postId, postUrl, postType (text, image, video, poll, quiz, playlist, repost), authorName, authorChannelId, contentText, publishedTimeText, publishedAt (exact ISO date), voteCountText, likeCount (exact), commentCountText, commentCount, commentsDisabled, images, imageDetails, videoAttachments, poll, quiz, playlist, sharedPost, comments, plus channel context and scrapedAt.
- Image rows keep one URL per image (the largest resolution), not every thumbnail size.
- Poll rows include choice text, optional choice images, and the total vote count.
- Quiz rows include the choices, correct answers, and explanations when YouTube exposes them.
- Repost rows keep the original post inside
sharedPost. commentscontains public top-level comments when comments are enabled.
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode |
Select | profiles |
Channel profiles, channel playlists, or Community Posts |
channelUrls |
Array | – | Required. Channel URLs, @handles, or UC… IDs |
includeLinks |
Boolean | true |
Include About-page external links in profile mode |
includePlaylists |
Boolean | false |
Nest a playlist snapshot in each profile row |
maxPlaylists |
Integer | 20 |
Maximum playlists per channel (1–10000) |
includePosts |
Boolean | false |
Nest a Community Post snapshot in each profile row |
maxPosts |
Integer | 20 |
Maximum posts per channel (YouTube exposes at most 200) |
includePostDetails |
Boolean | true |
Fetch exact post date and like count (one request per post) |
includePostComments |
Boolean | false |
Collect public comments on each post |
maxPostComments |
Integer | 20 |
Maximum top-level comments per post (1–1000) |
Example: profile only
{
"mode": "profiles",
"channelUrls": ["@MrBeast"],
"includeLinks": true
}
Example: profile with nested playlists and posts
{
"mode": "profiles",
"channelUrls": ["@MrBeast"],
"includePlaylists": true,
"maxPlaylists": 10,
"includePosts": true,
"maxPosts": 5,
"includePostDetails": true
}
Example: every public playlist on two channels
{
"mode": "playlists",
"channelUrls": ["@Fireship", "@Kurzgesagt"],
"maxPlaylists": 100
}
Example: posts with exact engagement and comments
{
"mode": "posts",
"channelUrls": ["@MrBeast"],
"maxPosts": 10,
"includePostDetails": true,
"includePostComments": true,
"maxPostComments": 20
}
Output views
The dataset ships three table views: Channel profiles, Playlists & collections, and Community posts. Each view shows only the fields relevant to that row type; records from different modes can share one dataset.
Use cases
- Creator discovery and partnerships — shortlist channels by audience size, country, and public contact links.
- Market research — compare subscriber, video, and total-view figures across competitors in one table.
- Content teams — audit which channels still post Community updates, run polls, or publish quizzes.
- Catalog building — pull every playlist, show, course, and podcast a channel publishes.
- Campaign tracking — re-run the same channels and compare exact post likes and publish dates over time.
FAQ
Which channel identifiers can I use?
An @handle, a full channel URL (including /about, /playlists, or /posts), or a raw UC… channel ID. Duplicate inputs are collapsed.
Why are some fields missing for a channel? A field appears only when YouTube publishes it. A channel with a hidden subscriber count, no listed country, or no banner simply omits those fields instead of guessing.
Why does a channel return no playlists or posts?
Some channels have no Playlists or Posts tab. The actor emits a status row that says no_playlists_tab or no_posts_tab, so an empty result is explained.
Why do some counts show only text?
YouTube rounds large subscriber counts (525M). The actor keeps the displayed text and only fills the numeric field when the displayed value is exact. Compact values are never expanded into a fake precise number.
How many posts can I get?
YouTube's public Posts tab stops at 200 posts per channel. Older posts are only reachable through their own URLs, so maxPosts is capped there and the run message says so when a larger limit was requested.
Do I need cookies or a login? No. Every surface is public. The actor uses YouTube's public pages and its automatic proxy fallback when a datacenter request is degraded.
Are comments and replies included?
includePostComments collects public top-level comments. Replies are not expanded in this actor; use a dedicated comment scraper when you need full reply trees.
Is this affiliated with YouTube? No. This actor independently reads public YouTube pages and is not affiliated with or endorsed by YouTube or Google.
Python quickstart
Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.
Source build HY5JkbjyCn2pfM7Xf. Documentation is regenerated from the default published build; private drafts are not included.