Facebook Groups Posts Scraper
Pricing
from $3.99 / 1,000 results
Facebook Groups Posts Scraper
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
ScraperX
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
Facebook Groups Posts Scraper โ Extract Public Group Posts, Authors & Engagement (No Login)
Collect posts from public Facebook groups at scale. Paste one or more group URLs and get a clean dataset with the post text, direct post link, author profile, publication date, like and comment counts, and every photo, video or link attachment.
No cookies, no Facebook login, no session tokens. Just group URLs and a limit.
What you get
| ๐ Post data | ๐ค Author data | ๐ Attachments |
|---|---|---|
| Post ID and permalink | Profile name | Photos with URI, width, height |
| Full post text | Profile URL | OCR / accessibility caption text |
| Publication date | Profile ID | Videos with URI and dimensions |
| Like / reaction count | Profile picture URL | Link previews |
| Comment count | Attachment IDs and media URLs | |
| Source group URL |
Key features
- No authentication required. The Actor reads public group feeds the way a logged-out visitor does โ you never hand over cookies or risk an account.
- Bulk input. Feed it many groups at once: full URLs (
https://www.facebook.com/groups/cheapmealideas/), group slugs (cheapmealideas) or numeric group IDs. Anything short is expanded into a proper group URL automatically. - Smart "All sorts" mode. The default
ALLsort runs the group feed through three different sort orders and merges the results, which surfaces substantially more unique posts than any single ordering โ the best way to actually hit your per-group post target. - Four sort orders.
ALL(maximum coverage),TOP_POSTS(most engaged first),CHRONOLOGICAL(newest first) andRECENT_ACTIVITY(latest comments and reactions first). - Real engagement numbers. Every post carries its like/reaction count and comment count, so you can rank content by traction rather than guessing.
- Full media capture. Photos come with direct URIs and pixel dimensions plus Facebook's accessibility caption (useful OCR-style text), videos with their URIs, and link posts with their preview data.
- Deep pagination. The Actor follows the group feed's own cursor, page after page, until your
maxPoststarget is reached. - Live streaming output. Posts land in the dataset as they are collected.
Use cases
- Market & audience research โ find out what people in a niche actually ask, complain about and recommend, in their own words.
- Lead generation โ spot posts expressing intent ("looking for a plumber in Leeds") and reach the author through their public profile link.
- Content ideas & SEO โ mine real questions from communities to build content that answers them.
- Trend tracking โ monitor a group weekly and watch which topics rise.
- Brand & competitor monitoring โ see how your product, or a competitor's, is discussed inside communities.
- Community management & moderation research โ measure engagement patterns and posting volume.
- Recruitment & talent sourcing โ track job and hiring posts in industry groups.
- Academic and social research โ build datasets of public community discourse with engagement metrics attached.
How it works
- You provide group URLs, slugs or IDs and a per-group post limit.
- The Actor resolves each group to its internal ID and picks up the tokens and cursor it needs from the public group page.
- The group feed is paginated with Facebook's own cursor mechanism, in your chosen sort order (or all three, in
ALLmode). - Each post node is normalised into a flat row โ text, author, date, permalink, engagement counts and attachments.
- Rows stream into the dataset, then the Actor moves on to the next group.
Quick start
- Open the group on Facebook (it must be public) and copy its URL.
- Paste it into Group URLs, Usernames, or Keywords โ one per line for several groups.
- Set Maximum Posts per Group (minimum 10).
- Leave Sort Order on
ALLfor the widest coverage. - Click Start and export the Output tab as CSV, Excel or JSON.
Minimal input
{"startUrls": ["https://www.facebook.com/groups/cheapmealideas/"],"maxPosts": 50}
Input configuration
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array | โ (required) | One or more Facebook groups. Accepts full group URLs, group slugs (cheapmealideas) or numeric group IDs โ short values are expanded to https://www.facebook.com/groups/โฆ automatically. |
maxPosts | integer | 10 | How many posts to collect per group. Minimum 10. Raise it for deeper analysis. |
sortBy | string | ALL | ALL โ combine three sort orders for maximum unique posts (recommended). TOP_POSTS โ most-engaged first. CHRONOLOGICAL โ newest first. RECENT_ACTIVITY โ latest comments/reactions first. |
proxyConfiguration | object | off | Optional Apify Proxy settings for extra stability on large runs. Defaults work for most jobs. |
Public groups only. Private and closed groups are not accessible without membership, and this Actor does not attempt to bypass that.
Output data
One row per post.
| Field | Type | Description |
|---|---|---|
id | string | Facebook post ID. |
url | string | Direct permalink to the post. |
text | string | Full post text. |
date | string | When the post was published. |
user | object | { id, name, profileUrl, profilePic } for the post author. |
likesCount | number | Reactions on the post. |
commentsCount | number | Comments on the post. |
attachments | array | Photos, videos and link previews attached to the post (see below). |
facebookUrl | string | The group URL the post came from. |
source_group | string | Same group reference, convenient for grouping in exports. |
feedbackId | string | Facebook's internal feedback object ID for the post. |
Attachment shapes
- Photo โ
{ "__typename": "Photo", "photo_image": { "uri", "width", "height" }, "url", "id", "ocrText" }.ocrTextis Facebook's accessibility caption, which often describes what is in the image. - Video โ
{ "__typename": "Video", "video": { "uri", "width", "height" }, "url", "id" }. - Link โ link preview data for posts that share an external URL.
Example output
{"id": "1234567890123456","url": "https://www.facebook.com/groups/cheapmealideas/posts/1234567890123456/","text": "Batch-cooked 12 portions of chilli for under ยฃ14 this week โ recipe in the comments!","date": "2026-08-04T18:22:11.000Z","user": {"id": "100001234567890","name": "Jamie Example","profileUrl": "https://www.facebook.com/jamie.example","profilePic": "https://scontent.xx.fbcdn.net/โฆ"},"likesCount": 412,"commentsCount": 87,"attachments": [{"__typename": "Photo","photo_image": { "uri": "https://scontent.xx.fbcdn.net/โฆ", "width": 1080, "height": 1350 },"url": "https://www.facebook.com/photo/?fbid=โฆ","id": "9876543210","ocrText": "May be an image of food and text that says 'CHILLI'"}],"facebookUrl": "https://www.facebook.com/groups/cheapmealideas/","source_group": "https://www.facebook.com/groups/cheapmealideas/","feedbackId": "ZmVlZGJhY2s6โฆ"}
Illustrative values โ a live run returns current Facebook data.
Usage examples
Monitor several communities in one run
{"startUrls": ["https://www.facebook.com/groups/cheapmealideas/","https://www.facebook.com/groups/mealprepideas/","budgetcookinguk"],"maxPosts": 200,"sortBy": "ALL"}
Newest posts only, for daily monitoring
{"startUrls": ["https://www.facebook.com/groups/yourniche/"],"maxPosts": 100,"sortBy": "CHRONOLOGICAL"}
Save as a Task, attach a daily Schedule, and deduplicate on id to get only new posts.
Find the best-performing content in a niche
{"startUrls": ["https://www.facebook.com/groups/yourniche/"],"maxPosts": 500,"sortBy": "TOP_POSTS"}
Then sort your export by likesCount and commentsCount.
Lead mining
Run with a high maxPosts, export to CSV, and filter text for intent phrases ("looking for", "can anyone recommend", "need help with"). The user.profileUrl column is your contact path.
Run it from your own code
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run = client.actor("scraperx/facebook-groups-posts-scraper").call(run_input={"startUrls": ["https://www.facebook.com/groups/cheapmealideas/"],"maxPosts": 100,"sortBy": "ALL",})for post in client.dataset(run["defaultDatasetId"]).iterate_items():print(post["user"]["name"], post["likesCount"], post["text"][:80])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_API_TOKEN>' });const run = await client.actor('scraperx/facebook-groups-posts-scraper').call({startUrls: ['https://www.facebook.com/groups/cheapmealideas/'],maxPosts: 100,sortBy: 'ALL',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
cURL
curl -X POST "https://api.apify.com/v2/acts/scraperx~facebook-groups-posts-scraper/runs?token=<YOUR_APIFY_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"startUrls":["https://www.facebook.com/groups/cheapmealideas/"],"maxPosts":100}'
Integrations
Send posts to Google Sheets, Airtable, Slack, Make, Zapier, Google Drive or your own endpoint via webhooks, and use Schedules for continuous community monitoring.
Pricing
Pay-per-event: a small Actor-start charge plus a charge per post row delivered to your dataset. You pay for the posts you receive, not for run time. Current rates are on the Pricing tab of this Actor's page, and Apify shows an estimated cost before and during every run.
Limits & good to know
- Public groups only. If a group requires membership to view its posts, it cannot be scraped โ by anyone, without an account.
maxPostsis per group, so five groups at 200 posts each can return up to 1,000 rows.- Minimum 10 posts per group.
- Facebook limits how far back a public group feed can be paged. Very old posts may be unreachable regardless of your limit;
ALLsort mode maximises what you can get. - Media URIs point at Facebook's CDN and expire โ download assets promptly if you need to keep them.
- Comment texts are not part of this Actor's output; you get comment counts. Post text, author and attachments are the field set.
- Default run options are 4 GB memory and a 1-hour timeout โ raise the timeout for many groups or high limits.
FAQ
Do I need Facebook cookies or a login? No. The Actor works entirely without authentication.
Can it scrape private or closed groups? No. Only public groups are accessible.
What can I paste into the input?
A full group URL, the group slug (the part after /groups/), or the numeric group ID. All three work.
Which sort order should I use?
ALL in most cases โ it merges three orderings and returns the most unique posts. Use CHRONOLOGICAL when you only care about what is new.
Does it return comments? It returns the comment count per post, not the individual comment texts.
Why did I get fewer posts than requested?
Facebook's public feed for that group ran out of reachable posts. Try sortBy: "ALL", or add more groups.
Can I get the poster's contact details? You get the author's public profile name, ID, picture and profile URL. Nothing private is collected.
Which export formats are supported?
JSON, CSV, Excel (XLSX), XML and RSS. JSON preserves the nested user and attachments objects.
Legal & responsible use
This Actor collects only publicly visible content from public Facebook groups โ the same posts any logged-out visitor can read. It does not log in, join groups, or access private content. Posts and profile data relate to real people: if you process it, make sure you have a lawful basis under GDPR and comparable rules, and respect Facebook's terms and applicable law.
Support
Need extra fields, comment texts, or a custom community-monitoring pipeline? Open an issue on the Issues tab.

