Facebook Groups Scraper
Pricing
from $3.99 / 1,000 results
Facebook Groups Scraper
Facebook Groups Scraper extracts public Facebook group data, including group names, descriptions, categories, member counts, URLs, locations, and other available details. Automate group research, community discovery, competitor analysis, audience research, and lead generation.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
ScraperForge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
Facebook Groups Scraper β Public Group Posts, Reactions, Top Comments & Media
Extract posts from public Facebook groups with the detail that matters: full post text, author, permalink, timestamp, a reaction breakdown (likes vs loves vs total), share and comment counts, photo attachments with OCR-style captions, and the top comments on each post.
Four sorting strategies, a date cut-off, keyword and year filters, and optional cookie login for content behind a login wall.
What is Facebook Groups Scraper?
This Actor reads a public Facebook group's feed through Facebook's own GraphQL interface and turns it into structured rows.
Where a basic group scraper gives you text and a like count, this one preserves the things that make community data actually analysable: separate reaction types, share counts, the top comments on each post with their authors and like counts, and image attachments with Facebook's accessibility caption (which frequently describes what is in the picture).
It runs anonymously by default. A cookie string is accepted for cases where Facebook gates content behind a login wall, but it is entirely optional.
What data can you extract?
| Group | Fields |
|---|---|
| π Post | id, legacyId, url, text, time, inputUrl |
| π€ Author | user.id, user.name |
| β€οΈ Reactions | likesCount (total), reactionLikeCount (π), reactionLoveCount (β€οΈ), topReactionsCount |
| π¬ Engagement | commentsCount, sharesCount, feedbackId |
| π§΅ Top comments | topComments[] β text, likesCount, threadingDepth |
| πΌοΈ Attachments | attachments[] β image.uri, image.width, image.height, id, thumbnail, ocrText, owner and album/media-set links |
| π·οΈ Group | groupTitle, facebookId, facebookUrl, pageAdLibrary |
Why teams scrape Facebook groups
For product and market research
Community posts describe problems before they reach a support ticket or a review. Because reaction types are separated, you can tell polite acknowledgement (π) from genuine enthusiasm (β€οΈ) β a distinction that a single "likes" number hides completely.
For lead generation
Posts asking for recommendations are buying intent in plain language. Every row carries the author's name and ID plus a working permalink, so an intent search converts directly into a follow-up list.
For buy/sell and marketplace-style groups
The CHRONOLOGICAL_LISTINGS sort exists specifically for groups where people post listings rather than discussion. Combined with a short date cut-off, it becomes a live feed of new offers in a local community.
For brand and competitor monitoring
Seeing your product mentioned inside a community is the highest-signal social listening there is β these are unprompted opinions, not survey answers. topComments shows how the group reacted.
For content strategy and SEO
TOP_POSTS sorting ranks a community's content by what actually landed. The phrasing people use in high-engagement posts is the phrasing to use in your own content.
How to scrape a Facebook group step by step
- Open a public Facebook group and copy its URL.
- Paste it into Facebook Group URLs β one per line for several groups.
- Set Number of Posts to Scrape, or leave it empty to collect everything available.
- Pick a Post Sorting Strategy β
CHRONOLOGICALfor monitoring,TOP_POSTSfor the best content. - Optionally set Posts Newer Than to bound the run by date.
- Click Start, then export the Output tab as JSON (recommended) or CSV.
β¬οΈ Input
Example input
{"startUrls": ["https://www.facebook.com/groups/cheapmealideas/"],"resultsLimit": 100,"viewOption": "CHRONOLOGICAL","onlyPostsNewerThan": "30 days"}
Input reference
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array | β (required) | Public Facebook group URLs. Private groups require authentication and are not supported anonymously. |
resultsLimit | integer | 10 | Maximum posts per group. Leave empty to collect all available posts. |
viewOption | string | CHRONOLOGICAL | CHRONOLOGICAL (newest first), RECENT_ACTIVITY (most actively discussed), TOP_POSTS (highest engagement), CHRONOLOGICAL_LISTINGS (buy/sell groups). |
onlyPostsNewerThan | string | β | Stop when posts are older than this. Absolute (2026-01-15) or relative (7 days, 2 weeks, 1 month). |
searchGroupKeyword | string | β | Keyword filter inside the group. See the note below. |
searchGroupYear | string | β | Restrict to a year (e.g. 2026). Works best combined with a keyword. |
proxyConfiguration | object | Apify Residential | Residential rotation with automatic retry. Recommended for anything at scale. |
cookieString | string | β | Optional. A Facebook cookie header including at least c_user and xs, for content behind a login wall. Use a dedicated secondary account. |
Be realistic about in-group search. Facebook's logged-out group search is heavily restricted, and full words frequently return nothing. The pattern that works is 1β2 letters plus a year filter. For precise topic filtering, it is almost always better to scrape broadly and filter the
textcolumn afterwards in your spreadsheet or code.
Sorting note: the post limit behaves most predictably with the chronological ("new posts") ordering.
β¬οΈ Output
Example output
{"id": "UzpfSTEwMDAwMTIzNDU2Nzg5MDoxMjM0NTY3ODkw","legacyId": "1234567890123456","url": "https://www.facebook.com/groups/cheapmealideas/posts/1234567890123456/","text": "Weekly shop came to Β£31 for four people. Full breakdown below π","time": "2026-08-06T07:14:52.000Z","user": { "id": "100001234567890", "name": "Jamie Example" },"likesCount": 512,"reactionLikeCount": 431,"reactionLoveCount": 74,"topReactionsCount": 505,"commentsCount": 96,"sharesCount": 23,"topComments": [{ "text": "This is genuinely useful, thank you!", "likesCount": "18", "threadingDepth": 0 }],"attachments": [{"__typename": "Photo","image": { "uri": "https://scontent.xx.fbcdn.net/β¦", "width": 1080, "height": 1440 },"id": "9876543210","ocrText": "May be an image of text that says 'WEEKLY SHOP Β£31'"}],"groupTitle": "Cheap Meal Ideas","facebookId": "123456789012345","inputUrl": "https://www.facebook.com/groups/cheapmealideas/"}
Illustrative values β a live run returns current Facebook data.
Field notes
likesCountis the total reaction count, whilereactionLikeCountandreactionLoveCountbreak out the two most common types.ocrTextis Facebook's accessibility caption for an image β often a usable description of the picture's contents, which makes image posts searchable.topCommentsreturns up to 2 comments per post. It is context, not a full comment export.
Usage recipes
Daily monitoring β only what is new
{"startUrls": ["https://www.facebook.com/groups/yourniche/"],"viewOption": "CHRONOLOGICAL","onlyPostsNewerThan": "1 day","resultsLimit": 500}
Save as a Task, attach a daily Schedule, and deduplicate on id between runs.
Best-performing content in a community
{"startUrls": ["https://www.facebook.com/groups/yourniche/"],"viewOption": "TOP_POSTS","resultsLimit": 300}
Sort the export by likesCount and commentsCount, then read the top 20 posts β that is your content brief.
Local buy/sell listings feed
{"startUrls": ["https://www.facebook.com/groups/localbuysell/"],"viewOption": "CHRONOLOGICAL_LISTINGS","onlyPostsNewerThan": "7 days","resultsLimit": 1000}
Historical pull for one year
{"startUrls": ["https://www.facebook.com/groups/yourniche/"],"searchGroupKeyword": "a","searchGroupYear": "2025","resultsLimit": 500}
Multi-group sweep
{"startUrls": ["https://www.facebook.com/groups/groupone/","https://www.facebook.com/groups/grouptwo/","https://www.facebook.com/groups/groupthree/"],"resultsLimit": 200,"viewOption": "RECENT_ACTIVITY"}
How does this compare to Facebook's Graph API?
The Graph API can read group content only for groups where an admin has installed your reviewed app. There is no approved route to reading an arbitrary public group you do not administer, and Facebook has narrowed those permissions repeatedly.
This Actor works from the public group feed that a logged-out visitor can read, which is why it needs no app, no review and no admin cooperation. In exchange it is bound by what Facebook renders publicly and by anti-automation defences β hence residential proxies and realistic expectations about depth.
Integrate and automate
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run = client.actor("scraperforge/facebook-groups-scraper").call(run_input={"startUrls": ["https://www.facebook.com/groups/cheapmealideas/"],"resultsLimit": 100,"viewOption": "CHRONOLOGICAL","onlyPostsNewerThan": "30 days",})for post in client.dataset(run["defaultDatasetId"]).iterate_items():print(post["time"], post["user"]["name"], post["likesCount"], "|", post["text"][:70])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_API_TOKEN>' });const run = await client.actor('scraperforge/facebook-groups-scraper').call({startUrls: ['https://www.facebook.com/groups/cheapmealideas/'],resultsLimit: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
REST API
curl -X POST "https://api.apify.com/v2/acts/scraperforge~facebook-groups-scraper/runs?token=<YOUR_APIFY_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"startUrls":["https://www.facebook.com/groups/cheapmealideas/"],"resultsLimit":100}'
n8n, Make, Zapier and AI agents
Call the Actor from n8n, Make, Zapier or an MCP-capable agent through Apify's integrations β for instance, an agent that reads new community posts each morning and summarises emerging themes.
Schedules and webhooks
Combine a Schedule with onlyPostsNewerThan for a continuous monitoring loop, and use webhooks or the Google Sheets / Airtable / Slack / Google Drive integrations to move results where your team works.
Pricing and what you are charged for
Pay-per-event: a small Actor-start charge plus a charge per post row delivered to your dataset. Comments and reactions ride inside the post row, so they do not add to the billed count.
Cost control: pair onlyPostsNewerThan with a schedule so recurring runs only pay for genuinely new posts.
Current rates are on the Pricing tab of this Actor's page, and Apify shows an estimate before and during every run. Residential proxy traffic is billed separately by the platform.
Limits, reliability and blocking
- Public groups only without cookies. Private and closed groups require membership, and this Actor does not attempt to bypass that.
- In-group keyword search is weak for logged-out sessions. Prefer scraping broadly and filtering
text, or use the 1β2 letter plus year approach. resultsLimitis per group, so five groups at 200 posts can produce 1,000 rows.- Facebook caps how far back a public feed can be paged. Very old posts may be unreachable regardless of your limit.
topCommentsreturns up to 2 comments per post β use the dedicated comments Actor when you need full threads.- Media URIs expire. They point at Facebook's CDN; download assets promptly if you need the files.
- If you supply
cookieString, use a dedicated secondary account. The cookie grants access to that account, and automated activity can get accounts restricted. - Default run options are 4 GB memory and a 1-hour timeout; raise the timeout for large multi-group runs.
Is it legal to scrape Facebook groups?
This Actor collects publicly visible content from public Facebook groups β the same posts any logged-out visitor can read. It does not join groups, bypass privacy settings, or access private data.
Posts, comments and author names are personal data about identifiable people, and community discussions often touch on health, finances or family life. If you process this data, ensure you have a lawful basis under GDPR and comparable regimes, store only what you need, keep it secure, honour deletion requests, and do not reuse community conversations for unsolicited marketing. If you supply cookies, you are responsible for that account's use under Facebook's terms.
β Frequently asked questions
Do I need to log in?
No. The Actor runs anonymously on public groups. cookieString is optional and only helps when Facebook puts content behind a login wall.
Can it scrape private or closed groups?
Not anonymously. Only public group content is accessible without membership.
Does it return comments?
It returns up to two top comments per post with author, text, like count and threading depth, plus the total commentsCount. For complete comment threads and nested replies, use the dedicated comments Actor linked below.
What is CHRONOLOGICAL_LISTINGS for?
Buy/sell groups, where Facebook renders listings differently from ordinary discussion posts.
Why does keyword search return nothing?
Facebook's logged-out in-group search barely works with full words. Use one or two letters plus a year, or filter the exported text column instead.
What is the difference between likesCount and reactionLikeCount?
likesCount is the total across all reaction types; reactionLikeCount is only π and reactionLoveCount is only β€οΈ.
What is ocrText?
Facebook's accessibility caption for an attached image. It often describes the image contents, which makes image-heavy posts searchable by text.
How do I get only new posts each day?
Set onlyPostsNewerThan to 1 day and schedule the run.
Can I scrape everything in a group?
Leave resultsLimit empty to go as deep as Facebook's feed allows. Very old history may still be capped by Facebook.
Which export format should I use?
JSON keeps user, topComments and attachments nested. CSV works if you only need text and engagement counts.
π Related scrapers
- Facebook Group Posts and Details Scraper with Comments β the same groups, with full comment threads and nested replies.
- Facebook Groups Search Scraper β find public groups worth monitoring by keyword.
- Facebook Posts Search Scraper β keyword search across public Facebook posts.
- Facebook Search Scraper β discover business pages by category and location.
Browse the full collection on the ScraperForge profile.
π¬ Feedback
Need full comment threads, reaction-type breakdowns beyond like and love, or a custom monitoring pipeline? Open an issue on the Issues tab of this Actor.