YouTube Community Posts Scraper avatar

YouTube Community Posts Scraper

Pricing

from $1.95 / 1,000 community posts

Go to Apify Store
YouTube Community Posts Scraper

YouTube Community Posts Scraper

Collect public YouTube Community posts from channel handles, URLs, or IDs without customer-supplied YouTube credentials or API keys. Look up post details and comments by ID or URL, then get post text, links, channel context, dates, types, media, and engagement in structured dataset rows.

Pricing

from $1.95 / 1,000 community posts

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

📣 Explore a YouTube community feed

For marketers, creator teams, researchers, and developers, this Actor collects public YouTube Community posts or looks up known posts and comments. Each dataset row keeps useful source data such as post text, IDs, links, channel context, publication time, type, media, and engagement, so you can review a channel snapshot or reuse it in a workflow.

📦 Post and comment rows

One row per returned post or comment

The dataset has two row shapes. A post row keeps the post identity, text, source channel, publication time, type, and available media or engagement data. A comment row adds the comment identity, author, comment engagement, and the context of the post it belongs to.

Public source scope

The Actor reads public YouTube data. Private, deleted, restricted, or sign-in-only posts and source fields outside YouTube's public response are not included. Shared video fields contain video metadata and a public link, not the video file. Each run is a snapshot, not a change monitor.

▶️ Run a YouTube Community post lookup

  1. Choose communityPosts, postDetails, or comments in resultType.
  2. For communityPosts, enter one or more channel handles, channel URLs, or channel IDs in channels.
  3. For postDetails or comments, enter one or more post IDs or full post URLs in postReferences.
  4. Add post-type, text, or approximate date filters when you need a smaller set. You can also add language detection or store post images for supported post lookups.
  5. Start the run and open the results link to review the dataset.

⚙️ Input

Choose the result type first. channels is used for Community posts. postReferences is used for Post details and Comments. Values that do not apply to the selected result type are ignored.

Input fields

FieldTypeWhat it does
resultTypestringChooses communityPosts, postDetails, or comments.
channelsstring arrayLists one or more YouTube channel handles, channel URLs, or channel IDs for Community posts.
postTypesstring arrayOptionally keeps only text, image, video, or poll Community posts. Leave it empty to return all available types.
keywordstringOptionally keeps Community posts whose text contains this keyword.
dateFromdate stringOptionally includes Community posts from this approximate publication date onward. Use YYYY-MM-DD.
dateTodate stringOptionally includes Community posts through this approximate publication date. Use YYYY-MM-DD.
maxPostsintegerOptionally stops Community posts from each channel. Leave it empty to collect all available posts until the current public feed is exhausted.
maxCommentsintegerOptionally stops Comments from each post. Leave it empty to collect all available comments until the current public thread is exhausted.
postReferencesstring arrayLists one or more YouTube Community post IDs or full post URLs for Post details and Comments.
countryCodestringOptionally sets a two-letter country context for localized source labels, such as US.
languageCodestringOptionally sets a language context for localized source labels, such as en or en-US.
includeLanguagebooleanWhen enabled, adds the detected language when detection succeeds for Community posts and Post details. A successful detection may add a usage charge.
storeImagesbooleanWhen enabled, stores retrieved post images and returns access references when storage succeeds for Community posts and Post details. A stored image may add a usage charge.

Successful default input

This is the public input from the successful default-input Community posts run:

{
"resultType": "communityPosts",
"channels": [
"@YouTube"
],
"maxPosts": 25,
"includeLanguage": false,
"storeImages": false
}

🧾 Output

The run output contains a results link to the successful posts and comments from the run.

Run output

FieldTypeWhat it does
resultsURL stringOpens the successful posts and comments from the run.

Post row

Each post row has itemType set to post. Optional fields appear when the public source provides them or when the matching enrichment option succeeds.

