# Facebook Groups Search Scraper: Find Groups by Keyword (`themineworks/facebook-groups-search-scraper`) Actor

Find Facebook groups by keyword, location or language without login: one row per group with name, link, group id, public or private, exact members, posts per day and month, created date, location, description, rules and admin count.

- **URL**: https://apify.com/themineworks/facebook-groups-search-scraper.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** Social media, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.25 / 1,000 groups

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 Groups Search Scraper: Find Groups by Keyword

[![20 Facebook groups with exact members, privacy and posts per day in 38 seconds](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/facebook-groups-search-scraper-hero.png)](https://console.apify.com/actors/71C42x0OBcIIuJvdc/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

From **The Mine Works**, makers of [Facebook Pages Scraper](https://apify.com/themineworks/facebook-pages-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) and [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), with over 260,000 runs across 290+ public actors.

Updated 31 Oct 2026: first release. Keyword search with an optional location and language, group links read directly, and one flat row per group with its numeric id, link, public or private, exact member count, posts today and in the last 30 days, created date, every location, description, rules and admin count. Bookmark this Actor on its Store page so it is one click away next time.

### Why choose this actor?

- **The numbers that tell a live group from a dead one.** Every row has the exact member total (`146154`, not "146K"), Facebook's own counters for posts in the last day and the last 30 days, and `posts_per_day`. A 300,000 member group with 3 posts a month and a 6,000 member group with 70 sit side by side, sortable in a spreadsheet.
- **Public and private groups, no account.** Facebook shows a private group's About data to anyone, so private groups come back with members, activity, created date, locations and rules too. Nothing logs in, so no Facebook account can be restricted because of a run.
- **Pay per group, nothing for misses.** Groups that fail your filters, groups found twice, groups Facebook does not show, the summary row and error rows are never charged. A keyword that finds nothing costs no start fee.

[![Run it on Apify](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/button-run.png)](https://console.apify.com/actors/71C42x0OBcIIuJvdc/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Part of The Mine Works Social media and video family:** [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Instagram Followers & Following](https://apify.com/themineworks/instagram-followers-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Reddit Search Scraper](https://apify.com/themineworks/reddit-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral).

### Try it in one minute

Paste this into the input (JSON view) and press Start. It returns 20 groups about "real estate investors" with their About data read. It took 23 to 49 seconds in our test runs (38 in the last one):

```json
{
  "searchQueries": ["real estate investors"],
  "maxGroupsPerKeyword": 20
}
```

Put several keywords on separate lines to search them all in one run. A group that two keywords find is delivered once, under the first.

Apify's free plan includes $5 of credit every month, which covers about 2,900 groups at this actor's price.

#### Copy to your AI assistant

```text
themineworks/facebook-groups-search-scraper on Apify. Finds Facebook groups by keyword (optionally a location and a language) through web search, then reads each group logged out, and returns one flat row per group with no login. Call ApifyClient("TOKEN").actor("themineworks/facebook-groups-search-scraper").call(run_input={"searchQueries": ["real estate investors"], "maxGroupsPerKeyword": 100}), then client.dataset(run["defaultDatasetId"]).list_items().items. Give searchQueries (list of keywords) or startUrls (Facebook group links, share links /share/g/..., or group search links /search/groups/?q=...) or both; up to 100 keywords. Optional: maxGroupsPerKeyword (default 50, 1 to 1000), location (text added to every search), locationMustMatch (default false), language (en, es, pt, fr, de, it, nl, pl, tr, id, vi, ar, hi, ro, sv, tl; steers the search, not a strict filter), includeAbout (default true; members, privacy, activity, created date, locations, rules), privacy (any, public, private), minMembers (default 0), requireKeywordMatch (default false), searchEngines (default ["duckduckgo","brave"]; "google" optional). Group rows have no _type field and carry group_id, name, url, vanity, privacy, privacy_description, visibility, members, members_text, posts_today, posts_last_month, posts_per_day, created_at, history_text, location, locations, description, rules_count, rules (title, description), admins_and_moderators, emails, websites, image_url, keyword, keyword_match, search_query, source, search_result_url, about_read, about_error, rank, scraped_at. Each run also writes one row with _type "summary", one with _type "info" when groups were delivered, and a row with _type "error" for each input that could not be read; none of these is charged. Full spec: GET https://api.apify.com/v2/acts/themineworks~facebook-groups-search-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
```

### Key features

- **Keyword, location, language.** Each keyword runs as a short plan of web searches for `facebook.com/groups` pages: the keyword itself, then with "group", "community", "club" and similar words, so one keyword reaches past the first page. A location (London, Texas, Mumbai) is added to every search. A language adds its own words for group and community first, so `yoga` in French finds "Communauté Yoga" and "Yoga: groupe d'entraide".
- **Exact About data.** With `includeAbout` on (the default), each group's public About data is read: exact members, posts today and in the last 30 days, Public or Private, Visible or Hidden, the created date and name change history, every location the group set, each rule with its text, and the admin and moderator count.
- **Numeric id for every group.** Search results often show a vanity link such as `/groups/teslaownersaustralia/`. Every row carries the numeric `group_id` too, and a group found under both is delivered once.
- **Group links in, rows out.** Paste group links you already have (the group, its About tab, a post inside it, or a `/share/g/` link) to refresh their numbers, one row each.
- **Contacts the admins published.** `emails` and `websites` list the addresses and outside links written into the group's description or rules. Facebook links are left out.
- **Filters that cost you nothing.** Public or private only, a minimum member count, keyword in the name or description, location named by the group. Groups that fail a filter are never delivered or charged.
- **Stops cleanly.** A keyword that finds no group stops after one search page. A search engine that fails twice in a row is dropped for the run. The run stops before its time limit and keeps every row. The summary row says why a keyword came back short.

### How to use it

#### Basic: groups about one topic

```json
{
  "searchQueries": ["dog lovers"],
  "maxGroupsPerKeyword": 100
}
```

Sort by `posts_per_day` to find the groups people actually post in, or by `members` for reach.

#### Local groups in one city

```json
{
  "searchQueries": ["moms", "buy and sell"],
  "location": "Austin",
  "locationMustMatch": true,
  "maxGroupsPerKeyword": 50
}
```

The location steers every search toward Austin. With `locationMustMatch` on, a group is kept only when its Facebook locations, name or description mention Austin.

#### Large, active, public groups only

```json
{
  "searchQueries": ["real estate investors"],
  "privacy": "public",
  "minMembers": 10000,
  "maxGroupsPerKeyword": 50
}
```

Groups under 10,000 members or private ones are read and skipped, never charged. Very strict filters can end a keyword early; the summary row says how many groups each filter dropped.

#### Groups in another language

```json
{
  "searchQueries": ["yoga", "running"],
  "language": "fr",
  "maxGroupsPerKeyword": 50
}
```

French words for group and community lead the searches. Facebook does not publish a group's language, so this steers the search rather than filtering rows.

#### Refresh numbers for groups you already track

```json
{
  "startUrls": [
    "https://www.facebook.com/groups/teslaownersaustralia/",
    "https://www.facebook.com/groups/260505726202010/"
  ]
}
```

One row per link with today's members and activity. Filters do not apply to groups you list.

#### Fast list without About data

```json
{
  "searchQueries": ["nurses"],
  "includeAbout": false,
  "maxGroupsPerKeyword": 100
}
```

Rows carry the group id, name, link, description, first location and picture. In our test, 30 groups took 17 seconds this way. Same price per group.

### Input parameters

| Parameter | Type | Default | What it does |
|---|---|---|---|
| `searchQueries` | array of strings | empty | Keywords, one per line, each searched on its own. |
| `location` | string | empty | City, region or country added to every search. |
| `language` | string | any | Language code that steers the search: `en`, `es`, `pt`, `fr`, `de`, `it`, `nl`, `pl`, `tr`, `id`, `vi`, `ar`, `hi`, `ro`, `sv`, `tl`. |
| `maxGroupsPerKeyword` | integer | `50` | Most groups delivered per keyword, 1 to 1,000. |
| `includeAbout` | boolean | `true` | Reads each group's About data (members, privacy, activity, created date, locations, rules, admin count). |
| `privacy` | string | `any` | `public` or `private` to keep only those (turns About on). |
| `minMembers` | integer | `0` | Skip groups with fewer members (turns About on). |
| `requireKeywordMatch` | boolean | `false` | Keep a group only when every word of the keyword is in its name, description or location. |
| `locationMustMatch` | boolean | `false` | With a location set, keep a group only when it mentions every word of it. |
| `startUrls` | array of strings | empty | Group links, share links or Facebook group search links. |
| `searchEngines` | array | `duckduckgo`, `brave` | Where groups are looked up. Add `google` for more groups on some keywords (slower). |

Give `searchQueries`, `startUrls` or both. Up to 100 keywords and 5,000 group links per run. `maxGroups` and `maxItems` are accepted as names for `maxGroupsPerKeyword`.

### What data do you get?

One row per group. Group rows have no `_type` field; the summary, info and error rows do, so a filter on `_type` separates them.

| Field | What it is |
|---|---|
| `group_id` | Numeric Facebook group id, e.g. `179046264217457` |
| `name`, `url`, `vanity` | Group name, link, and the custom name in the link when there is one |
| `privacy`, `privacy_description` | `Public` or `Private`, and Facebook's explanation |
| `visibility` | `Visible` (anyone can find it) or `Hidden` |
| `members`, `members_text` | Exact member count, and the text as Facebook writes it |
| `posts_today`, `posts_last_month`, `posts_per_day` | Facebook's own post counters for the last day and 30 days, and the daily average |
| `created_at`, `history_text` | Created date (ISO 8601) and the creation and name change history |
| `location`, `locations` | First location the group set, and every location |
| `description` | Group description |
| `rules_count`, `rules` | Number of rules, and each rule's `title` and `description` |
| `admins_and_moderators` | Number of admins and moderators (public groups; Facebook hides it on private ones) |
| `emails`, `websites` | Addresses and outside links written into the description or rules |
| `image_url` | Group cover picture |
| `keyword`, `keyword_match` | The keyword that found the group, and where all its words appear: `name`, `description`, `location` or `none` |
| `search_query`, `source`, `search_result_url`, `rank` | The exact search, the engine (`duckduckgo`, `brave`, `google` or `group_url`), the result that pointed to the group (the group or a post in it), and the order the keyword delivered it |
| `about_read`, `about_error` | Whether the About data was read, and why not when it was not |
| `scraped_at` | When the row was written |

**Summary row** (`_type: "summary"`, never charged): `keywords_requested`, `keywords_read`, `searches_run`, `groups_found`, `groups_read`, `groups_delivered`, `charged_for`, `duplicates_skipped`, `about_ok`, `about_failed`, `not_found`, the count each filter dropped (`filtered_privacy`, `filtered_members`, `filtered_keyword`, `filtered_location`), request counts per search engine, `ended_on_deadline`, `stopped_by_max_cost`, `shortfall_reason` when fewer groups came back than asked, and `per_keyword`, one entry per keyword with `searches`, `pages`, `groups_found`, `delivered`, `filtered` and why it `stopped`. The same summary is saved as the `OUTPUT` record of the run.

**Error rows** (`_type: "error"`, never charged): one per input that could not be read, with `error_type` (`invalid_url`, `not_found`, `unreadable`, `share_link`), `identifier` and `reason`.

#### Stable fields for automations

These were present in every group row of our test runs (300 rows from 3 keywords, About on), and their names will not change:

| Field | What it is |
|---|---|
| `group_id` | The key to store and join on |
| `name` | Group name |
| `url` | Group link |
| `privacy` | Public or Private |
| `visibility` | Visible or Hidden |
| `members` | Exact member count |
| `posts_today` | Posts in the last day |
| `posts_last_month` | Posts in the last 30 days |
| `posts_per_day` | Daily average |
| `created_at` | Created date |
| `history_text` | Creation history |
| `rules_count` | Number of rules |
| `keyword` | Keyword that found it |
| `source` | Search engine |
| `rank` | Order for the keyword |

Optional, present only when Facebook shows a value: `vanity` (groups with a custom link name), `location` and `locations` (143 of 300 test rows; many groups set none), `description`, `admins_and_moderators` (public groups only), `image_url`, and `emails` (19 of 300) or `websites` (38 of 300). With `includeAbout` off, rows carry `group_id`, `name`, `url`, `description`, `location` and `image_url` only.

#### Output examples

One group from the "nurses" search (test run, 30 Oct 2026, trimmed):

```json
{
  "group_id": "336180506139537",
  "name": "Nurse Community",
  "url": "https://www.facebook.com/groups/nursescommunity/",
  "vanity": "nursescommunity",
  "privacy": "Public",
  "privacy_description": "Anyone can see who's in the group and what they post.",
  "visibility": "Visible",
  "members": 27501,
  "members_text": "27,501 total members",
  "posts_today": 56,
  "posts_last_month": 922,
  "posts_per_day": 30.7,
  "created_at": "2024-04-15T14:35:53.000Z",
  "history_text": "Group created on April 15, 2024. Name last changed on May 18, 2024.",
  "location": "United States",
  "locations": ["United States"],
  "description": "Welcome to Nurse Community! This group is dedicated to nurses across the United States...",
  "rules_count": 4,
  "rules": [
    { "title": "Respect everyone's privacy", "description": "Being part of this group requires mutual trust..." }
  ],
  "admins_and_moderators": 5,
  "emails": [],
  "websites": [],
  "keyword": "nurses",
  "keyword_match": "description",
  "search_query": "site:facebook.com/groups nurses",
  "source": "duckduckgo",
  "search_result_url": "https://www.facebook.com/groups/nursescommunity/",
  "about_read": true,
  "rank": 1,
  "scraped_at": "2026-10-30T18:59:49.412Z"
}
```

A private group from the "sourdough baking" search (trimmed):

```json
{
  "group_id": "2211426535791322",
  "name": "Sourdough Bread Baking",
  "url": "https://www.facebook.com/groups/2211426535791322/",
  "privacy": "Private",
  "visibility": "Visible",
  "members": 6309,
  "posts_today": 2,
  "posts_last_month": 70,
  "posts_per_day": 2.3,
  "created_at": "2019-03-13T16:49:12.000Z",
  "location": "Omaha, Nebraska",
  "rules_count": 3,
  "keyword": "sourdough baking",
  "keyword_match": "name",
  "source": "duckduckgo",
  "rank": 6
}
```

An error row, never charged:

```json
{ "_type": "error", "error_type": "invalid_url", "identifier": "https://www.facebook.com/teslamotors", "reason": "Not a Facebook group link. Use a link like https://www.facebook.com/groups/<name or id>/, a share link https://www.facebook.com/share/g/<code>/, or put words in searchQueries." }
```

### Pricing

Pay per event: you pay for the groups you receive, plus a flat $0.003 per run, whatever memory you choose. Reading the About data costs nothing extra, and neither does adding Google.

| Event | When it is charged | Free plan | Bronze (Starter) | Silver (Scale) | Gold (Business) |
|---|---|---|---|---|---|
| `group-scraped` | Once per group row stored in your dataset | $1.71 per 1,000 | $1.55 per 1,000 | $1.40 per 1,000 | $1.25 per 1,000 |
| `run-start` | Once per run, after the first group reached your dataset | $0.003 | $0.003 | $0.003 | $0.003 |

The price of one group is the price per 1,000 divided by 1,000.

Never charged:

- links that are not Facebook group links (each gets an error row);
- groups that fail your privacy, member, keyword or location filters;
- a group found twice in the same run (two keywords, or its vanity link and its id);
- groups Facebook does not show to a logged out visitor (removed, secret, or limited by age or country);
- groups past your `maxGroupsPerKeyword`;
- the summary, info and error rows;
- a run with no valid input, or one whose keywords find no group: the start fee is charged only once a group reached your dataset;
- anything past your "Max cost per run". The actor checks the budget before each batch of rows and stops while the total is still below your limit, so the run ends SUCCEEDED with a partial result and a status message saying so.

### Run it on a schedule

1. Open the actor in Apify Console, set your input and click **Save as a new task**.
2. In the task, open **Schedules**, click **Add schedule** and pick how often (every day, every Monday at 08:00 and so on).
3. Compare runs on `group_id` to spot new groups for your keywords, and on `members` and `posts_last_month` to see which ones grow.
4. Optional: add an integration (Google Sheets, Slack, a webhook) so each run lands where your team works.

### FAQ

#### How does it find groups without a Facebook login?

Facebook's own group search needs a login, so the actor finds groups the way people find them on the open web: `site:facebook.com/groups` searches on DuckDuckGo and Brave (and Google if you add it). Any result inside a group, such as a post or its About tab, counts for that group. Each group is then read logged out from Facebook itself, so the numbers are Facebook's own.

#### How many groups can I get per keyword?

Up to 1,000. Popular keywords reached 100 groups in every one of our tests (dog lovers, crypto trading, yoga teachers, vintage cars, wedding photographers, nurses, sourdough baking, small business owners); niche ones return fewer. It is not every group Facebook holds, only the ones the web can see. More specific keywords (a city, a product, a hobby) reach further, and each keyword in a run adds its own groups.

#### Why are some groups not about my exact keyword?

A search result can be a post inside a group, so a group whose members talk about "crypto trading" can be named "Bitcoin Investors". `keyword_match` says where all the words of your keyword appear (`name`, `description`, `location` or `none`). Turn on `requireKeywordMatch` to keep only the groups whose name, description or location carry them.

#### Does it work for private groups?

Yes. Facebook shows a private group's About data to anyone: name, members, activity, created date, locations and rules. Its posts stay hidden, and Facebook does not show its admin count, so `admins_and_moderators` is empty on private groups. Secret (hidden) groups cannot be found from outside.

#### How is activity measured?

`posts_today` and `posts_last_month` are Facebook's own counters from the About data. `posts_per_day` is `posts_last_month` divided by 30, rounded to one decimal.

#### How long does a run take?

In our tests: 23 to 49 seconds for the "Try it" input (20 groups), about 3.5 to 6.5 minutes for 200 groups from two keywords, 9 minutes for 300 groups from three keywords, and 17 seconds for 30 groups with `includeAbout` off. The default time limit is 3,600 seconds; the actor stops before it and keeps every row.

#### Does it return admin names or member lists?

No. Member lists, admin names and posts need a login. Only the admin and moderator count is returned, and only the emails and websites the admins wrote into the description or rules.

#### Do I need an account, cookies or a proxy?

No. The actor uses Apify Proxy, which is included in the price. Nothing to set up.

#### Which actor should I use next?

[Facebook Pages Scraper](https://apify.com/themineworks/facebook-pages-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) for details, followers and contacts of business Pages, [Facebook Comments Scraper](https://apify.com/themineworks/facebook-comments-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) for comments on public posts, and [Facebook Ad Library Scraper](https://apify.com/themineworks/meta-ad-library-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) for the ads brands run.

#### Which formats can I download?

JSON, CSV, Excel, XML, RSS and HTML from the run's Storage tab or through the API. The dataset has two ready views: Groups, and About details. In CSV and Excel, `locations` and `rules` are flattened into columns such as `locations/0` and `rules/0/title`.

#### Can I use it from Claude, ChatGPT or Cursor (MCP)?

Yes, through Apify's MCP server. Connector URL: https://mcp.apify.com/?tools=themineworks/facebook-groups-search-scraper

- Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: turn on developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code: `claude mcp add -t http facebook-groups-search-scraper "https://mcp.apify.com/?tools=themineworks/facebook-groups-search-scraper"`

#### Is it legal to scrape Facebook groups?

The actor reads only what Facebook shows to anyone without logging in: a group's public About information and public web search results. It does not log in, join groups or read posts or members. You are responsible for how you use the data, including Facebook's terms and data protection law such as GDPR and CCPA. This is general information, not legal advice.

### Integrations

- **Google Sheets**: send each run's groups to a sheet with Apify's Google Sheets integration; one row per group fits a sheet as is.
- **Make, Zapier and n8n**: start a run and read its dataset with the Apify apps and nodes, for example "new groups for our keywords every Monday to Slack".
- **Webhooks**: have Apify call your URL when a run succeeds, then fetch the dataset.
- **API and SDKs**: run it from Python or JavaScript with the Apify client, or with a plain HTTP call (see "Copy to your AI assistant" above).
- **MCP clients**: Claude, ChatGPT, Cursor and VS Code can run it as a tool through the connector URL in the FAQ.

### More from The Mine Works

**Social media and video**

- [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Followers & Following](https://apify.com/themineworks/instagram-followers-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Search Scraper](https://apify.com/themineworks/reddit-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Twitter / X Scraper](https://apify.com/themineworks/twitter-x-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [YouTube Transcript](https://apify.com/themineworks/youtube-transcript-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Xiaohongshu (RED) Scraper](https://apify.com/themineworks/xiaohongshu-explore-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Telegram Channel Scraper](https://apify.com/themineworks/telegram-channel-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Telegram Channel Finder](https://apify.com/themineworks/telegram-channel-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Pinterest Profile Scraper](https://apify.com/themineworks/pinterest-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Leads and business directories**

- [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Skip Trace Lookup](https://apify.com/themineworks/skip-trace-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [2GIS Places Scraper](https://apify.com/themineworks/2gis-places-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Marketing, SEO and reviews**

- [Facebook Ad Library Scraper](https://apify.com/themineworks/meta-ad-library-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Ads Transparency Scraper](https://apify.com/themineworks/google-ads-transparency?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Similarweb Scraper](https://apify.com/themineworks/similarweb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google News Scraper](https://apify.com/themineworks/google-news?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**LinkedIn**

- [LinkedIn Company Scraper](https://apify.com/themineworks/linkedin-company-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Post Scraper](https://apify.com/themineworks/linkedin-post-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Employees Scraper](https://apify.com/themineworks/linkedin-employees?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Profile Scraper](https://apify.com/themineworks/linkedin-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Real estate**

- [Zillow Rentals Scraper](https://apify.com/themineworks/zillow-rental-listings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow Sold Comps Scraper](https://apify.com/themineworks/zillow-recently-sold?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Real Estate MCP](https://apify.com/themineworks/india-real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Housing.com Scraper](https://apify.com/themineworks/housing-com-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Science, health and government data**

- [Academic Research MCP](https://apify.com/themineworks/academic-research-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [CourtListener Scraper](https://apify.com/themineworks/courtlistener-court-records?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Socrata Open Data Scraper](https://apify.com/themineworks/socrata-open-data?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [OpenAlex Scraper](https://apify.com/themineworks/openalex-scholarly-works?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Jobs and hiring**

- [Foundit Monster India Jobs](https://apify.com/themineworks/foundit-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Hirist Jobs Scraper](https://apify.com/themineworks/hirist-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Jobs MCP](https://apify.com/themineworks/india-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naukri Jobs Scraper](https://apify.com/themineworks/naukri-jobs?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Company and business data**

- [Company Domain Finder](https://apify.com/themineworks/company-domain-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GST Taxpayer Lookup](https://apify.com/themineworks/gst-taxpayer-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Company KYB Resolver](https://apify.com/themineworks/company-identity-resolver?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [SEC EDGAR Filings Scraper](https://apify.com/themineworks/sec-edgar-filings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**E-commerce and marketplaces**

- [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Etsy Listings Scraper](https://apify.com/themineworks/etsy-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Food and local services**

- [NoBroker Scraper](https://apify.com/themineworks/nobroker-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Swiggy Restaurant Scraper](https://apify.com/themineworks/swiggy-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zomato Scraper](https://apify.com/themineworks/zomato-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Developer and AI tools**

- [Website to Markdown Crawler](https://apify.com/themineworks/rag-crawler?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Skill Finder](https://apify.com/themineworks/github-skill-discovery?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Repo Scraper](https://apify.com/themineworks/github-repo-intelligence?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Trending Scraper](https://apify.com/themineworks/github-trending-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**More tools**

- [G2 Reviews Scraper](https://apify.com/themineworks/g2-reviews-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naver Blog Scraper](https://apify.com/themineworks/naver-blog-posts-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [WeChat Article Scraper 微信公众号文章](https://apify.com/themineworks/wechat-article-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Taobao Products Scraper 淘宝 天猫](https://apify.com/themineworks/taobao-products-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

### Support

Found a keyword that returns fewer groups than you expect, or a field that comes back empty? Open an issue in the Issues tab with the input and the run ID, and we will look at it. For a field you need or a new source, email dmineworks@gmail.com.

*Find Facebook groups by keyword, location or language and get every group back as one row, with its id, link, public or private, exact members, posts per day, created date, locations and rules, no login.*

# Actor input Schema

## `searchQueries` (type: `array`):

What the groups are about, one keyword or phrase per line. Example: real estate investors, dog lovers, crypto trading, nurses. Each keyword is searched on its own. Up to 100 keywords per run.

## `location` (type: `string`):

A city, region or country added to every search, for example London, Texas or Mumbai. It steers the search toward local groups. Turn on "Only groups that mention the location" to drop groups that do not name it.

## `language` (type: `string`):

Adds that language's words for group and community to the searches and asks DuckDuckGo for that region, so groups in that language come up first. It steers the search; Facebook does not publish a group's language, so it is not a strict filter.

## `maxGroupsPerKeyword` (type: `integer`):

Stop a keyword once this many groups are delivered, 1 to 1,000. Popular keywords usually reach 100 to 300 groups, niche ones fewer. Example: 100.

## `includeAbout` (type: `boolean`):

On: each group's public About data is read logged out for the exact member count, public or private, posts today and in the last 30 days, created date, every location, the rules and the number of admins and moderators. Off: rows carry the group id, name, link, description and first location only, which is faster. Same price either way.

## `privacy` (type: `string`):

Keep only public or only private groups. Private groups still show their name, members, activity, location and rules to anyone; only their posts are hidden. Needs the About page (turned on automatically).

## `minMembers` (type: `integer`):

Skip groups with fewer members than this. 0 keeps every size. Needs the About page (turned on automatically). Groups skipped by a filter are never charged.

## `requireKeywordMatch` (type: `boolean`):

Keep a group only when every word of the keyword appears in its name, description or location. Off: groups whose members posted about the keyword are kept too. Each row says where the keyword matched in keyword_match.

## `locationMustMatch` (type: `boolean`):

With a location set, keep a group only when its Facebook locations, name or description name every word of it.

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

Facebook group links to read directly, one per line: https://www.facebook.com/groups/<name or id>/, a post or About link inside a group, or a share link https://www.facebook.com/share/g/<code>/. A Facebook group search link (https://www.facebook.com/search/groups/?q=yoga) becomes a keyword. Filters do not apply to groups you list.

## `searchEngines` (type: `array`):

Where groups are looked up, in this order. DuckDuckGo and Brave are included in the price. Google adds more groups for some keywords; it is used only when you add it here and does not change the price.

## Actor input object example

```json
{
  "searchQueries": [
    "real estate investors"
  ],
  "language": "",
  "maxGroupsPerKeyword": 20,
  "includeAbout": true,
  "privacy": "any",
  "minMembers": 0,
  "requireKeywordMatch": false,
  "locationMustMatch": false,
  "searchEngines": [
    "duckduckgo",
    "brave"
  ]
}
```

# Actor output Schema

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

No description

## `summary` (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 = {
    "searchQueries": [
        "real estate investors"
    ],
    "maxGroupsPerKeyword": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/facebook-groups-search-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 = {
    "searchQueries": ["real estate investors"],
    "maxGroupsPerKeyword": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/facebook-groups-search-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 '{
  "searchQueries": [
    "real estate investors"
  ],
  "maxGroupsPerKeyword": 20
}' |
apify call themineworks/facebook-groups-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,themineworks/facebook-groups-search-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/71C42x0OBcIIuJvdc/builds/mWs03kVHAaodANlEO/openapi.json
