Facebook Group Posts Scraper
Pricing
from $5.00 / 1,000 facebook group post scrapeds
Facebook Group Posts Scraper
Scrape public Facebook group posts by group URL or ID, with post text, author, reaction, comment and share counts, media URLs, top comments and pagination cursors. No login or cookies needed.
Pricing
from $5.00 / 1,000 facebook group post scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
What is Facebook Group Posts Scraper — Text, Engagement & Comments?
Facebook Group Posts Scraper is an Apify Actor for public Facebook group content. It accepts one or more public group URLs or numeric group IDs and returns one dataset record per post. Each record can include post text, author details, publish time, reaction/comment/share counts, media URLs, top-comment previews, pagination cursors, and execution provenance fields such as source and scrape timestamp. The Actor is usable through Apify MCP and through the Apify API.
Best fit and connected workflows
This Actor fits workflows that start with a public Facebook group and end with structured post data for analysis, review, or downstream automation.
Use it when you want to:
- collect public group posts from a known group URL or group ID
- compare post activity using reaction, comment, and share counts
- capture author and media context alongside the post text
- resume a feed with a saved cursor from a previous run
- feed an AI agent or internal pipeline with stable JSON records
Connected workflows can stay inside the Facebook post surface:
- pass a returned post into Facebook Post Comments Scraper when you need deeper comment extraction for a specific post
- pass public reaction or profile data into Facebook Likes Scraper -- Public Reactions & Profiles when the next step is reaction or profile-oriented analysis
Practical scenario
Maya, a community researcher, starts with a public group URL for a local gardening group and sets a maximum post count for the run. The Actor returns rows with text, authorName, publishedAt, reactionCount, commentCount, shareCount, imageUrl, and topComments. Maya reviews the posts with the highest engagement, then opens the linked post URLs to compare recurring themes and decide which discussion thread to summarize next.
Input
| Field | Type | Purpose |
|---|---|---|
groupUrls | array[string] | One or more public Facebook group URLs |
groupIds | array[string] | Numeric Facebook group IDs when the URL is unknown |
maxPosts | integer | Maximum post records to save across all groups |
maxPagesPerGroup | integer | Maximum provider pages to request per group |
startCursor | string | Cursor from RUN_SUMMARY.nextCursors for resuming a feed |
sortBy | string | Provider-side ordering: RECENT_ACTIVITY, TOP_POSTS, CHRONOLOGICAL, CHRONOLOGICAL_LISTINGS |
dataSource | string | auto, provider, or browser |
providerOrder | string | The routing options listed in the input schema |
useBrowserFallback | boolean | Enables Playwright browser fallback when provider APIs are unavailable, empty, or disabled |
maxBrowserScrolls | integer | Maximum scrolls in browser fallback mode |
facebookCookies | string | Optional cookie input for browser fallback using an authorized session |
proxy | object | Proxy settings for browser fallback |
includeRawData | boolean | Adds the raw source object to each dataset row |
Focused input example
{"groupUrls": ["https://www.facebook.com/groups/homemakingtips/"],"maxPosts": 25,"maxPagesPerGroup": 4,"sortBy": "RECENT_ACTIVITY","dataSource": "auto","useBrowserFallback": true,"includeRawData": false}
Output
One dataset record represents one public Facebook group post.
| Field | Type | Purpose |
|---|---|---|
groupUrl | string | Canonical group URL used for the record |
groupId | string or null | Numeric group ID when available |
groupSlug | string or null | Group slug extracted from the URL |
sourceInput | string | Original input URL or group ID |
postId | string or null | Post identifier when available |
postUrl | string or null | Direct post permalink |
text | string or null | Post text or browser-extracted visible text |
authorName | string or null | Public author display name |
authorId | string or null | Public author identifier |
authorUrl | string or null | Public author profile URL |
publishedAt | string or null | ISO timestamp or provider timestamp string |
publishTime | integer or null | Provider Unix timestamp when available |
reactionCount | integer or null | Reaction total |
commentCount | integer or null | Comment total |
shareCount | integer or null | Share total |
videoViewCount | integer or null | Video views when available |
engagementCount | integer or null | Sum of reactions, comments, and shares when available |
imageUrl | string or null | Image or thumbnail URL |
videoUrl | string or null | Direct provider video URL |
videoDetails | object or null | Provider video metadata |
topComments | array or null | Top-comment preview objects |
sortBy | string | Sort mode used for the record |
page | integer | Provider page or browser fallback page number |
cursor | string or null | Cursor used for this page when available |
source | string | Data source used for the record |
scrapedAt | string | ISO timestamp when the row was saved |
rawPost | object or null | Raw source object when includeRawData is enabled |
Illustrative output record
{"groupUrl": "https://www.facebook.com/groups/homemakingtips/","groupId": "1234567890","groupSlug": "homemakingtips","sourceInput": "https://www.facebook.com/groups/homemakingtips/","postId": "2065680910795061","postUrl": "https://www.facebook.com/groups/homemakingtips/permalink/2065680910795061/","text": "Looking for ideas to organize a small pantry.","authorName": "Jane D.","authorId": "1000123456789","authorUrl": "https://www.facebook.com/profile.php?id=1000123456789","publishedAt": "2025-02-14T10:30:00Z","reactionCount": 42,"commentCount": 18,"shareCount": 3,"videoViewCount": null,"engagementCount": 63,"imageUrl": "https://example.com/image.jpg","videoUrl": null,"videoDetails": null,"topComments": [],"sortBy": "RECENT_ACTIVITY","page": 1,"cursor": "cursor_value","source": "provider","scrapedAt": "2025-02-14T10:31:00Z","rawPost": null}
How it works
The Actor accepts public Facebook group URLs or group IDs, then tries configured provider APIs first. The provider chain is the primary and fallback data providers, with a selectable order. If browser fallback is enabled, it can use a Playwright scrape path. Provider pagination returns up to 3 posts per request and uses cursors, which are exposed in execution summaries for resuming later. The Actor stores the dataset rows in the default dataset and writes RUN_SUMMARY and OUTPUT to the default key-value store.
Pricing
Facebook Group Posts Scraper — Text, Engagement & Comments uses Pay per event pricing with Apify platform usage included. The primary event is one saved Facebook group post. There is also a small actor-start event, and Apify platform usage is included in the event price. For the current pricing details, see the live Pricing tab on the Actor page.
For example, a run that saves ten posts creates ten post-scraped events, plus the actor-start event, and Apify platform usage is added according to the execution configuration.
Use with AI agents (MCP)
This Actor is available as an Apify Actor usable through Apify MCP. It provides structured public Facebook group post data that agent workflows can read, filter, summarize, or pass into follow-up tools.
Tool identity: khadinakbar/facebook-group-posts-scraper
Scrape the public Facebook group at
https://www.facebook.com/groups/homemakingtips/, return up to 20 recent posts, and include post text, author, counts, media URLs, and top comments. Use the dataset rows as the source of truth, then summarize the most engaging posts.
Output interpretation:
- each dataset row is one public group post
postUrlis the canonical link for record-level follow-upreactionCount,commentCount,shareCount, andengagementCounthelp rank activitytopCommentsgives a preview of visible provider comments when availablesource,cursor,page, andscrapedAtprovide provenance for agent reasoning
Provenance and scope:
- the Actor targets public Facebook group posts
- it accepts group URLs or group IDs
- it writes dataset rows plus execution summaries to key-value store records
- browser fallback is available when configured through the input
Pagination and cost guidance:
- provider responses return up to 3 posts per request
- use
maxPagesPerGroupto expand coverage in one run - reuse
RUN_SUMMARY.nextCursorswithstartCursorto continue a feed - event-based pricing means saved posts drive the main cost
API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('khadinakbar/facebook-group-posts-scraper').call({groupUrls: ['https://www.facebook.com/groups/homemakingtips/'],maxPosts: 10,sortBy: 'RECENT_ACTIVITY',});const dataset = client.dataset(run.defaultDatasetId);const { items } = await dataset.listItems({ clean: true });console.log(items);
Best results and outcome guidance
Start with a single public group URL or a small set of related group IDs when you are validating a workflow. Use RECENT_ACTIVITY for current discussion flow, or TOP_POSTS when you want engagement-ranked posts. Set maxPosts to the number of rows your pipeline needs, and raise maxPagesPerGroup when you want broader coverage from the same group feed. If you need to continue from a previous run, copy the cursor from RUN_SUMMARY.nextCursors into startCursor. When a downstream process only needs structured records, read the dataset items; when it also needs run context, read RUN_SUMMARY and OUTPUT from the default key-value store.
Continue the workflow
- Then use Facebook Groups Scraper to extend Facebook Group Posts Scraper — Text, Engagement & Comments research with a complementary content contract.
- Then use Facebook Groups Search Scraper to extend Facebook Group Posts Scraper — Text, Engagement & Comments research with a complementary discovery contract.
Design note
I found that the output contract includes both RUN_SUMMARY and OUTPUT in the default key-value store, which makes the Actor straightforward to use from both scripts and agents.
FAQ
How do I choose between group URLs and group IDs? Use a group URL when you have the canonical public link. Use a group ID when that is the identifier you already store in another system.
How do I continue a partially collected group feed? Read the cursor from RUN_SUMMARY.nextCursors and pass it back as startCursor.
Which field should I use for engagement ranking? engagementCount is the combined total of available reactions, comments, and shares. The individual counts are also available.
How do I connect this Actor to comment collection? Use the returned postUrl or post identifier with Facebook Post Comments Scraper when your workflow needs a post-level comment pass.
How do I connect this Actor to reaction or profile analysis? Pass returned Facebook records into Facebook Likes Scraper -- Public Reactions & Profiles when the next step needs public reaction or profile data.
Responsible use
This Actor is designed for public Facebook group content and for data you are authorized to access. Respect Facebook's terms, applicable laws, and any rights or permissions that apply to the content you process. Use authorized sessions only for browser fallback, and keep your collection aligned with your organization's compliance and data-handling requirements.