FieldTypeWhat it does
itemTypestringIdentifies this row as a post.
postIdstringStable YouTube ID of the Community post.
postUrlURL stringDirect public link to the Community post.
textstringText content of the post.
publishedAtstringSource publication time as ISO 8601 when available, or source relative time otherwise.
postTypestringPost content or attachment type: text, image, video, or poll.
channelobjectPublic identity and profile data for the source channel.
channel.channelIdstringStable YouTube ID of the source channel.
channel.namestringPublic name of the source channel.
channel.handlestringPublic handle of the source channel when available.
channel.subscriberCountstringSubscriber count display from the source when available.
imagesobject arrayPublic image references for the post. An image can use the source URL or an Apify storage URL when stored.
images[].urlURL stringURL used to open or download one post image.
sharedVideoobjectMetadata and a public link for a video shared in the post.
sharedVideo.videoIdstringStable YouTube ID of the shared video.
sharedVideo.urlURL stringDirect public link to the shared video.
sharedVideo.titlestringPublic title of the shared video when available.
sharedVideo.channelNamestringPublic channel name for the shared video when available.
sharedVideo.publishedAtstringSource publication time of the shared video when available.
pollobjectChoices and vote data for a poll post.
poll.choicesobject arrayChoices shown in the poll.
poll.choices[].textstringText of one poll choice.
poll.totalVotesstringTotal vote count shown by the source when available.
engagementobjectAvailable engagement counts for the post.
engagement.likesintegerNumber of likes on the post when available.
engagement.commentsintegerNumber of comments on the post when available.
languagestringDetected language when language detection succeeds.
hashtagsstring arrayHashtags found in the post text.
videoLinksURL string arrayYouTube video links found in the post text.

Genuine post row

The following complete row came from a successful run. Optional fields that were not returned for this row are not added to the example.

{
"itemType": "post",
"postId": "Ugkx-7xgRw-Uc9lRS3_2RvS2zASPTZOFtIlw",
"postUrl": "https://www.youtube.com/post/Ugkx-7xgRw-Uc9lRS3_2RvS2zASPTZOFtIlw",
"text": "Have you heard about MAX POWER?  It's our new aerospace festival, and it's landing at NASA's Kennedy Space Center in Florida, Nov. 7-8.\n\nLearn how to join us: https://www.nasa.gov/maxpowerhttps://www.youtube.com/watch?v=wJhhS...",
"publishedAt": "2 weeks ago",
"postType": "video",
"channel": {
"channelId": "UCLA_DiR1FfKNvjuUpBHmylQ",
"name": "NASA",
"handle": "/@NASA",
"subscriberCount": "63.1K subscribers"
},
"images": [
{
"url": "https://i.ytimg.com/vi/wJhhSlplzuE/hqdefault.jpg?sqp=-oaymwEcCOADEI4CSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDJ1mamUdpZ4imKpqYNXzdVhXogGw"
},
{
"url": "https://yt3.googleusercontent.com/9PCzJJ9kWfittH2cj6d2yIev95QLgTV_WNNXRkf0FUPn9uGSBgMKFb0ZENtlJj4lNd3J8O5A=s68-c-k-c0x00ffffff-no-rj"
}
],
"sharedVideo": {
"videoId": "wJhhSlplzuE",
"url": "https://www.youtube.com/watch?v=wJhhSlplzuE",
"title": "MAX POWER 2026 — Official Announcement",
"channelName": "UP.Summit",
"publishedAt": "2 weeks ago"
},
"engagement": {
"likes": 288
},
"videoLinks": [
"https://www.youtube.com/watch?v=wJhhS..."
]
}

Comment row

Each comment row has itemType set to comment. It keeps the comment and the source post context, so the same table is useful for comment research and post-level analysis.

FieldTypeWhat it does
itemTypestringIdentifies this row as a comment.
commentIdstringStable YouTube ID of the comment.
postIdstringStable ID of the Community post with the comment.
postUrlURL stringDirect public link to the Community post.
textstringText content of the comment.
publishedAtstringSource publication time as ISO 8601 when available, or source relative time otherwise.
postTypestringContent or attachment type of the source post when available.
channelobjectPublic identity and profile data for the channel that published the source post.
channel.channelIdstringStable YouTube ID of the source channel.
channel.namestringPublic name of the source channel.
channel.handlestringPublic handle of the source channel when available.
channel.subscriberCountstringSubscriber count display from the source when available.
authorobjectPublic identity data for the comment author.
author.channelIdstringStable YouTube ID of the comment author's channel.
author.namestringPublic name of the comment author.
author.handlestringPublic handle of the comment author when available.
imagesobject arrayPublic image references carried with the source post when available.
images[].urlURL stringURL used to open or download one source-post image.
sharedVideoobjectMetadata and a public link for a video shared in the source post when available.
sharedVideo.videoIdstringStable YouTube ID of the shared video.
sharedVideo.urlURL stringDirect public link to the shared video.
sharedVideo.titlestringPublic title of the shared video when available.
sharedVideo.channelNamestringPublic channel name for the shared video when available.
sharedVideo.publishedAtstringSource publication time of the shared video when available.
pollobjectChoices and vote data for the source post when it is a poll.
poll.choicesobject arrayChoices shown in the source poll.
poll.choices[].textstringText of one source-poll choice.
poll.totalVotesstringTotal vote count shown by the source when available.
engagementobjectAvailable engagement counts for the source post.
engagement.likesintegerNumber of likes on the source post when available.
engagement.commentsintegerNumber of comments on the source post when available.
commentEngagementobjectAvailable engagement counts for the comment.
commentEngagement.likesintegerNumber of likes on the comment when available.
commentEngagement.repliesintegerNumber of replies to the comment when available.
isChannelOwnerbooleanSays whether the comment author is the source-channel owner when known.
languagestringDetected language of the source post when detection succeeds.
hashtagsstring arrayHashtags found in the source post text.
videoLinksURL string arrayYouTube video links found in the source post text.

