# Facebook Group Scraper (`data_wiki/facebook-group-scraper`) Actor

Scrape public Facebook groups without login or cookies: posts, comments, replies, reactions, authors, media, Buy & Sell listings, emails and member counts. Bulk groups, keyword and date filters, resumable runs. Clean JSON for community research, leads and market analysis.

- **URL**: https://apify.com/data_wiki/facebook-group-scraper.md
- **Developed by:** [Data WiKi](https://apify.com/data_wiki) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

### 🚀 What is Facebook Group Scraper?

**Facebook Group Scraper** is a Facebook group scraper that extracts posts, comments, reactions, authors, media, Buy & Sell listings and group details from public Facebook groups. Just **paste one or more group links** and get every post as a clean row, exported to **JSON, CSV or Excel**, without logging in and without copying anything by hand.

- 👥 **Many groups in one run:** paste one group link or hundreds, and mix full links, `/groups/name` paths, numeric ids and bare group names. As a Facebook groups scraper it handles them all together.
- 💬 **Posts with their conversations:** add the top comments the feed shows, or read the full comment thread with replies. As a Facebook group post scraper it keeps each post and its comments together.
- 🛒 **Buy & Sell ready:** collect listings with price, status, location and seller, and filter them by price range and availability, which suits Facebook marketplace groups for sale.

> 💡 **Need comments of a single post, reel or video instead?** Try the [post comments scraper](https://apify.com/data_wiki/facebook-comment-scraper).

### ✨ What can this Facebook Group Scraper do?

It is a public Facebook group scraper that reads only what any visitor can see on a group page, and with the comment options switched on it also works as a Facebook group comment scraper.

- 📅 **Date window:** keep posts newer or older than a date, or a relative value such as `7 days`, to get Facebook group posts by date.
- 🔤 **Keyword include and exclude:** keep only matching posts, which also works as a simple Facebook group keyword monitoring setup.
- 📊 **Reaction and comment filters:** set a minimum number of reactions or comments, pick post types, or keep only posts with media.
- 🗂️ **Group details:** member count and privacy on every row, or one row per group with the creation date and description, so you can extract data from Facebook group pages beyond posts.
- 🔁 **Resume cursors:** a run that stopped early reports a position you can paste into the next run.
- 📥 **Export** the data in **JSON, CSV, Excel, XML or HTML**, or use the flat row format for spreadsheets.
- 🔌 **Use the API**, schedules, webhooks and **integrations with other apps** through the Apify platform.

### 📊 What data can this Facebook Group Scraper extract?

| | | |
|---|---|---|
| 📝 Post text, link, type and time | 👤 Author name, id, profile link and picture | 📊 Reactions by type, comments and shares |
| 💬 Comments and replies with author and time | 🎬 Photos, full albums and videos | 👁️ Video view counts and transcripts |
| 🔗 Links, hashtags and mentions | 📧 Emails and phone numbers written in the post | 🛒 Listing title, price, status, location and seller |
| 👥 Group name, member count and privacy | 📅 Group creation date and description | 📈 Engagement and engagement rate |

> ⚠️ **Note:** hashtags, emails, phone numbers, links, shared posts, sale details and video fields are filled only when the post contains them. The engagement rate stays empty when the group member count is unknown. The creation date and description of a group appear only in "Group details only" rows. Facebook shows fewer comments without a login than the number it reports.

#### Data Facebook Group Scraper can't extract

- Private groups: they return the status "private group - only public groups can be read".
- The list of group members: you get the member count and group details, not the people.
- Profiles, pages and search links: only group links, group ids and group post links are supported.

### 💰 How much does it cost to scrape Facebook groups?

Facebook Group Scraper uses **pay-per-event pricing**: you pay for the results it saves, with no subscription to the Actor. One saved row (a post, a Buy & Sell listing or a group-details row) is one result. Rows that your filters leave out, duplicates and the free links overview table are not charged.

#### Base pricing

- **Results** (`main_result`): charged once for every row saved to the default dataset.
- **Actor Start** (`apify-actor-start`): $0.00005 per event, charged when a run starts. The number of events depends on the memory of the run, one event per GB with a minimum of one. This Actor is configured with 1 GB, so the start fee is $0.00005 per run.

#### Pricing by plan tier

| Plan tier | Results (per 1,000) | Arithmetic |
|---|---|---|
| 🆓 Free | $2.00 | 1,000 x $0.002 |
| 🥉 Bronze | $1.80 | 1,000 x $0.0018 |
| 🥈 Silver | $1.60 | 1,000 x $0.0016 |
| 🥇 Gold and above | $1.40 | 1,000 x $0.0014 |

The price tier follows your Apify plan. For example, a group of 500 posts at the Gold tier costs 500 x $0.0014 = $0.70 for the results, plus the small start fee. You can set a maximum spend per run in Apify, and the run stops cleanly when that limit is reached, keeping the rows already saved.

#### Why pay-per-event?

- 💵 **Transparent:** you pay for the rows you receive.
- 📐 **Predictable:** you can estimate the cost from the number of posts you ask for.
- ⏸️ **No idle charges:** waiting time is not billed as results.

### 🛠️ How do I use Facebook Group Scraper to scrape Facebook groups?

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. Open the Facebook group scraper Apify Store page.
3. Paste your public group links into **Group links** (`urls`) and set **Number of posts** (`maxPosts`) to extract Facebook group posts.
4. Add optional filters: sorting order, date window, keywords, reactions, post types or comment options.
5. Click **Start** and watch the log while rows appear in the Output tab.
6. Download the data in **JSON, CSV, Excel, XML or HTML**, or read the dataset through the API.

### ⬇️ Input

Only `urls` is required. Everything else is optional and has a default. You can add many groups in the same run, and `maxPosts` is the total across all of them (default 20, `0` means every post Facebook shows without a login).

Here is a simple example input (the 50 newest posts of one group from the last 7 days, with comments, filtered by a keyword):

```json
{
  "urls": ["https://www.facebook.com/groups/dogspotting/"],
  "maxPosts": 50,
  "sortingOrder": "newest_posts",
  "postsNewerThan": "7 days",
  "fetchAllComments": true,
  "maxCommentsPerPost": 10,
  "keywords": ["adoption"],
  "keywordMatch": "any",
  "outputFormat": "full"
}
```

Open the **Input** tab for a full explanation of every field.

#### Sorting order and date window

`sortingOrder` accepts `newest_posts` (default), `newest_activity`, `most_relevant`, `buy_sell_listings`, `top_listings`, `recent_listings`, `popular`, `photos`, `videos` and `media`. Use `newest_posts` together with `postsNewerThan`, because the run can stop as soon as it passes the window. `postsNewerThan` and `postsOlderThan` take `2026-01-01`, a full ISO time or a relative value such as `7 days` or `2 months`. A bad format is rejected by the form.

#### Comments and replies

`includeTopComment` (on by default) adds the one or two comments the feed shows under each post. `fetchAllComments` reads the full thread instead. `includeReplies` also reads replies and switches on full-thread reading even when `fetchAllComments` is off. Use these options to scrape Facebook group comments in full, and download Facebook group posts and comments together. Keep `maxCommentsPerPost` and `maxRepliesPerComment` at `0` for everything Facebook shows without a login. `commentsSortOrder` is `all` (oldest first), `most_relevant` or `newest`; the most relevant order shows fewer comments.

#### Keywords and filters

`keywords` keeps posts whose text, listing title or link title contains the words, matching `any` or `all` of them (`keywordMatch`). `excludeKeywords` drops posts. The same filters support Facebook group brand mention tracking. Do not put the same word in both lists, as the run stops with an input problem. Also set `minReactions`, `minComments`, `postTypes` (`text`, `photo`, `album`, `video`, `reel`, `link`, `share`, `event`) and `onlyWithMedia`. Posts that do not match are never charged.

#### Buy & Sell listings

Set `sortingOrder` to `buy_sell_listings`, or just set `saleStatus` to `available` or `sold`, or give `minPrice` or `maxPrice`; any of these switches the run to Buy & Sell listings. Prices are in the listing's own currency. If `minPrice` is higher than `maxPrice` the run stops with an input problem. `includeListingDetails` adds location and seller. Together with the price filters this gives you Facebook group sale listing price tracking.

#### Group details only

Switch on `groupInfoOnly` to get one row per group with name, member count, privacy, creation date and description, and no posts. Each of these rows counts as one result.

#### Proxy

The default proxy setting needs no setup. A failed request is retried up to 3 times, and you can choose a country in `proxyConfiguration`.

### ⬆️ Output

Every saved row is one post, one Buy & Sell listing or, with `groupInfoOnly`, one group. Results appear in the Output tab while the run is going, in tables for posts, engagement, reactions, authors, comments, media, links and contacts, Buy & Sell and groups. A second free dataset, the links overview, has one row per link you entered (status, rows collected and a resume cursor), including links that could not be read. A run summary record holds the totals and resume cursors. Export as **JSON, CSV, Excel, XML or HTML**, and pick or leave out fields before exporting.

#### Example output (illustrative)

A shortened post row built from the real fields; the values are made up for illustration:

```json
{
  "post_type": "regular",
  "post_id": "1000000000000001",
  "post_url": "https://www.facebook.com/groups/dogspotting/posts/1000000000000001/",
  "text": "Example post text.",
  "user_name": "Example User",
  "user": {"id": "1000", "name": "Example User", "type": "User"},
  "creation_time": "Sun, 11 Oct 2026 20:14:56 GMT",
  "photo_count": 1,
  "reactions_count": 16,
  "reactionLikeCount": 11,
  "reactionLoveCount": 3,
  "reactionCareCount": 2,
  "comments_count": 1,
  "shares_count": 0,
  "topComment": [],
  "group_url": "https://www.facebook.com/groups/dogspotting/",
  "content_type": "photo",
  "group_name": "Dogspotting",
  "group_members": 1800000,
  "group_privacy": "public",
  "engagement": 17,
  "hashtags": [],
  "emails": [],
  "phones": [],
  "is_question": false,
  "scraped_at": "2026-10-11T20:41:41.000Z"
}
```

#### Output fields explained

| Field | Meaning |
|---|---|
| 📝 `post_id`, `post_url`, `text` | Id, direct link and text of the post |
| 👤 `user_name`, `user_url`, `user` | Author name, profile link, id, picture and type |
| 📅 `creation_time`, `creation_timestamp`, `scraped_at` | Publish time (UTC text and milliseconds) and the time the row was collected |
| 📊 `reactions_count`, `reactionLikeCount` and the other reaction counts, `comments_count`, `shares_count` | Facebook group reactions data: total reactions, breakdown by type (Like, Love, Haha, Wow, Sad, Angry, Care), comments and shares |
| 📈 `engagement`, `engagement_rate_pct` | Reactions plus comments plus shares, and that as a percentage of group members (empty when the member count is unknown) |
| 💬 `topComment` | Comments, each reply right after its comment |
| 🎬 `media`, `photo_count`, `media_truncated`, `is_video`, `video_views`, `video_transcript` | Photos and videos, album size, view count and transcript |
| 🔗 `links`, `hashtags`, `mentions`, `link_preview` | Links, hashtags, mentions and the shared link card |
| 📧 `emails`, `phones` | Contacts written in the post text, so you can extract email from Facebook group posts (only when `extractContacts` is on) |
| 🛒 `sale_post`, `post_type` | Listing title, price, status, location and seller; `post_type` is `regular`, `shared` or `sale` |
| 👥 `group_id`, `group_name`, `group_members`, `group_privacy`, `group_url` | Group the post belongs to |
| 🏘️ `record_type`, `members`, `members_text`, `privacy`, `created_at`, `created_text`, `description` | Group-details rows only |
| 🔤 `matched_keywords` | Which of your keywords the post matched (only when `keywords` is set) |
| ❓ `is_question` | Whether the post text reads like a question |

With `outputFormat` set to `flat`, nested values become simple columns and the nested tables in the Output tab stay empty. The rows are ready to load as Facebook group data for LLM workflows.

### 🎯 Use cases

- 🔬 **Community research:** run Facebook group market research to see what members ask, share and react to, in the spirit of Facebook community research, using `text` and `reactions_count`.
- 💼 **Lead discovery:** combine `is_question`, `keywords` and `extractContacts` for Facebook group lead generation, using contact details people wrote in the text.
- 📈 **Analytics:** feed Facebook group engagement analytics with `engagement` and `engagement_rate_pct`, and break reactions down by type.
- 💭 **Sentiment analysis:** comment text, reactions and dates give you the base for Facebook group sentiment analysis.
- 🔔 **Brand monitoring:** a schedule, `keywords` and a date window turn the Actor into a Facebook group monitoring tool.
- 🛒 **Price research:** use it as a Facebook buy and sell group scraper and compare prices across listings.
- 🤖 **AI data:** build a Facebook group posts dataset for language-model workflows.
- 🗄️ **Archiving:** export Facebook group posts of a public group for your own records.

### 🔗 What are other tools for Facebook and social media data?

- [Facebook comment scraper](https://apify.com/data_wiki/facebook-comment-scraper): comments and replies from public Facebook posts, reels, videos and photos.
- [Instagram hashtag scraper](https://apify.com/data_wiki/instagram-hashtag-scraper): public Instagram reels by hashtag or keyword.
- [Douyin search scraper](https://apify.com/data_wiki/douyin-search-scraper): Douyin search results by keyword, hashtag or link.
- [Douyin profile scraper](https://apify.com/data_wiki/douyin-profile-scraper-followers-posts-hashtags): public Douyin creator profiles with posts and hashtags.
- 🌐 The scraped site: [Facebook](https://www.facebook.com). Platform help: [Apify API documentation](https://docs.apify.com/api/v2).

### ❓ Frequently asked questions

#### How does Facebook Group Scraper work?

You give it public group links and your filters. It opens each group, reads the posts page by page in the sort order you chose, applies your filters, adds the optional comments, albums, videos and listing details, and saves each kept post as a row right away. As a Facebook group posts scraper it then lets you export the dataset or read it through the API.

#### Do I need a Facebook account or a login?

No. This Facebook group scraper no login setup reads public groups only. Private groups, profiles and pages are not read, and the links overview shows a clear status for them.

#### Can I scrape many Facebook groups at once?

Yes. Add as many group links as you like to `urls`. The `maxPosts` limit is the total for the whole run, and a post reached through two links is saved once.

#### What are the limits of Facebook Group Scraper?

It reads only what Facebook shows without a login, so the number of posts and comments depends on the group. You can cap a run with `maxPosts` and with your Apify spend limit. The Actor is configured with 1,024 MB (1 GB) of memory. See the cost section for pricing.

#### Why am I getting fewer results than expected?

Your filters may be removing posts, the group may be private, or Facebook may show fewer posts or comments without a login. Loosen `keywords`, `minReactions`, `postTypes` or the date window, use `newest_posts` with a date window, and check the status in the links overview. If a run ends with "No posts matched", check the group link and your filters.

#### How do I continue a run that stopped early?

Copy the `resumeCursors` value from the run summary into the **Resume cursors** field of the next run.

#### Can I integrate Facebook Group Scraper with other apps?

Yes. Through the Apify platform you can connect it with Make, Zapier, Slack, Airbyte, GitHub, Google Sheets and more, or use webhooks to react when a run finishes. That covers a Facebook group scraper n8n workflow. Use `outputFormat` set to `flat` for spreadsheet-friendly columns.

#### Can I use Facebook Group Scraper as its own API?

Yes, with the Apify API and the `apify-client` packages for Node.js and Python. Run `data_wiki/facebook-group-scraper` and read the dataset, which makes a simple Facebook group API and Facebook group feed API for public groups. A Facebook group scraper API call needs only your token and the input shown above. See the [API tab](https://apify.com/data_wiki/facebook-group-scraper/api) and the [Apify API documentation](https://docs.apify.com/api/v2).

#### Is there a Facebook group scraper free to try?

You pay per result as shown in the cost section.

#### How do I export Facebook group data to CSV, Excel or Google Sheets?

Open the Output tab and download the dataset. You can save Facebook group posts to CSV or Facebook group posts to Excel, or connect the dataset to Google Sheets with the Apify integration for a Facebook group data to Google Sheets flow.

#### Can I scrape Facebook group posts and comments with Python or on a schedule?

Yes. A Facebook group scraper Python script can call the Actor with `apify-client`, or set a schedule in Apify. You can scrape Facebook group posts and comments in the same run.

#### Can I find emails or sale prices in group posts?

Yes. Emails and phone numbers are collected when people wrote them in the post text, and Buy & Sell listings come with their price and status.

#### Can I use Facebook Group Scraper through MCP?

Yes. The hosted Apify MCP server (`https://mcp.apify.com`) lets AI agents find an Actor with `search-actors`, check it with `fetch-actor-details` and run it with `call-actor`. See the [Apify MCP documentation](https://docs.apify.com/platform/integrations/mcp).

#### Can I get the Facebook group member count or the member list?

You get the Facebook group member count and privacy in every row, plus the description and creation date with `groupInfoOnly`. The list of members is not extracted.

#### Is scraping Facebook groups legal?

The Actor reads only public data that any visitor can see. Whether it is legal for you depends on how you use the data, Facebook's terms and privacy laws such as GDPR and CCPA, so you are responsible for compliance. Is scraping Facebook groups legal in your case? This is not legal advice, so ask a lawyer when in doubt. Do not collect private information and keep your request volume reasonable.

#### 💬 Your feedback and custom solutions

Found a bug or need another field? Open an issue on the Actor's **Issues** tab. Need a custom solution? Contact hello.datawiki@gmail.com.

# Actor input Schema

## `urls` (type: `array`):

Public Facebook group links such as https://www.facebook.com/groups/dogspotting/. A /groups/name path, a numeric group id, a bare group name or a link to a single group post also works. Add one group or hundreds in the same run.

## `maxPosts` (type: `integer`):

Total posts to collect across all groups in this run. Use 0 for every post Facebook shows without a login.

## `sortingOrder` (type: `string`):

The order Facebook lists the group's posts in. New posts is the best choice together with a date window, because the run can stop as soon as it passes the window. The Buy & Sell options return listings only.

## `postsNewerThan` (type: `string`):

Keep posts published after this moment. Use a date such as 2026-01-01 or a relative value such as 7 days or 2 months. Leave empty for no limit.

## `postsOlderThan` (type: `string`):

Keep posts published before this moment. Same formats as 'Posts newer than'. Leave empty for no limit.

## `includeTopComment` (type: `boolean`):

Add the one or two comments Facebook shows right under each post in the feed. This adds no waiting time. For every comment, switch on 'Fetch all comments'.

## `fetchAllComments` (type: `boolean`):

Read the full comment thread of each post, replacing the top comments. Posts with many comments take longer. The comment options below apply when this or 'Include replies' is on.

## `maxCommentsPerPost` (type: `integer`):

Most top-level comments to read per post (replies are counted separately). 0 reads every comment Facebook shows without a login.

## `includeReplies` (type: `boolean`):

Also read the replies under each comment, including replies to replies. Turning this on reads the full comment thread of each post, even when 'Fetch all comments' is off.

## `maxRepliesPerComment` (type: `integer`):

Most replies to read under each comment. 0 reads every reply.

## `commentsSortOrder` (type: `string`):

Which order the comments are listed in: oldest first (All comments), Newest first, or Most relevant (Facebook shows fewer comments in this order).

## `keywords` (type: `array`):

Keep only posts whose text, listing title or link title contains these words or phrases. Leave empty to keep all posts.

## `keywordMatch` (type: `string`):

Keep a post when it contains any of the keywords, or only when it contains all of them.

## `excludeKeywords` (type: `array`):

Drop posts that contain any of these words or phrases.

## `minReactions` (type: `integer`):

Keep only posts with at least this many reactions. 0 keeps all.

## `minComments` (type: `integer`):

Keep only posts with at least this many comments. 0 keeps all.

## `postTypes` (type: `array`):

Keep only these kinds of posts. Leave empty to keep every kind. Ignored for Buy & Sell listings.

## `onlyWithMedia` (type: `boolean`):

Keep only posts that carry a photo, album or video.

## `saleStatus` (type: `string`):

Buy & Sell only: keep all listings, only those still available, or only those already sold. Choosing available or sold switches the run to Buy & Sell listings.

## `minPrice` (type: `number`):

Buy & Sell only: keep listings priced at or above this amount, in the listing's own currency. Setting a price switches the run to Buy & Sell listings.

## `maxPrice` (type: `number`):

Buy & Sell only: keep listings priced at or below this amount, in the listing's own currency. Setting a price switches the run to Buy & Sell listings.

## `includeListingDetails` (type: `boolean`):

Add each listing's location and seller. This adds a little time per listing.

## `includeGroupInfo` (type: `boolean`):

Add the group's member count and privacy to every row. The creation date and description are returned only with 'Group details only'. This adds a little time per group.

## `groupInfoOnly` (type: `boolean`):

Return one row per group (name, member count, privacy, creation date, description) and no posts. This also turns on Group details.

## `extractContacts` (type: `boolean`):

Collect the emails and phone numbers written inside each post.

## `includeVideoDetails` (type: `boolean`):

Add exact view counts to video posts. This adds a little time per video.

## `includeVideoTranscript` (type: `boolean`):

Add the automatic transcript of a video when Facebook provides one.

## `includeFullAlbums` (type: `boolean`):

Collect every photo of an album instead of the first five.

## `outputFormat` (type: `string`):

Full keeps nested objects such as author, media and comments. Flat gives one level of simple columns that suit spreadsheets (the nested tables in the Output tab stay empty in this format).

## `resumeCursors` (type: `object`):

Continue a capped run: paste the 'resumeCursors' object from the previous run's SUMMARY record, as {"group link": "cursor"}.

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

Choose how requests are routed. A failed request is retried up to 3 times with a new connection, and if a request is blocked the Actor switches to another connection automatically. You can pick a country here; no other setup is needed.

## Actor input object example

```json
{
  "urls": [
    "https://www.facebook.com/groups/dogspotting/"
  ],
  "maxPosts": 20,
  "sortingOrder": "newest_posts",
  "includeTopComment": true,
  "fetchAllComments": false,
  "maxCommentsPerPost": 0,
  "includeReplies": false,
  "maxRepliesPerComment": 0,
  "commentsSortOrder": "all",
  "keywordMatch": "any",
  "minReactions": 0,
  "minComments": 0,
  "onlyWithMedia": false,
  "saleStatus": "any",
  "includeListingDetails": true,
  "includeGroupInfo": true,
  "groupInfoOnly": false,
  "extractContacts": true,
  "includeVideoDetails": true,
  "includeVideoTranscript": true,
  "includeFullAlbums": true,
  "outputFormat": "full",
  "resumeCursors": {},
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `posts` (type: `string`):

Every post with text, author, time and headline numbers.

## `engagement` (type: `string`):

Reactions, comments, shares and engagement rate.

## `reactions` (type: `string`):

Reaction totals and type breakdown per post.

## `authors` (type: `string`):

Post author name, id, profile and picture.

## `comments` (type: `string`):

Comments and replies read for each post.

## `media` (type: `string`):

Photos, albums, videos, view counts and transcripts.

## `linksContacts` (type: `string`):

Hashtags, mentions, links, emails and phone numbers in posts.

## `listings` (type: `string`):

Marketplace listings with price, status, location and seller.

## `groups` (type: `string`):

Group name, members, privacy and the Group details only rows.

## `sources` (type: `string`):

One row per input link: status and rows collected.

## `summary` (type: `string`):

Totals for the whole run, including resume cursors.

# 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 = {
    "urls": [
        "https://www.facebook.com/groups/dogspotting/"
    ],
    "maxPosts": 20,
    "sortingOrder": "newest_posts",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("data_wiki/facebook-group-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 = {
    "urls": ["https://www.facebook.com/groups/dogspotting/"],
    "maxPosts": 20,
    "sortingOrder": "newest_posts",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("data_wiki/facebook-group-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 '{
  "urls": [
    "https://www.facebook.com/groups/dogspotting/"
  ],
  "maxPosts": 20,
  "sortingOrder": "newest_posts",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call data_wiki/facebook-group-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,data_wiki/facebook-group-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/EfKuJ2c7ziBREKGbr/builds/ySBLHSEhwV3ja40br/openapi.json
