YouTube Community Posts Scraper
Pricing
from $0.10 / 1,000 item extracteds
YouTube Community Posts Scraper
Export public YouTube Community posts, poll options, image URLs, likes and comment counts from channel URLs or handles into a structured dataset.
Pricing
from $0.10 / 1,000 item extracteds
Rating
0.0
(0)
Developer
Fetch Cat
Maintained by CommunityActor stats
0
Bookmarked
15
Total users
12
Monthly active users
3 days ago
Last modified
Categories
Security
Limited permissionsShare
Export public posts from YouTube channel Posts tabs, keeping post identity, text, source links and available engagement or attachment metadata. Collect image URLs and exposed poll options when enabled. The Actor does not retrieve individual comment threads, private posts or members-only content.
Quick start
Use a known channel's Posts tab and a small per-channel cap, enabling only the attachment fields you need. The existing example combines @YouTube and @Google:
{"channelUrls": ["https://www.youtube.com/@YouTube/posts","@Google"],"maxPostsPerChannel": 10,"includeImages": true,"includePollOptions": true}
Prefer a video guide? This short Apify walkthrough shows you how to set up and run an Actor. It uses a different Actor, but the setup steps are the same.
Ready-to-run examples
Choose a small, preconfigured example:
- Collect official channel posts — Retrieve up to five posts each from YouTube and Google, including exposed attachments.
- Collect creator poll options — Read up to ten YouTube posts with visible poll details when available.
- Export image posts — Collect up to five posts each from NASA and National Geographic with image URLs enabled.
What you get
One saved public post row with channel context, postId, postUrl, text and collection time. Available like and comment counts reflect displayed source values, while imageUrls and pollOptions describe exposed attachments. Relative publish text is retained, and the reserved publishedAt field does not guarantee a precise timestamp.
Who is it for?
- Creator marketing teams can review announcements, campaign teasers and audience polls from selected channels.
- Brand and PR teams can bring competitor and media updates into a structured review feed.
- Agencies and analysts can export post links and displayed engagement for client reporting rather than copying posts manually.
- Data engineers can use post IDs and collection times in their own deduplication, dashboards and alerts.
How you can use the data
- Build a small announcement review feed. Collect posts from the existing @YouTube or @Google targets and keep postId, postUrl, text and scrapedAt. Store IDs in your destination before comparing scheduled exports rather than assuming a built-in cross-run change report.
- Inspect a public poll sample. Keep poll options enabled and retain the exposed text and percentages with the source post. A visible percentage is not the underlying voter list, a verified survey result or proof that every poll response was exported.
- Prepare an image-post inventory. Enable image URLs for a small channel sample and retain them beside post identity. The rows contain references rather than downloaded image files or media-use rights.
- Review observed engagement by post type. Keep channel, poll flag, displayed likes, comment count and collection time for your own reporting. Missing counts are unknown, and comment totals do not include the actual conversation or measure unique viewers.
Input settings
| Setting | JSON key | Type / default | Description |
|---|---|---|---|
| Channel URLs or handles | channelUrls | array | YouTube channel URLs, /posts URLs, /community URLs, or @handles. Required. |
| Maximum posts per channel | maxPostsPerChannel | integer, schema default 10 | Maximum posts to save for each channel, from 1 to 500. |
| Include image URLs | includeImages | boolean, default true | Save public image URLs from post attachments when available. |
| Include poll options | includePollOptions | boolean, default true | Save public poll option text and visible percentages when available. |
| Proxy configuration | proxyConfiguration | object, schema default disabled | Optional connection settings. See the field help for behavior and costs. |
Set the post cap explicitly for repeatable exports. The input schema supplies 10 when omitted on platform starts. A local entry path that bypasses schema defaults uses 20.
Output data
Each dataset item represents one public Community post. This synthetic example illustrates the field shape, not a retrieved post:
{"channelUrl": "https://www.youtube.com/@YouTube/posts","channelHandle": "@YouTube","channelName": "YouTube","postId": "Ugkx...","postUrl": "https://www.youtube.com/post/Ugkx...","text": "Example public Community post text","publishedAtText": "4 hours ago","publishedAt": null,"likeCount": 1200,"commentCount": 239,"imageUrls": [],"pollOptions": [],"isPoll": false,"scrapedAt": "2026-07-03T21:26:06.636Z"}
| Field | Description |
|---|---|
channelUrl | Normalized YouTube Posts tab URL |
channelHandle | Public channel handle when available |
channelName | Channel display name |
postId | YouTube Community post ID |
postUrl | Direct post URL |
text | Post text and linked text |
publishedAtText | Relative publish time shown by YouTube |
publishedAt | Reserved field, currently always null |
likeCount | Public like count parsed as a number |
commentCount | Public comment count parsed as a number |
imageUrls | Public image URLs attached to the post |
pollOptions | Public poll options and visible percentages |
isPoll | Whether the post appears to contain a poll |
scrapedAt | ISO timestamp for the scrape |
Download your results
Open your run's dataset, choose Export and select JSON, CSV or Excel. JSON keeps nested fields together. CSV and Excel are useful when you want to review the records in a spreadsheet.
See Apify's download and export guide for the available formats and field options.
Pricing
A new valid run charges a start event before collecting posts. A run can incur this charge even if it returns no posts.
Each saved public post is charged as an item event. Channels without saved posts do not generate paid placeholder rows.
See the live Pricing tab for current rates and discounts. Platform usage can also apply.
Tips for best results
- Use a known Posts tab or handle. Start with the existing @YouTube example and a small explicit cap.
- Keep source identity with text. Use postId and postUrl for downstream review and repeated-export deduplication.
- Read counts as public observations. Abbreviated values are parsed source displays rather than verified unique engagement.
- Request attachment fields deliberately. Image URLs and poll percentages are conditional source metadata.
- Inspect summary outcomes. Separate a readable channel without posts from blocked, missing or unparseable access before drawing coverage conclusions.
Limits and caveats
The actor only extracts public channel Community posts. It does not log in, bypass private data, scrape private members-only posts, or access data hidden behind account permissions.
The actor normalizes channel inputs, parses compact public counts such as 1.2K, and records a scrape timestamp for each item. Fields that YouTube does not publicly expose may be null or empty arrays.
Only posts exposed in the fetched public channel page are collected. A cap is not a promise of historical coverage or a complete archive.
Confirmed empty Posts tabs and unavailable channel URLs can return an empty dataset with a reason in RUN_SUMMARY. ID-addressed channels whose verified public navigation does not expose a Posts tab (including many auto-generated Topic channels) also return no rows, with a warning and per-channel reason. This does not imply that a channel is private or deleted. Blocked or unrecognized pages remain separately reported rather than being treated as no posts. Useful sibling results remain available in mixed batches. A successful platform status alone does not establish complete coverage.
Runs have an independent processing budget of up to four and a half minutes, even with a longer platform timeout. Collection also stops when the post-event budget is exhausted. Check the summary for unfinished targets before using the results as a complete sample.
Each separate run collects posts again and can charge for posts saved previously. Keep post IDs in your destination if you need cross-run history.
Automation and integrations
Save your settings for next time
Once you have an input that works for you, save it as an Apify task. This keeps your settings together so you can use them again without filling in the form from scratch.
Run on a schedule
Need fresh results regularly? You can schedule the Actor or a saved task to run at a time that suits you.
Each scheduled run collects the data again. If you want to compare results or highlight changes, add that step in your own workflow.
Send results to your other tools
Use n8n, Make or Zapier to connect this scraper to the rest of your workflow. For example, you could pass its results to an AI assistant or add records to a spreadsheet. Follow the Apify integration guides for your chosen tool.
For a custom connection, an Apify webhook can notify your app when a run finishes or fails. Your app can then fetch the results or handle the failure.
API usage
Want to collect this data from your own app or automation? The examples below send input to the scraper and show how to collect its results.
The Node.js and Python examples wait for the run to finish before reading its results. The cURL example starts the run and returns its details. Wait for that run to finish, then use its defaultDatasetId to fetch the results.
For setup instructions, see Apify's JavaScript client guide, Python client guide and Actor runs API reference.
cURL
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~youtube-community-posts-scraper/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"channelUrls":["https://www.youtube.com/@YouTube/posts"],"maxPostsPerChannel":10}'
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('fetch_cat/youtube-community-posts-scraper').call({channelUrls: ['https://www.youtube.com/@YouTube/posts'],maxPostsPerChannel: 10,});console.log(run.defaultDatasetId);
Python
from apify_client import ApifyClientclient = ApifyClient('MY_APIFY_TOKEN')run = client.actor('fetch_cat/youtube-community-posts-scraper').call(run_input={'channelUrls': ['https://www.youtube.com/@YouTube/posts'],'maxPostsPerChannel': 10,})print(run['defaultDatasetId'])
MCP and AI agents
You can ask your AI assistant to collect data with YouTube Community Posts Scraper and help you work with the results. The scraper returns the data, and your assistant can then summarize it, compare records or prepare notes.
Connect your assistant through the Apify MCP server. MCP gives your assistant a way to find this scraper, run it and read the results. Follow the official setup and sign-in guide for your app.
Easier setup with an Apify plugin
If you use a supported coding assistant, the official Apify plugin can set up the connection for you. It connects your assistant to Apify and includes instructions for common tasks. Follow the guide for your particular app.
Use Apify AI in Console
Prefer to keep everything in Apify? Open Apify AI in Console and ask it to find Fetch Cat's YouTube Community Posts Scraper. You can describe the data you want and ask questions about the results.
Apify AI is currently in beta. It asks for confirmation before starting an Actor, and normal run charges apply.
Choose your assistant
- Claude and Claude Code (Anthropic): Apify setup guide.
- ChatGPT and Codex (OpenAI): Apify setup guides.
- Grok Bot (xAI): Apify plugin guide.
- Gemini CLI (Google): MCP server setup guide. Use the server URL below with the HTTP configuration supported by Gemini CLI.
Connect just this scraper
To keep your setup focused on this scraper, add this server configuration to a compatible MCP client:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=fetch_cat/youtube-community-posts-scraper"}}}
Sign in to Apify when your client asks. If your client uses a Bearer token instead, follow its setup guide and keep the token in its secure configuration. Configuration formats vary by app, so use the linked guide if your client needs a different format.
Use Apify's general server
Already connected to the general Apify MCP server at https://mcp.apify.com? You can use it to find this scraper without adding another server. Ask your assistant to use YouTube Community Posts Scraper by Fetch Cat, or give it the identifier fetch_cat/youtube-community-posts-scraper.
Your assistant can check the available settings and retrieve the results from the returned run. If the run is still working, it should follow that run rather than start it again. Both connection options use Apify's hosted service.
Example requests
- “Use Fetch Cat’s YouTube Community Posts Scraper to collect up to 5 public posts from https://www.youtube.com/@YouTube/posts with image URLs and poll options enabled. Keep post IDs and source links without retrieving comment threads.”
- “Retrieve up to 3 public posts from @Google with image URLs off and poll options enabled. Keep exposed poll text and percentages without inferring voters or treating the sample as a survey.”
- “Collect up to 3 posts per channel for @YouTube and @Google with attachment options off. Keep post IDs, displayed counts and collection times for my own comparison without assuming a complete archive.”
Normal Apify charges apply. Check the live Pricing tab before asking your assistant to run a larger batch.
Pay with x402
If your AI agent has a funded wallet, it can pay for Apify usage through x402. This experimental option lets an agent use Apify without a conventional account.
Apify AGI provides a prepaid API token with a spending cap after payment. Your agent can use that token to run this scraper through the Apify API or an authenticated MCP connection.
Some MCP setups also support paying for each request directly. That is a different payment option, so check the official guide for its availability.
Follow the official guide for wallet setup, supported payment options and current terms. Apify handles the payments. Keep wallet keys and payment tokens in your agent's secure configuration.
Other ways for agents to pay
Apify also supports MPP for prepaid access through AGI and Skyfire for eligible Actors. If your agent already uses one of these, see the agentic payment guide to choose the right setup.
FAQ
Can I scrape private or members-only posts?
No. The actor only collects public content visible without logging in.
Can I use handles instead of full URLs?
Yes. Handles such as @YouTube are supported.
Does the actor scrape comments?
No. It extracts the public comment count for each post, not individual comment threads.
Does it support polls?
Yes, when public poll information is available and includePollOptions is enabled.
Why do some channels return fewer posts than requested?
Some channels publish fewer Community posts, hide older posts from the public Posts tab, or expose a smaller initial list to anonymous visitors.
Troubleshooting
If a channel returns no items, confirm that the channel has a public Posts tab. Some channels do not use Community posts or may show content differently by region.
If engagement fields are empty, YouTube may not expose the count for that post or channel at the time of scraping.
If a channel URL fails, try the channel handle or the direct /posts tab URL.
Related Actors
- YouTube Channel Details Scraper — Collect public YouTube channel descriptions, identifiers and available audience counts.
- YouTube Video Details Scraper — Collect public YouTube video metadata and available engagement from known video URLs.
- YouTube Comments Scraper — Collect available public YouTube video comments and exposed replies.
- YouTube Search Results Scraper — Collect public YouTube search-result metadata for supported video, channel or playlist searches.
- YouTube Shorts Scraper — Collect metadata for available public YouTube Shorts.
Support and feedback
For custom additions or integrations, email hello@fetchcat.dev.
Found an error or have a feature request? Open an issue with the run URL, a non-sensitive input example and what you expected.
Need help sharing it? See Apify’s guide to sharing a run when reporting an issue. Sharing a run can give the developer access to its input, logs and results, so use a run that contains no sensitive data. Please leave out API tokens, passwords, cookies, private documents and personal data. Use a public sample URL or a redacted example instead.
Tried this scraper? We'd love to hear how it worked for you. Leave a review to help others choose the right tool and help us improve it. Your feedback means a lot to us.
Made with care for curious people, AI agents and the possibilities in data. ♥