YouTube Community Posts Scraper
Pricing
from $5.00 / 1,000 community posts
YouTube Community Posts Scraper
Scrape public YouTube Community posts from channel handles, channel URLs, channel IDs or post URLs, with text, media, likes, timestamps, linked videos and channel metadata. No cookies needed.
Pricing
from $5.00 / 1,000 community posts
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a month ago
Last modified
Categories
Share
What is YouTube Community Posts Scraper?
YouTube Community Posts Scraper turns public YouTube Community feeds into a clean dataset with one row per post. Give it channel URLs, @handles, UC... channel IDs or individual post URLs, and it returns each post's text, images, like count, publish time, channel identity and, when the post links a video, that video's title, views, length and thumbnail. Creator-partnership teams, brand monitors, media analysts and AI agents use it to track announcements, product teasers and polls as data, with no cookies, Google login or personal API key.
Why teams choose this Community posts scraper
- Community posts as their own entity. Announcements, images and teasers that never appear in upload feeds become searchable rows.
- Linked-video context. Posts that promote a video carry
videoId,videoTitle,videoUrl,videoViewCountandvideoLengthSeconds. - Flexible inputs. Mix channel URLs,
@handles,UC...IDs and/post/...URLs in one run. - Clean deduplication. Every row carries a stable
postId, and the same post is saved once even when several inputs reach it. - Spend you control.
maxPostscaps billable posts across the whole run;maxPagesPerChannelbounds paging per channel. - Clear outcomes. Each run writes
OUTPUTandRUN_SUMMARYwithCOMPLETE,PARTIAL,VALID_EMPTYorINVALID_INPUTso pipelines can branch.
Best fit for this Actor
- Best fit for known channels or posts where you want Community content as structured data.
- Designed for creator campaign tracking, competitor announcement monitoring and content research.
- When you start from a topic instead of a channel list, start with YouTube Search Scraper, then pass its
channelUrlorchannelIdvalues intochannelUrlshere. - When a post links a video and you want the audience reaction, then pass the
videoUrlto YouTube Comments Scraper.
Example workflow: from a creator list to a campaign signal
A creator-partnership team follows thirty channels and knows that launches often start as Community posts. Each Monday the analyst starts a job with the thirty channel URLs, maxPosts at 100 and maxPagesPerChannel at 2. The dataset returns each post's content, imageUrls, publishedAt, likeCount and any linked videoUrl. The analyst filters content for the product name, stores postId as the deduplication key, compares likeCount across creators, then feeds the linked videos into the comments step to read audience reaction. A weekly schedule keeps the evidence log current.
Input
{"channelUrls": ["https://www.youtube.com/@MrBeast","@mkbhd","UC_x5XG1OV2P6uZZ5FSM9Ttw"],"postUrls": [],"maxPosts": 50,"maxPagesPerChannel": 2}
| Field | Type | What it controls |
|---|---|---|
channelUrls | array of strings | Channel URLs, @handles or exact UC... channel IDs. |
postUrls | array of strings | Public Community post URLs in the https://www.youtube.com/post/... form. |
maxPosts | integer | Total posts saved across the whole run. Default 20. |
maxPagesPerChannel | integer | Feed pages read per channel. Default 5. |
Individual postUrls are processed before channel feeds, and numeric fields take numbers such as 10 rather than strings.
Output
| Field | What it contains |
|---|---|
postId, postUrl | Community post identity and link |
content | Post text |
imageUrl, imageUrls | First image and every image on the post |
likeCount, likeCountText | Public like count as a number and as displayed |
publishedAt, publishedTimeText | Machine-readable publish time and display text |
channelId, channelName, channelHandle, channelUrl | Channel identity |
videoId, videoTitle, videoUrl, videoThumbnailUrl | Linked video, when the post promotes one |
videoViewCount, videoViewCountText, videoPublishedTimeText, videoLengthText, videoLengthSeconds | Linked-video metrics |
source, sourceEndpoint, scrapedAt | Data route used and collection time |
{"postId": "UgkxWw9Nf4Kb453wM6hA2d9pySxjBixo0fXT","postUrl": "https://www.youtube.com/post/UgkxWw9Nf4Kb453wM6hA2d9pySxjBixo0fXT","content": "How we made the Galaxy S23 Ultra Intro at @TheStudio!","imageUrl": null,"imageUrls": [],"likeCount": 2500,"likeCountText": "2.5K","publishedAt": "2023-10-01T12:30:34.311Z","publishedTimeText": "3 years ago","channelId": "UCBJycsmduvYEL83R_U4JriQ","channelName": "Marques Brownlee","channelHandle": "mkbhd","channelUrl": "https://www.youtube.com/@mkbhd","videoId": "as_kxJn4Xwc","videoTitle": "Can an iPad Control Our Camera Robot?","videoUrl": "https://www.youtube.com/watch?v=as_kxJn4Xwc","videoThumbnailUrl": "https://i.ytimg.com/vi/as_kxJn4Xwc/hq720.jpg","videoViewCount": 188492,"videoViewCountText": "188,492 views","videoPublishedTimeText": "3y ago","videoLengthText": "18:36","videoLengthSeconds": 1116,"scrapedAt": "2026-10-01T12:30:34.735Z"}
Each run also writes OUTPUT (outcome, counts and charged events) and RUN_SUMMARY (input counts, deduplication, paging state and stop reason) to the default key-value store.
Pricing
This Actor uses Pay per event plus Apify platform usage. The events are Actor Start (once per run, per allocated GB) and Community post (one per validated post saved to the dataset). For example, a run with maxPosts at 10 that fills its cap at the default memory is one start event plus 10 post events, plus the platform usage of the job; a valid request with no public posts is the start event only. The live Pricing tab on this page shows the current price of each event, and maxPosts is the strongest cost control.
API example
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~youtube-community-posts-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"channelUrls": ["@TED"], "postUrls": [], "maxPosts": 10, "maxPagesPerChannel": 1}'
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("khadinakbar/youtube-community-posts-scraper").call(run_input={"channelUrls": ["@TED"],"postUrls": [],"maxPosts": 10,"maxPagesPerChannel": 1,})posts = list(client.dataset(run["defaultDatasetId"]).iterate_items(clean=True))output = client.key_value_store(run["defaultKeyValueStoreId"]).get_record("OUTPUT")print(output["value"]["outcome"], len(posts))
Use with AI agents (MCP)
The Actor is available through Apify MCP as khadinakbar--youtube-community-posts-scraper for Claude, ChatGPT, Cursor and other MCP clients. Example prompt:
Collect up to 10 public Community posts from @TED with one page per channel. Return postId, postUrl, content, publishedAt, likeCount, imageUrls and videoUrl, and tell me the outcome.
The agent starts the Actor with small numeric limits, reads OUTPUT.outcome, then reads rows with get-dataset-items. Treat empty fields as unknown rather than zero, use postId for deduplication and scrapedAt for provenance. For cost and scope, keep maxPosts small on the first call and raise it once the rows look right.
Best results
| Starting situation | Helpful action | Expected outcome |
|---|---|---|
| First look at a channel | maxPosts 10 with maxPagesPerChannel 1 | A quick sample of the latest posts |
| Several channels in one job | Raise maxPosts, since the cap is shared | Posts from every channel in the list |
| A specific post | Use its canonical /post/... URL in postUrls | One enriched row for that post |
| Date-bounded reporting | Filter on publishedAt after collection | Clean reporting windows |
| Weekly monitoring | Schedule and deduplicate on postId | Only new posts added to your log |
Works with public Community posts; members-only and login-only posts sit outside its public-data scope. Like counts and linked-video views are snapshots at scrapedAt.
Builder's note
I built this because creator launches increasingly start as Community posts, and those never show up in upload or search datasets. I designed maxPosts as a single cap across the whole job so spend is predictable no matter how many channels you add, and I kept linked-video fields on the same row so a post and the video it promotes travel together.
FAQ
Do I need cookies or a YouTube API key?
No. The Actor reads public Community data with no login or personal key.
Can I filter by date?
Collect a bounded recent feed, then filter on publishedAt. It is a reliable machine-readable timestamp for each post.
Why does a row have no images or no linked video?
Text-only posts have no images and many posts link no video, so those fields stay empty for that post.
Responsible use
This Actor collects public YouTube Community posts. Follow YouTube's terms and applicable privacy laws such as the GDPR and CCPA when you store or reuse creator content. YouTube is a trademark of Google LLC; this independent Actor is not affiliated with or endorsed by YouTube or Google.