Facebook Groups Scraper
Pricing
from $4.00 / 1,000 facebook group post scrapeds
Facebook Groups Scraper
Scrape public Facebook group posts by group URL or group ID. Export post text, author, engagement counts, media URLs, top comments, and pagination cursors. MCP/API-ready.
Pricing
from $4.00 / 1,000 facebook group post scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
12
Total users
2
Monthly active users
8 days ago
Last modified
Categories
Share
What is Facebook Groups Scraper?
Facebook Groups Scraper by khadinakbar/facebook-groups-scraper is an Apify Actor for public Facebook group posts. It accepts public Facebook group URLs or numeric group IDs, then saves one dataset record per post. Each record can include post text, author details, publish time, reaction, comment, share, and video-view counts, media URLs, top-comment previews, pagination cursor details, source, and scrape timestamp. The Actor is usable through Apify API and Apify MCP.
Best fit and connected workflows
Use this Actor when your workflow begins with a public Facebook group and you want post-level records for review, enrichment, routing, or agent processing.
Good workflow matches include:
- Monitoring a public group feed by URL or group ID
- Collecting post text and engagement counts for analysis
- Resuming a provider-backed crawl with a saved cursor from
RUN_SUMMARY.nextCursors - Passing a returned post into Facebook Post Comments Scraper when you want comment expansion for a specific public post
- Passing a returned post into Facebook Likes Scraper - Public Reactions & Profiles when the next step is reaction or profile detail around that post
What one record means
One dataset item represents one public Facebook group post saved from one requested group feed. The record is anchored to the group URL, includes the original source input, and may carry post, author, engagement, media, and pagination fields depending on what the configured data source returns.
Practical scenario
A social media manager has a public Facebook group URL for a community topic and wants a spreadsheet of recent posts. They enter the group URL, set maxPosts to 50, and keep sortBy on recent activity. The dataset returns rows with postUrl, text, authorName, publishedAt, reactionCount, commentCount, shareCount, and engagementCount. The manager uses those fields to review discussion themes and then opens the most relevant post in a follow-up workflow.
Input
| Field | Type | Description |
|---|---|---|
groupUrls | array | One or more public Facebook group URLs, for example https://www.facebook.com/groups/homemakingtips/. |
groupIds | array | Optional numeric Facebook group IDs when you know the ID and want to start from that value. |
maxPosts | integer | Maximum number of group post records to save across all groups. Default 100, range 1 to 3000. |
maxPagesPerGroup | integer | Maximum provider pages per group. Provider APIs currently return up to 3 posts per request and paginate with a cursor. Default 5, range 1 to 200. |
startCursor | string | Optional provider pagination cursor. Use a cursor from RUN_SUMMARY.nextCursors to resume a group feed. |
sortBy | string | Provider-side Facebook group post ordering. Values: RECENT_ACTIVITY, TOP_POSTS, CHRONOLOGICAL, CHRONOLOGICAL_LISTINGS. |
dataSource | string | Selects auto, provider, or browser. |
providerOrder | string | Chooses which managed provider API is tried first: the routing options listed in the input schema. |
useBrowserFallback | boolean | Enables a Playwright browser scrape when provider APIs are unavailable, empty, or disabled. |
maxBrowserScrolls | integer | Maximum page scrolls in browser fallback mode. Default 8, range 0 to 50. |
facebookCookies | string | Optional JSON cookie array or raw Cookie header for browser fallback. |
proxy | object | Proxy settings for browser fallback. Default uses Apify Proxy with the RESIDENTIAL group. |
includeRawData | boolean | Includes the raw source object in each dataset row for debugging and downstream parsing. |
Example input
{"groupUrls": ["https://www.facebook.com/groups/homemakingtips/"],"maxPosts": 25,"maxPagesPerGroup": 4,"sortBy": "RECENT_ACTIVITY","dataSource": "auto","useBrowserFallback": true,"includeRawData": false}
Output
Each dataset row is one scraped public Facebook group post.
| Field | Type | Description |
|---|---|---|
groupUrl | string | Canonical Facebook group URL used for the record. |
groupId | string or null | Numeric Facebook group ID when available. |
groupSlug | string or null | Group slug extracted from a Facebook group URL. |
sourceInput | string | Original input URL or group ID. |
postId | string or null | Facebook post identifier when available. |
postUrl | string or null | Direct Facebook group post URL. |
text | string or null | Post text or visible browser-extracted text. |
authorName | string or null | Public post author display name when available. |
authorId | string or null | Public author identifier when available. |
authorUrl | string or null | Public author profile URL when available. |
publishedAt | string or null | ISO timestamp or provider timestamp string. |
publishTime | integer or null | Provider Unix timestamp when available. |
reactionCount | integer or null | Total reaction count when available. |
commentCount | integer or null | Total comment count when available. |
shareCount | integer or null | Total share count when available. |
videoViewCount | integer or null | Video view count when available. |
engagementCount | integer or null | Sum of available reactions, comments, and shares. |
imageUrl | string or null | Post image or video thumbnail URL when available. |
videoUrl | string or null | Direct provider video URL when available. |
videoDetails | object or null | Provider video metadata when available. |
topComments | array or null | Provider top-comment preview when available. |
sortBy | string | Sort mode requested for this record. |
page | integer | Provider page or browser fallback page number. |
cursor | string or null | Cursor used to request this page when available. |
source | string | Data source used for this record. |
scrapedAt | string | ISO timestamp when this record was saved. |
rawPost | object or null | Raw source object when includeRawData is enabled. |
Example 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": "Sample public group post text.","authorName": "Sample Author","authorId": "100000000000000","authorUrl": "https://www.facebook.com/profile.php?id=100000000000000","publishedAt": "2026-01-01T12:00:00Z","reactionCount": 12,"commentCount": 3,"shareCount": 1,"videoViewCount": 0,"engagementCount": 16,"imageUrl": "https://example.com/image.jpg","videoUrl": null,"videoDetails": null,"topComments": [{"authorName": "Commenter One","text": "Helpful reply."}],"sortBy": "RECENT_ACTIVITY","page": 1,"cursor": "CURSOR_TOKEN","source": "provider","scrapedAt": "2026-01-01T12:05:00Z","rawPost": null}
How it works
This Actor follows a provider-first and browser-fallback design.
- It tries the configured managed provider chain first.
- The provider order can start with the primary or fallback data provider.
- If provider APIs are unavailable, empty, or disabled, the Actor can use a Playwright browser fallback.
- Browser fallback can use your authorized Facebook cookie session and Apify Proxy settings.
- Provider pagination uses cursors, and each request can return up to 3 posts.
- Saved rows are written to the default dataset.
- execution telemetry is written to the default key-value store as
RUN_SUMMARYandOUTPUT.
The Actor manifest also shows the available environment variable secrets for provider access: the routing options listed in the input schema.
Pricing
This Actor uses Pay per event pricing with Apify platform usage included. The primary charged event is one Facebook group post scraped event for each public post saved to the dataset. The charged-events contract also includes a small Actor start event. For the live current price and any platform usage details, open the Pricing tab on the Actor page.
As an event-count example in words: saving twenty five posts creates twenty five primary post-scraped events.
Use with AI agents (MCP)
This Actor is available through Apify MCP as a tool for retrieving structured public Facebook group post data.
Tool description: Scrape public Facebook group posts from a group URL or group ID and return dataset rows with text, author fields, engagement counts, media URLs, top comments, pagination cursor details, and scrape metadata.
Exact Actor identity: khadinakbar/facebook-groups-scraper
Find public posts for this Facebook group URL, keep the output limited to recent activity, and return a structured dataset I can pass to follow-up analysis. I need the post text, author, published time, engagement counts, media URLs, and cursor details if available.
The output is well suited for agent workflows because each row contains a single post record with provenance fields such as groupUrl, sourceInput, source, page, cursor, and scrapedAt. For pagination-aware workflows, the RUN_SUMMARY record includes post counts, groups processed, providers used, provider status codes, cursors, and stop reason. OUTPUT provides a compact summary that is easy to consume in agent pipelines.
When supported by the selected source, provider pagination returns a cursor that can be reused through startCursor. Provider requests currently return up to 3 posts per request, so maxPagesPerGroup is the main control for collecting additional pages. Event cost scales with saved posts.
Apify API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const input = {groupUrls: ['https://www.facebook.com/groups/homemakingtips/'],maxPosts: 10,dataSource: 'auto',useBrowserFallback: true,};const run = await client.actor('khadinakbar/facebook-groups-scraper').call(input);const datasetId = run.defaultDatasetId;const { items } = await client.dataset(datasetId).listItems({ clean: true });console.log('Run status:', run.status);console.log('Dataset items:', items);
Best results and outcome guidance
For focused runs, start with one group URL or one group ID per run, then raise maxPosts only as needed. Use RECENT_ACTIVITY when you want the newest public posts first, or TOP_POSTS when you want provider-side ordering from the source. If you plan to continue later, save the cursor from RUN_SUMMARY.nextCursors and reuse it with startCursor. If provider access is part of your setup, keep dataSource on auto and choose the provider order that matches your environment.
Continue the workflow
- Then use Facebook Groups Search Scraper to extend Facebook Groups Scraper research with a complementary discovery contract.
- Then use Facebook Hashtag Scraper - Ad Library Search by Hashtag to extend Facebook Groups Scraper research with a complementary discovery contract.
Design note
I found that the dataset contract always includes groupUrl, sourceInput, source, and scrapedAt as required fields. That makes every saved record traceable to both its requested input and the data source used.
FAQ
Can I start from a Facebook group URL or a numeric group ID?
Yes. The Actor accepts either groupUrls or groupIds.
Which fields make the output useful for follow-up workflows?
Common follow-up fields include postUrl, text, authorName, publishedAt, reactionCount, commentCount, shareCount, engagementCount, imageUrl, videoUrl, topComments, and cursor.
How do I continue a provider-backed run later?
Use the cursor from RUN_SUMMARY.nextCursors as startCursor in a later run.
How does this Actor connect to comment or reaction workflows?
Use Facebook Post Comments Scraper for comment expansion on a returned post, or Facebook Likes Scraper - Public Reactions & Profiles when the next step is reaction or profile detail.
What output should an agent read first?
Start with the OUTPUT key-value record for a compact summary, then read the dataset for post-level rows, and inspect RUN_SUMMARY for pagination and provider telemetry.
Responsible use
This Actor is designed for public Facebook group data. Use your own authorized Facebook session for browser fallback, and collect only content you are entitled to access under the applicable Facebook group settings and your own permissions.