Apify Store
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

FieldTypeDescription
startUrls*arrayFull URLs to public Facebook groups you want to scrape.
searchstringOnly 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.
searchKeywordByYearintegerOptional. 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.
includeCommentsbooleanIf enabled, extracts the top/most interesting comments for each post. default false
enrichMarketplaceListingsbooleanIf 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
monitoringModebooleanIf 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
viewOptionstring (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"
onlyPostsNewerThanstringUse 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.
onlyPostsNewerThanHoursintegerOptional. Keep only posts from the last N hours. If set, this overrides the date field above.
onlyPostsOlderThanstringOptional 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.
maxItemsintegerMaximum number of posts that will be scraped per group. default 100
maxConcurrencyintegerMaximum number of pages that can be processed at the same time. default 10
minConcurrencyintegerMinimum number of pages that will be processed at the same time. default 1
maxRequestRetriesintegerNumber of times the crawler will retry a failed request before giving up. default 3
postsPerRequestintegerAdvanced: 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
proxyobjectLeave 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 120
mcp
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.