AS
Apify Store
/memo23/facebook-public-group-posts-scraper
Facebook Public Group Posts & Comments [Only $1.5💰] NO COOKIES
[Only $1.5💰] Scrape Facebook public group posts and comments extract text, dates, media URLs, author info, engagement metrics (likes/shares), and detailed comment threads. Perfect for social listening
liveasyncunknown~30s typical
social mediaagentsmcp serversfacebookpublicgroupposts
$0.0019
per result + $0.005 call
plus $0.001 platform fee per run
Actor charges $0.0015 per result; Cracked adds 25% plus a $0.005 call fee
Bring your own Apify Store key: provider portion drops to $0.
$Set up https://cracked-ai-pearl.vercel.app/SKILL.md, then use Cracked to run apify /memo23/facebook-public-group-posts-scraper for me.
Input
| Field | Type | Description |
|---|---|---|
| startUrls* | array | Full URLs to public Facebook groups you want to scrape. |
| search | string | Only keep posts whose text contains your words. Matching is case-insensitive, and every word must appear somewhere in the post (order doesn't matter) — so "visa grant" keeps posts containing both words. Wrap the query in double quotes to require that exact phrase instead. Note this filters the posts the group feed returns; it does NOT search Facebook's archive, so it cannot find posts older than the feed reaches. You can also paste a group search URL (https://www.facebook.com/groups/<id>/search/?q=keyword) into the URLs field and the keyword is applied automatically. Leave empty to scrape all posts. |
| searchKeywordByYear | integer | Optional. Keep only posts created in this calendar year (e.g. 2026). IMPORTANT: this filters the posts the group feed returns — it does NOT search Facebook's archive. Facebook only serves a limited window of a group's history (often ~6 months on a busy group), so setting a year older than that window returns zero results no matter how long the run goes. Leave empty unless you specifically want to narrow results to one year within the feed's range. |
| includeComments | boolean | If enabled, extracts the top/most interesting comments for each post. default false |
| enrichMarketplaceListings | boolean | If enabled, for each post that is a Marketplace/buy-sell listing the scraper makes one extra request to the listing page to add its location (text + latitude/longitude) and structured title, which the group feed does not include. This adds one request per listing, so runs are a bit slower. Non-listing posts are unaffected. default false |
| monitoringMode | boolean | If enabled, the scraper remembers post IDs it has already returned in previous runs and delivers only posts it hasn't seen before. Ideal for scheduled runs that should return just what's new since last time. Pagination stops early once it reaches already-seen posts. Note: posts already seen are still checked (and billed at the lower additional-data rate) since they must be fetched to be recognized as duplicates. default false |
| viewOption | string (CHRONOLOGICAL | RECENT_ACTIVITY | TOP_POSTS | CHRONOLOGICAL_LISTINGS) | How to sort the posts in the group feed. CHRONOLOGICAL = new posts (default), RECENT_ACTIVITY = newest activity, TOP_POSTS = most relevant, CHRONOLOGICAL_LISTINGS = buy/sell items. default "CHRONOLOGICAL" |
| onlyPostsNewerThan | string | Use this if you only want to scrape posts from a specific period of time. Accepts an absolute date (e.g. 2026-04-20) or a relative period (e.g. 30 days, 2 weeks); the scraper stops paginating once it reaches posts older than this. |
| onlyPostsNewerThanHours | integer | Optional. Keep only posts from the last N hours. If set, this overrides the date field above. |
| onlyPostsOlderThan | string | Optional upper bound on the date window. Keep only posts published BEFORE this point. Combine it with "Posts newer than" to scrape a closed range, e.g. newer-than 2026-01-01 plus older-than 2026-02-01 returns only January. Accepts an absolute date (2026-04-20) or a relative period (30 days, 2 weeks). Posts newer than this bound are skipped free of charge while the scraper seeks back to your window, so a "before March" run does not bill you for everything since March. |
| maxItems | integer | Maximum number of posts that will be scraped per group. default 100 |
| maxConcurrency | integer | Maximum number of pages that can be processed at the same time. default 10 |
| minConcurrency | integer | Minimum number of pages that will be processed at the same time. default 1 |
| maxRequestRetries | integer | Number of times the crawler will retry a failed request before giving up. default 3 |
| postsPerRequest | integer | Advanced: how many posts to request per feed call. Facebook caps this at about 3 posts per response no matter what you set — measured on group 1108531659756743, where a value of 30 returned the same 3 posts and the same ~600 KB payload as a value of 3. Raising it does not speed the scrape up. Leave it at the default; if a run is not finishing in time, raise the run's timeout or lower Max items instead. default 3 |
| proxy | object | Leave empty — the actor already routes all traffic through its own built-in residential proxy at no extra cost to you. Only set this if you want to use your own proxies. |
Call it
curl
curl https://cracked-ai-pearl.vercel.app/v1/run \
-H "Authorization: Bearer ck_live_..." -H "content-type: application/json" \
-d '{"provider":"apify","endpoint":"/memo23/facebook-public-group-posts-scraper","input":{"startUrls":["https://www.facebook.com/groups/874728723021553"],"onlyPostsOlderThan":"2026-02-01","maxItems":3,"maxConcurrency":3},"wait":false}'poll
curl "https://cracked-ai-pearl.vercel.app/v1/runs/<runId>?wait=30" -H "Authorization: Bearer ck_live_..."cli
npx cracked-ai run -p apify -e /memo23/facebook-public-group-posts-scraper -i '{"startUrls":["https://www.facebook.com/groups/874728723021553"],"onlyPostsOlderThan":"2026-02-01","maxItems":3,"maxConcurrency":3}' -w 120mcp
run_tool({ provider: "apify", endpoint: "/memo23/facebook-public-group-posts-scraper", input: {"startUrls":["https://www.facebook.com/groups/874728723021553"],"onlyPostsOlderThan":"2026-02-01","maxItems":3,"maxConcurrency":3}, wait: false })Try it
Runs against your signed-in workspace balance. Sign in if you have not.