# Facebook Group Insights Scraper (`fetch_cat/facebook-group-insights-scraper`) Actor

Extract public Facebook group metadata, audience size, privacy, cover, and About details without user cookies or login.

- **URL**: https://apify.com/fetch\_cat/facebook-group-insights-scraper.md
- **Developed by:** [Hanna Nosova](https://apify.com/fetch_cat) (community)
- **Categories:** Social media, Marketing, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 group results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Facebook Group Details Scraper

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`:

```json
{
  "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.

### Ready-to-run examples

Open a public example to inspect its input, run it, or reuse it as a task:

- [Compare Public Facebook Group Details](https://apify.com/fetch_cat/facebook-group-insights-scraper/examples/compare-facebook-groups)
- [Extract Public Facebook Group Details](https://apify.com/fetch_cat/facebook-group-insights-scraper/examples/facebook-group-details)

Inspect one group by numeric ID:

```json
{
  "groupUrls": [
    { "url": "https://www.facebook.com/groups/2200032550/" }
  ]
}
```

Use extra rotations for a batch:

```json
{
  "groupUrls": [
    { "url": "https://www.facebook.com/groups/cheapmealideas/" },
    { "url": "https://m.facebook.com/groups/2200032550/about/" }
  ],
  "maxRetries": 6
}
```

### Output

Each successful dataset item follows this stable core contract:

```json
{
  "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

```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

```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

```bash
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/"}]}'
```

### Pricing

The Actor uses pay-per-event pricing: one small run-start event and one tiered `Group result` event for each successful public group row. Unavailable targets do not create a group result or group-result charge. Higher Apify plans receive lower per-result rates.

See the live [Apify Pricing tab](https://apify.com/fetch_cat/facebook-group-insights-scraper/pricing) for current rates and plan-specific discounts. Apify may separately charge platform usage for compute, storage, residential proxy traffic, or data transfer as shown for your account.

### 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.0M` are converted to an integer estimate and preserved verbatim in `members_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.

### FAQ

#### What data can I export with Facebook group details?

Export the public group ID, name, URL, About description, privacy, discoverability, member count, cover image, creation date, public admin summary, rules, and scrape timestamp when Facebook exposes those fields.

#### Can I run Facebook Group Insights Scraper through an API, schedule, or MCP client?

Yes. Use the API examples above, create a schedule in Apify Console for recurring checks, or call the Actor from an MCP-capable workflow.

#### How much does it cost to use Facebook Group Insights Scraper?

The Actor charges a small run-start event plus one tiered result event for every successful public group row. See the live Pricing tab for current plan-specific rates.

#### Does it need my Facebook cookie or login?

No. The default public-group workflow uses no user cookie, password, or access token.

#### Is this a wrapper around another scraping API?

No. It reads Facebook's own public logged-out HTML and embedded first-party metadata.

#### Can it scrape posts, comments, members, or private groups?

No. This Actor is deliberately limited to public group-level metadata and About insights.

#### Can I monitor member growth?

Yes. Schedule the same input and compare `members_count` and `scraped_at` between runs.

#### Why is the member count sometimes rounded?

Facebook may expose a compact public value such as `43.3K members`. The Actor returns `43300` and also preserves `43.3K members` in `members_count_text`.

#### Why can `group_location` be null?

Many groups do not set a location. The Actor emits `null` when Facebook's current public About payload has no location rather than guessing from the group name or description.

#### Does a successful run expose my proxy or session details?

No. Dataset items contain group metadata only. Proxy credentials and request state are never written to the dataset.

### 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.

### Related Actors

- [Facebook Groups Search Scraper](https://apify.com/fetch_cat/facebook-groups-search-scraper) discovers public group URLs by keyword before you enrich them here.
- [Facebook Pages Scraper](https://apify.com/fetch_cat/facebook-pages-scraper) exports public Page details for a complementary brand-presence view.
- [Facebook URL to ID Scraper](https://apify.com/fetch_cat/facebook-url-to-id-scraper) resolves supported Facebook URLs to numeric IDs.
- [Facebook Marketplace Scraper](https://apify.com/fetch_cat/facebook-marketplace-scraper) supports public marketplace research workflows.
- [Facebook Events Scraper](https://apify.com/fetch_cat/facebook-events-scraper) complements group research with public event discovery.

### 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.

# Actor input Schema

## `groupUrls` (type: `array`):

Public Facebook group URLs to inspect (1–5). Slug and numeric-ID URLs are supported.

## `maxRetries` (type: `integer`):

How many residential sessions to try for each group when Facebook returns a soft block.

## `proxyConfiguration` (type: `object`):

Residential US proxy is the tested default. Change this only if you know your proxy supports Facebook public pages.

## Actor input object example

```json
{
  "groupUrls": [
    {
      "url": "https://www.facebook.com/groups/cheapmealideas/"
    }
  ],
  "maxRetries": 4,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "groupUrls": [
        {
            "url": "https://www.facebook.com/groups/cheapmealideas/"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("fetch_cat/facebook-group-insights-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "groupUrls": [{ "url": "https://www.facebook.com/groups/cheapmealideas/" }] }

# Run the Actor and wait for it to finish
run = client.actor("fetch_cat/facebook-group-insights-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "groupUrls": [
    {
      "url": "https://www.facebook.com/groups/cheapmealideas/"
    }
  ]
}' |
apify call fetch_cat/facebook-group-insights-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fetch_cat/facebook-group-insights-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/wK8CJeYhEf68YSbEc/builds/BlASdJX6extHLGAbh/openapi.json
