# Facebook Group Info Scraper: Members, Privacy, Rules, Activity (`neverempty/facebook-group-info`) Actor

Paste public Facebook group URLs, names or IDs and get one row per group: exact member count, public or private, posts today and this month, creation date, description, topics, rules and membership questions. No login, no cookies. Up to 2,000 groups per run. Export CSV or Excel.

- **URL**: https://apify.com/neverempty/facebook-group-info.md
- **Developed by:** [NeverEmpty](https://apify.com/neverempty) (community)
- **Categories:** Social media, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 group returneds

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Facebook Group Info Scraper

Get the details of Facebook groups in bulk: paste a list of group URLs, names or IDs and get one row per group with the exact member count, public or private, how many posts went up today and in the last 30 days, the creation date, the description, topics, rules and whether it asks membership questions. Export as CSV, Excel or JSON.

**Built for community research, marketing and group directories**: you have a list of groups from a search, a spreadsheet or a competitor, and you need to know which ones are big, active and open to join before you spend time on them. No Facebook account or cookies needed, and up to 2,000 groups per run.

### What you get for each group

| Column | Example (Cheap Meal Ideas, run on 2026-10-21) |
|---|---|
| `name`, `groupUrl`, `groupId`, `vanityName` | Cheap Meal Ideas · https://www.facebook.com/groups/cheapmealideas/ · 126966114029232 · cheapmealideas |
| `membersCount`, `membersCountText` | 5993532 · 6.0M members (the exact count, ready to sort and filter) |
| `privacy`, `isPrivate`, `privacyDescription` | Public · false · Facebook's explanation of the setting |
| `visibility`, `isVisible`, `visibilityDescription` | Visible · true · whether people outside the group can find it |
| `postsLastDay`, `postsLastMonth` | 33 · 158 (new posts in the last 24 hours and the last 30 days) |
| `createdAt`, `createdDate` | 2010-11-28T23:32:12.000Z · 2010-11-28 |
| `nameLastChanged`, `historySummary` | date of the last name change, when there was one · Group created on November 28, 2010 |
| `description` | the group's About text |
| `topics`, `locations` | \["Meal Types", "Food & Drink"] · places linked to the group |
| `hasMembershipQuestions` | false (true when the group asks questions before you can join) |
| `rulesCount`, `rules` | 8 · each rule with its title and description |
| `coverPhotoUrl` | the cover image |
| `redirectedFrom` | the URL you pasted, when Facebook forwarded it to the group's current address |

Private groups return the same columns: their member count, activity, rules and description are public on Facebook even though the posts are not. In a run of 40 group names on 2026-10-21, all 30 groups that exist (public and private) came back with the name, exact member count, privacy, visibility, post counts, creation date and membership-questions flag; the 10 names that do not exist came back as free `not-found` rows. Description, topics and rules are filled when the group has them.

### Why this one

- **The exact member count.** `membersCount` is the full number Facebook publishes on the About page (5993532, not "6.0M"), so you can sort, filter and track growth.
- **Activity in two numbers.** `postsLastDay` and `postsLastMonth` show at a glance whether a group is alive or dormant.
- **Rules, topics and join questions.** See what a group allows and whether joining needs approval answers, before you apply.
- **Creation date and name history.** Tell long-running communities from new ones, and spot groups that were renamed.
- **Up to 2,000 groups per run**, read in parallel.
- **Every entry you paste gets a row.** A group row with the data, or a free row with a `status` and a `note` that says what happened, so you always know which entries to check.
- **You pay only for group rows.** Missing groups, entries Facebook refused and repeats are free rows.
- **Any address format works.** Full URLs go in `startUrls`: `https://www.facebook.com/groups/cheapmealideas`, `https://m.facebook.com/groups/cheapmealideas/about`, `https://www.facebook.com/groups/1242309506256283`, or a link to a post inside the group. Group names (`cheapmealideas`), numeric group IDs and addresses without `https://` go in `groupNamesOrIds`. The same group entered twice, in any of these forms, is charged once; the repeat gets a free `already-returned` row that names the entry holding the data.
- **Privacy built in.** Email addresses and phone numbers written in descriptions and rules are masked as `[email removed]` and `[phone removed]`. No member names or posts are collected.

### Input

```json
{
  "startUrls": [
    { "url": "https://www.facebook.com/groups/cheapmealideas" },
    { "url": "https://www.facebook.com/groups/1242309506256283" }
  ],
  "groupNamesOrIds": ["digitalnomadsaroundtheworld", "learnpython"]
}
```

- `startUrls`: full group URLs starting with `https://`. You can also point it at a text file of URLs.
- `groupNamesOrIds`: group names from the address, numeric group IDs, or addresses without `https://`. Both lists are read together, up to 2,000 groups per run.

### FAQ

#### How do I get the member count of many Facebook groups at once?

Paste the group URLs into `startUrls` (or the names into `groupNamesOrIds`) and run. Each group comes back as one row with `membersCount`, the exact number of members, plus `membersCountText` as Facebook rounds it.

#### How can I tell if a Facebook group is active?

Look at `postsLastDay` and `postsLastMonth`: the number of new posts in the last 24 hours and the last 30 days, as Facebook shows them in the group's Activity section.

#### Can I check whether a Facebook group is public or private?

Yes. `privacy` is Public or Private and `isPrivate` is `true` or `false`. `visibility` tells whether people outside the group can find it.

#### How do I find out when a Facebook group was created?

Each row has `createdDate` (for example 2010-11-28) and `createdAt` with the exact time. `nameLastChanged` shows the date of the last name change when the group was renamed.

#### Does it work for private groups?

Yes, for the information Facebook shows to everyone: name, member count, activity counts, creation date, description, topics and rules. Posts and the member list of private groups are not collected.

#### Can I export the results to CSV or Excel?

Yes. Open the run's dataset and download it as CSV, Excel, JSON or XML, or read it from the API in your own tools.

#### Do I need a Facebook account, cookies or proxies?

No. Paste the URLs and run.

#### What happens if a group was renamed or removed?

A group that Facebook forwards to a new address comes back as that group, with the URL you pasted in `redirectedFrom`. A removed group comes back as a free `not-found` row.

### Rows that are not groups (free)

| `status` | Meaning |
|---|---|
| `not-found` | Facebook says the group is not available: the address does not exist, the group was removed, or it is a hidden group that only members can find. |
| `different-group` | Facebook answered with another group. Nothing from it is returned. |
| `blocked` / `unreadable` | Facebook refused or did not answer for this entry. Run it again later. |
| `bad-input` | The entry is not a Facebook group address (a Page, a profile, a share link, another site). |
| `budget-reached` | The run hit the maximum charge you set; the rest were not read or charged. |
| `already-returned` | The same group as an earlier entry of the run; `sameAs` names the entry whose row has the data. |

Every free row has a `note` with the reason. The run log ends with a count of group rows, which equals the number of charged events.

### Limitations

- Only the information anyone can see without logging in is returned. Posts, comments, the member list, admin names and member join dates are not included.
- Hidden groups (only members can find them) come back as `not-found`.
- Short share links (`facebook.com/share/…`) are not read: open the link once and paste the `facebook.com/groups/…` address it shows.
- `postsLastDay` and `postsLastMonth` are the counts Facebook shows at the time of the run.
- Image URLs are signed by Facebook and expire after some days; download them if you need to keep them.

### Thanks for using this Actor

We build these tools for people who run them every day, and we improve them from what users tell us.

- **Missing a field, or need another filter?** Tell us in the **Issues** tab. If the data is there, we add it.
- **Found a bug or a wrong value?** Post the run ID in the **Issues** tab. Wrong data is the thing we fix first.

If this Actor saved you time, a short review helps other people find it.

# Actor input Schema

## `startUrls` (type: `array`):

Full group URLs starting with https://, one per line, for example https://www.facebook.com/groups/cheapmealideas or https://www.facebook.com/groups/1242309506256283. Public and private groups both work; a hidden group that only members can find comes back as a free not-found row. If this and the field below are both empty, the run reads the example group.

## `groupNamesOrIds` (type: `array`):

Groups given without a full URL, one per line: the name from the group address such as cheapmealideas, a numeric group ID such as 1242309506256283, or an address without https:// such as facebook.com/groups/cheapmealideas. Read together with the URLs above; empty adds nothing.

## Actor input object example

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

# Actor output Schema

## `results` (type: `string`):

One row per Facebook group: name, URL, numeric ID, public or private, visible or hidden, exact member count, posts in the last day and month, creation date, last name change, description, topics, locations, membership questions, rules and cover photo. A group that does not exist, a hidden group or a group Facebook refused comes back as a free row that says why.

# 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 = {
    "startUrls": [
        {
            "url": "https://www.facebook.com/groups/cheapmealideas"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("neverempty/facebook-group-info").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 = { "startUrls": [{ "url": "https://www.facebook.com/groups/cheapmealideas" }] }

# Run the Actor and wait for it to finish
run = client.actor("neverempty/facebook-group-info").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 '{
  "startUrls": [
    {
      "url": "https://www.facebook.com/groups/cheapmealideas"
    }
  ]
}' |
apify call neverempty/facebook-group-info --silent --output-dataset

```

## MCP server setup

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

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/u1S0NQGlT3Jz1B66d/builds/P3FwviZOzk8AGvFyx/openapi.json
