Facebook Group Insights Scraper is a Facebook group scraper that extracts current public Facebook group details from exact group URLs—without supplying a Facebook account, cookie, access token, or third-party data API key.
The Actor returns the numeric group ID, name, full About description, location when present, privacy and discoverability, membership-question flag, cover image, audience size, creation date, admin information, rules, and scrape timestamp. Use it to monitor communities, compare audience sizes, enrich a group directory, or build research datasets.
Input
Add one to five URLs in groupUrls:
{
"groupUrls": [
{ "url": "https://www.facebook.com/groups/cheapmealideas/" },
{ "url": "https://www.facebook.com/groups/2200032550/" }
]
}
Slug URLs, numeric group-ID URLs, mobile URLs, and /about/ URLs are normalized automatically. maxRetries controls how many fresh proxy sessions are attempted if Facebook soft-blocks an exit IP.
Input options
| Field | Type | Required | Default | What it does |
|---|---|---|---|---|
groupUrls |
array | Yes | — | One to five exact public Facebook group URLs. |
maxRetries |
integer | No | 4 |
Number of fresh residential sessions allowed for each group. |
proxyConfiguration |
object | No | Apify Residential, US | Advanced proxy override. The tested default is recommended. |
Validation happens before any group is requested. Invalid inputs fail before the run-start charge. For a valid batch, unavailable or blocked URLs are recorded in the run summary while the other valid URLs continue.
Output
Each successful dataset item follows this stable core contract:
{
"status": "success",
"group_id": "126966114029232",
"group_name": "Cheap Meal Ideas",
"group_url": "https://www.facebook.com/groups/cheapmealideas/",
"description": "This group is open for anyone to join or share with others...",
"group_location": null,
"privacy": "Public group",
"has_questions": false,
"cover_photo_url": "https://scontent...fbcdn.net/...jpg",
"cover_photo_width": 720,
"cover_photo_height": 405,
"members_count": 6000000,
"members_count_text": "6.0M members",
"privacy_description": "Anyone can see who's in the group and what they post.",
"discoverability": "Visible",
"discoverability_description": "Anyone can find this group.",
"created_at": "2010-11-29T01:18:52.000Z",
"admin_count": 5,
"rules": [],
"scraped_at": "2026-08-29T00:00:00.000Z"
}
Unavailable, private, or repeatedly blocked URLs do not create a billable group row and do not stop the remaining valid URLs. Check the run summary for their count.
What this Actor does
Use one exact public group URL per target. The Actor returns one group-level record when Facebook makes that group's public details available. It does not require your Facebook credentials and does not use a paid third-party data API.
Who is it for?
- Community and social-media teams tracking the size of public communities.
- Market researchers comparing audience, location, privacy, and group age.
- Developers who need a numeric group ID from a human-readable URL.
- Data teams enriching existing URL lists with consistent metadata.
- Agencies building repeatable public-community monitoring reports.
This is a details Actor, not a feed crawler. It is a good fit when one clean row per group is more useful than thousands of post or comment records.
Use cases
- Track group member growth by scheduling repeat runs and comparing
members_count. - Compare community size, privacy, location, discoverability, and age for market research.
- Resolve a human-readable group slug to its numeric Facebook group ID.
- Enrich CRM, Sheets, n8n, Make, or warehouse records with group metadata.
- Build public-group directories and research datasets.
API usage
Run the Actor from Apify Console, API, CLI, JavaScript/Python clients, schedules, webhooks, or MCP-capable agents. Results are stored in the default dataset and can be exported as JSON, CSV, Excel, XML, or RSS.
JavaScript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/facebook-group-insights-scraper').call({
groupUrls: [{ url: 'https://www.facebook.com/groups/cheapmealideas/' }],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
Python
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/facebook-group-insights-scraper').call(run_input={
'groupUrls': [{'url': 'https://www.facebook.com/groups/cheapmealideas/'}],
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
cURL
curl -X POST \
'https://api.apify.com/v2/acts/fetch_cat~facebook-group-insights-scraper/runs?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"groupUrls":[{"url":"https://www.facebook.com/groups/cheapmealideas/"}]}'
Field reference
| Field | Meaning |
|---|---|
group_id |
Facebook's numeric group identifier. |
group_name |
Current public group name. |
group_url |
Canonical public group URL. |
description |
Full public About description when exposed. |
group_location |
Public group location, otherwise null. |
privacy |
Public privacy label such as Public group. |
has_questions |
Whether membership screening questions are configured. |
members_count |
Integer conversion of Facebook's public count. |
members_count_text |
Original Facebook count text, including rounding suffix. |
cover_photo_url |
Current signed cover-image URL. |
created_at |
Group creation timestamp when publicly exposed. |
admin_count |
Public admin count when available. |
moderator_summary |
Public admin/moderator summary sentence. |
rules |
Public rule titles and descriptions. |
scraped_at |
Timestamp for this observation. |
Limitations and responsible use
- Public groups only. Private group content and member lists are outside this Actor's scope; public-field availability can vary by group.
- The audience count is the public formatted count Facebook exposes; compact values such as
6.0Mare converted to an integer estimate and preserved verbatim inmembers_count_text. - Facebook can change its public page structure or temporarily block individual proxy exits. The Actor rotates sessions and returns clear errors when retries are exhausted.
- Cover-image URLs are signed CDN URLs and can expire; save the image separately if you need a durable asset.
- Use public data responsibly and follow applicable laws and platform terms.
Troubleshooting
If a public group returns an error, first open the exact URL in a logged-out browser and confirm it still exists. Removed, renamed, restricted, private, or region-limited groups may not expose a public About payload. Raising maxRetries can help when an individual residential exit is temporarily blocked, but it cannot make private data public.
For batch work, keep the unavailable URL in the input: the Actor records it in the run summary and continues processing the remaining groups.
Support
Open an issue from this Actor's Apify Console page with the input, run ID, expected behavior, and a public example URL. Do not include credentials, cookies, or personal data.