Facebook Groups Scraper
Pricing
from $1.20 / 1,000 group posts
Facebook Groups Scraper
Scrape posts from public Facebook groups without login: text, author, photos, videos, reactions, comment and share counts, plus optional comments and replies. Filter by date, sort by newest or top posts, and export clean JSON, CSV or Excel. Pay only for results.
Pricing
from $1.20 / 1,000 group posts
Rating
0.0
(0)
Developer
Coder
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Extract posts from public Facebook groups into clean, structured JSON — text, author, media, reaction breakdowns, engagement counts, and optional comments with replies.
Use it for community monitoring, social listening, market research, content archiving, and AI-ready datasets — without manually scrolling group feeds.
For Facebook Pages or profiles, use the Facebook Posts Scraper. For comments on known post URLs only, use the Facebook Comments Scraper. For Marketplace listings, use the Facebook Marketplace Scraper.
What you get
Each dataset row is one group post:
| Section | What it contains |
|---|---|
| Identity | Post URL, post ID, group ID / title, and the input link that produced the row |
| Content | Post text, publish time, and author (name, profile URL, profile picture when available) |
| Engagement | Likes, comments count, shares, and reaction breakdown (Like, Love, Care, Haha, Wow, Sad, Angry) |
| Media | Photo / video attachments, photo counts, and shared links when present |
| Comments $ | Optional nested comments with replies when comment collection is enabled |
Results stream to the dataset as posts are collected, so you can preview progress before the run finishes.
Quick start on Apify
- Open the Actor in the Apify Console.
- Add one or more public Facebook group links (full URLs, vanity names, or numeric IDs).
- Set Maximum posts per group (default
20). - Optionally choose Feed sorting and a Only posts newer than cutoff.
- Leave Add comments and replies $ off for the fastest, cheapest runs — or enable it when you need discussion threads.
- Click Start and open the Dataset tab.
Example input (posts only):
{"startUrls": ["https://www.facebook.com/groups/dogspotting/","https://www.facebook.com/groups/3277056332339849/"],"maxPosts": 25,"viewOption": "CHRONOLOGICAL","includeComments": false}
Example input (posts + comments and replies):
{"startUrls": ["https://www.facebook.com/groups/dogspotting/"],"maxPosts": 10,"viewOption": "RECENT_ACTIVITY","includeComments": true,"maxComments": 15,"includeReplies": true,"maxRepliesPerComment": 5,"commentsSortBy": "newest"}
Input parameters
Facebook group links
| Field | startUrls |
| Type | List of strings |
| Required | Yes |
Add one public group per row. Supported formats in the same run:
- Full URLs:
https://www.facebook.com/groups/dogspotting/ - Mobile / web hosts:
m.facebook.com,web.facebook.com - Numeric IDs:
3277056332339849 - Vanity names:
dogspotting - Post, permalink, or tab links (About, Media, …) — resolved to the parent group feed
Duplicate links that resolve to the same group are scraped once. Limits below apply per group.
Maximum posts per group
| Field | maxPosts |
| Default | 20 |
Maximum number of posts to collect from each group.
Feed sorting
| Field | viewOption |
| Default | CHRONOLOGICAL |
| Value | Meaning |
|---|---|
CHRONOLOGICAL | New posts (chronological) |
RECENT_ACTIVITY | Newest activity |
TOP_POSTS | Most relevant (top posts) |
Only posts newer than
| Field | onlyPostsNewerThan |
| Optional | Yes |
Stop paginating a group once older posts are reached. Accepts:
- Absolute date:
2026-09-01 - Relative:
7 days,2 weeks,1 month
Leave empty to collect without a date cutoff.
Comments and replies $
Fields marked with $ are billed separately from posts: each delivered comment or reply counts as one comment event.
| Field | Description | Default |
|---|---|---|
includeComments $ | Collect comments (and replies, when enabled) for each post | false |
maxComments $ | Maximum top-level comments per post | 10 |
includeReplies $ | Also collect replies under each top-level comment | true |
maxRepliesPerComment $ | Maximum replies under each top-level comment | 5 |
commentsSortBy | newest, most_relevant, or all_comments | newest |
Tips
- Keep comments off for feed-only monitoring.
- Use a lower
maxComments/maxRepliesPerCommenton busy groups to control cost and runtime. - Replies add conversation context but increase runtime on active threads.
Output
Each dataset item is one Facebook group post.
Example output shape
{"facebookUrl": "https://www.facebook.com/groups/dogspotting/","inputUrl": "https://www.facebook.com/groups/dogspotting/","groupId": "10487409466","groupTitle": "Dogspotting","url": "https://www.facebook.com/groups/dogspotting/posts/10166216103904467/","legacyId": "10166216103904467","time": "2026-09-23T12:59:53Z","timestamp": 1790168393,"text": "This dog is helping mum operate the cash desk…","user": {"id": "…","name": "Example Author","profileUrl": "https://www.facebook.com/…","profilePic": "https://…"},"likesCount": 122,"commentsCount": 2,"sharesCount": 0,"reactionLikeCount": 94,"reactionLoveCount": 28,"photoCount": 2,"attachments": [],"comments": [{"legacyId": "10166216852844467","text": "Working hard","createdAt": "2026-09-23T16:56:38Z","author": {"name": "Example Commenter"},"replyCount": 1,"replies": [{"legacyId": "…","text": "So cute!","createdAt": "2026-09-23T17:01:00Z","author": {"name": "Example Reply"}}]}]}
When comments are disabled, the comments array is omitted or empty.
Best for
- Community and brand monitoring in public Facebook groups
- Tracking engagement and reaction mix over time
- Research on topics, products, or local communities
- Archiving public group discussions
- Feeding structured social data into BI, NLP, or AI pipelines
How to use
- Start with a small
maxPosts(for example5) on one known-public group to validate output. - Add more groups once the shape looks right.
- Enable comments only when you need conversation text — it increases runtime and cost.
- Use
onlyPostsNewerThanfor scheduled runs that should focus on recent activity. - Export the dataset as JSON, CSV, or Excel, or pull it through the Apify API.
FAQ
Does this work on private groups?
No. Only public groups that are visible without logging in are supported.
Can I mix vanity names and full URLs?
Yes. Put them in the same startUrls list; each is normalized to the group feed.
Why are some commentsCount values higher than the comments array?
commentsCount is Facebook’s total for the post (often including replies). The comments array only contains what was collected under your maxComments / maxRepliesPerComment settings.
A group was skipped with "not available" — why?
Facebook returns its generic "content isn't available" page for groups that were deleted, renamed, or switched to private. The Actor reports that group and continues with the rest of your list instead of returning an empty dataset without explanation.
How long does a run take?
Runtime depends mainly on the number of groups, maxPosts, and whether comments/replies are enabled.
Are results streamed?
Yes. Posts are pushed to the dataset as they are collected, so you can inspect early rows while the run continues.
Pricing notes
- Posts are billed per successful post written to the dataset.
- Comments and replies $ are billed per delivered comment or reply when that section is enabled.
- Empty attempts, failed fetches, and filtered-out rows are not billed as results.
Exact prices are shown on the Actor’s Pricing tab in the Apify Store.
Responsible use
Use this Actor only for publicly available content and ensure your use complies with applicable laws, regulations, and platform terms for your jurisdiction and use case.
Troubleshooting
- Confirm the group opens in a private/incognito browser window without logging in.
- Test with a small
maxPostsvalue first. - If a group returns nothing, try another known-public group to confirm the run environment.
- For comment-heavy runs, lower
maxCommentsandmaxRepliesPerCommentif the run is slow or costly.