Genuine comment row

The following complete row came from a successful comment run:

{
"itemType": "comment",
"commentId": "UgzyZLivNDjrcg9aLvd4AaABAg",
"postId": "UgkxZusu9I1Z-VuU5PGZNA2gclHi8V9CJVZk",
"postUrl": "https://www.youtube.com/post/UgkxZusu9I1Z-VuU5PGZNA2gclHi8V9CJVZk",
"text": "Adding more days to my life VS adding more life to my days",
"publishedAt": "1 month ago",
"postType": "poll",
"channel": {
"channelId": "UCX6OQ3DkcsbYNE6H8uQQuVA",
"name": "MrBeast",
"handle": "/@MrBeast",
"subscriberCount": "30.4M subscribers"
},
"author": {
"channelId": "UCescH4jRkgcfMry6qlV1e9g",
"name": "Krenteboll",
"handle": "@Krenteboll"
},
"commentEngagement": {
"likes": 7800,
"replies": 119
},
"isChannelOwner": false,
"poll": {
"choices": [
{
"text": "100 Years Of No Aging"
},
{
"text": "1 Billion Dollars"
}
],
"totalVotes": "1.7M votes"
},
"engagement": {
"likes": 102000
}
}

💳 Pricing

Charges are tied to successful saved outcomes. The primary events cover a saved post, post detail, or comment. Optional event charges apply only when a post image is stored or a post language is detected successfully. Check the Pricing tab for the current tier price before a run.

Buyer-facing eventWhen it applies
Community PostOne public post is saved to the dataset.
Post DetailOne requested post detail is saved.
CommentOne public comment is saved to the dataset.
Stored ImageOne public post image is stored with an access reference.
Detected LanguageThe language of one public post is detected successfully.

🔌 Integrations

Open the results link in the run output, use the Apify API, or export the dataset for another workflow.

Watch the related guide here:

❓ FAQ

Which result type should I choose?

Choose communityPosts to collect posts from channels. Choose postDetails for known post IDs or URLs, or choose comments to collect comments from known posts.

How do I look up one known Community post?

Set resultType to postDetails and add the post ID or full YouTube post URL to postReferences. You can add more than one reference in the same run.

Can I collect comments from a post?

Yes. Set resultType to comments, add one or more post IDs or URLs, and optionally set maxComments for each post.

What happens when a work limit is empty?

An empty maxPosts returns all available posts until the current public feed is exhausted. An empty maxComments returns all available comments until the current public thread is exhausted.

Does this download YouTube videos?

No. A shared video includes its public link and metadata, not the video file. For image posts, storeImages can store retrieved images and return access references when storage succeeds.

Can I use this for a YouTube community post download?

Yes. The dataset gives you public post data, links, channel context, dates, types, and available media references for export or later processing.

Do I need a YouTube API key or login?

For channel-based Community-post collection, you do not need to supply YouTube credentials or an API key. The Actor reads publicly accessible source data.

Are publication dates exact?

The source time is kept as an ISO 8601 time when available. If YouTube exposes only relative time, such as 2 weeks ago, that source text is kept instead. Date filters are approximate.

Can I search several keywords in one run?

The input has one keyword filter per run. Separate keyword searches are separate runs, not one combined search.

What happens with private or deleted content?

Private, deleted, restricted, or sign-in-only posts and source fields outside YouTube's public response are outside the Actor's scope.

Does the Actor monitor changes over time?

No. Each run is a snapshot of the public data available at that time. Use another run when you need a later snapshot.

📝 Changelog

v0.0 (18-09-2026)

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré