# WhatsApp Group Link Search (`lofomachines/whatsapp-group-search`) Actor

Find public WhatsApp group links and group chat invite URLs by keyword for shopping deals, tourist spots, fashion ideas, recipes, travel, local communities, and topic chats. Results may include groups where somebody talked about the topic even if the group name looks broader.

- **URL**: https://apify.com/lofomachines/whatsapp-group-search.md
- **Developed by:** [Lofomachines](https://apify.com/lofomachines) (community)
- **Categories:** Social media, Lead generation
- **Stats:** 7 total users, 4 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $9.90 / 1,000 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## WhatsApp Group Link Search Scraper

Find public WhatsApp group links, WhatsApp invite URLs, public group chats, and public group chat previews by keyword, topic, or country.

This Apify Actor works as a **WhatsApp group finder**, **WhatsApp group link scraper**, **public WhatsApp invite link search tool**, **community discovery scraper**, and **WhatsApp invite URL collector**. It searches public web results for WhatsApp group invite links related to your keywords and saves structured results in an Apify Dataset.

Use it to discover public WhatsApp groups around topics such as jobs, travel, recipes, shopping deals, crypto, fashion, local communities, education, tourism, real estate, events, hobbies, or niche interest groups.

The Actor only collects publicly available web results and public WhatsApp invite preview metadata. It does **not** join WhatsApp groups, does **not** read messages, does **not** require WhatsApp login, and does **not** use WhatsApp Web.

---

### What does this WhatsApp Group Link Search Actor do?

This Actor searches the public web for WhatsApp invite links connected to your input keywords and selected country. For every matching public invite link, it normalizes the URL, extracts the invite code, and enriches the result with available public preview metadata.

It can help you answer questions like:

* Which public WhatsApp groups exist for a specific topic?
* Are there public WhatsApp invite links around a local niche?
* Which public WhatsApp communities are discoverable from the open web?
* Can I collect WhatsApp group invite URLs for research, OSINT, lead discovery, or market mapping?
* Can an AI agent discover WhatsApp groups related to a keyword and return structured JSON?

---

### Main use cases

#### 1. Public WhatsApp group discovery

Find public WhatsApp groups related to topics such as:

* `jobs`
* `travel`
* `recipes`
* `gardening`
* `shopping deals`
* `tourist spots`
* `fashion ideas`
* `crypto`
* `real estate`
* `students`
* `football`
* `local events`

Example: search for `jobs` in India to discover public WhatsApp job groups, recruitment groups, local opportunity groups, or career-related communities.

---

#### 2. OSINT and public web research

Use this Actor to collect public WhatsApp invite links that appear on indexed web pages, forums, directories, blogs, public posts, or other open web sources.

Useful for:

* OSINT investigations
* Public community mapping
* Online group discovery
* Public invite link monitoring
* Topic-based web intelligence
* Research on public group ecosystems

The Actor does not access private WhatsApp content. It only works with public links and public preview metadata.

---

#### 3. Lead generation and community intelligence

Find communities where people discuss products, services, locations, jobs, events, or niche interests.

Examples:

* Travel agencies can discover tourist WhatsApp groups.
* Recruiters can discover public job groups.
* E-commerce operators can discover shopping deal groups.
* Researchers can map public communities around a market.
* Local businesses can find public groups related to cities or regions.

---

#### 4. AI agent workflows

This Actor is designed to be easy for AI agents, automation tools, and coding assistants to understand and run.

AI agents such as Claude, ChatGPT, Cursor, Codex, LangChain agents, n8n agents, Make scenarios, or custom scripts can use this Actor to:

1. Search public WhatsApp group links for a topic.
2. Retrieve structured dataset results.
3. Filter groups by keyword, country, name, or invite URL.
4. Pass the results to another enrichment, classification, CRM, monitoring, or reporting workflow.

---

### What it finds

The Actor searches public web results for WhatsApp invite links related to your keywords.

A result can match because someone mentioned the topic near the group invite link, even if the WhatsApp group name itself is broader, generic, or only partially related.

When an invite page only exposes a generic public preview with no group name and no group image, the Actor skips that link and continues searching. Results can still include groups with a public name but no custom image, because some valid groups do not expose a public group photo.

For example, a keyword like `recipes` might return:

* A cooking group with `recipes` in the group name
* A food community where recipe discussions were mentioned nearby
* A shopping or deals group where kitchen or food content appeared
* A local community group where someone shared recipe-related content

This makes the Actor useful for broad public discovery, not only exact-title matching.

---

### Input parameters

| Field       |         Type | Description                                                                                                                                     |
| ----------- | -----------: | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `keywords`  | array/string | Topics to search for, such as `shopping deals`, `tourist spots`, `fashion ideas`, `recipes`, `gardening`, `travel`, `jobs`, or local interests. |
| `country`   |       string | Pre-populated country selector. The Actor uses the correct country code for localized search.                                                   |
| `maxGroups` |      integer | Maximum number of unique public WhatsApp group links to save. Maximum supported value: `3000`. Search concurrency is automatic: 1 pass below 50 groups, 2 passes from 50 to 100 groups, and 3 passes above 100 groups. |

---

### Example input

```json
{
  "keywords": [
    "recipes",
    "gardening",
    "travel deals"
  ],
  "country": "United States",
  "maxGroups": 100
}
````

***

### Output fields

Each dataset item can include:

| Field              | Description                                                       |
| ------------------ | ----------------------------------------------------------------- |
| `invite_url`       | Normalized public WhatsApp group invite URL.                      |
| `invite_code`      | WhatsApp invite code extracted from the URL.                      |
| `name`             | Public group name when WhatsApp exposes it in the invite preview. |
| `image_url`        | Public group image or preview image when available.               |
| `image_is_default` | Whether the image appears to be WhatsApp's generic default image. |
| `keyword`          | Keyword that found the result.                                    |
| `country`          | Selected search country.                                          |
| `search_date`      | Date window used for discovery.                                   |
| `invite_link_type` | Public invite type when exposed.                                  |
| `notes`            | Metadata availability notes.                                      |

***

### Example output

```json
{
  "invite_url": "https://chat.whatsapp.com/EXAMPLEINVITECODE",
  "invite_code": "EXAMPLEINVITECODE",
  "name": "Travel Deals Community",
  "image_url": "https://pps.whatsapp.net/example-image.jpg",
  "image_is_default": false,
  "keyword": "travel deals",
  "country": "United States",
  "search_date": "2026-06-08",
  "invite_link_type": "group_invite",
  "notes": "Public invite preview metadata available"
}
```

***

### How to run this Actor on Apify

1. Open the Actor on Apify Store.
2. Enter one or more keywords.
3. Select a country.
4. Choose the maximum number of groups to save.
5. Start the Actor.
6. Download results from the Dataset as JSON, CSV, Excel, XML, or RSS.

***

### Run with Apify API

You can run this Actor programmatically using the Apify API.

```bash
curl "https://api.apify.com/v2/acts/lofomachines~whatsapp-group-link-search/runs?token=$APIFY_TOKEN" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "keywords": ["jobs", "remote work", "career"],
    "country": "United States",
    "maxGroups": 100
  }'
```

After the run finishes, retrieve the dataset items:

```bash
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?format=json&clean=true&token=$APIFY_TOKEN"
```

Replace:

- `APIFY_TOKEN` with your Apify API token
- `DATASET_ID` with the default dataset ID from the Actor run

***

### JavaScript example

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

const client = new ApifyClient({
  token: process.env.APIFY_TOKEN,
});

const input = {
  keywords: ['jobs', 'remote work', 'career'],
  country: 'United States',
  maxGroups: 100,
};

const run = await client.actor('lofomachines/whatsapp-group-link-search').call(input);

const { items } = await client.dataset(run.defaultDatasetId).listItems();

console.log(items);
```

***

### Python example

```python
from apify_client import ApifyClient
import os

client = ApifyClient(os.environ["APIFY_TOKEN"])

run_input = {
    "keywords": ["recipes", "cooking", "food deals"],
    "country": "United States",
    "maxGroups": 100,
}

run = client.actor("lofomachines/whatsapp-group-link-search").call(run_input)

items = client.dataset(run["defaultDatasetId"]).list_items().items

for item in items:
    print(item.get("name"), item.get("invite_url"))
```

***

### Automation examples

#### Example 1: Daily monitoring of public WhatsApp groups

Run the Actor every day with a fixed keyword list and save new public invite links to a database.

Suggested workflow:

1. Schedule the Actor daily on Apify.
2. Search for your target keywords.
3. Export the dataset to Google Sheets, Airtable, Notion, Supabase, or a CRM.
4. Deduplicate by `invite_code`.
5. Send new results to Slack, Discord, email, or an internal dashboard.

Example keywords:

```json
{
  "keywords": ["ai jobs", "remote jobs", "freelance work"],
  "country": "United States",
  "maxGroups": 250
}
```

***

#### Example 2: AI-powered group classification

Use this Actor as the first step in an AI enrichment pipeline.

Suggested workflow:

1. Run this Actor to collect public WhatsApp group invite links.
2. Send each result to an LLM classifier.
3. Categorize each group by topic, language, location, relevance, or commercial intent.
4. Save classified groups to a structured database.
5. Review only the most relevant results.

Example categories:

- Jobs
- Travel
- Local community
- Deals
- Education
- Crypto
- Real estate
- Events
- Spam or low relevance

***

#### Example 3: Market research and community mapping

Use the Actor to map public WhatsApp communities around a niche.

Example searches:

```json
{
  "keywords": [
    "skincare deals",
    "beauty community",
    "makeup tips",
    "cosmetics wholesale"
  ],
  "country": "United Kingdom",
  "maxGroups": 500
}
```

Then analyze:

- Repeated group names
- Topic clusters
- Countries with more public groups
- Keywords producing the best results
- Invite links that appear across multiple public pages

***

#### Example 4: n8n automation

You can use this Actor inside n8n with an HTTP Request node or Apify integration.

Basic flow:

1. Trigger: Schedule node
2. Action: Run Apify Actor
3. Action: Wait for run to finish
4. Action: Get Dataset items
5. Action: Filter results by `name`, `keyword`, or `country`
6. Action: Save to Google Sheets, Airtable, Supabase, or Notion
7. Action: Send summary to Slack or email

***

### AI agent instructions

This section is written to help AI agents understand how to use this Actor.

#### Actor purpose

Use this Actor when the user wants to find public WhatsApp group invite links related to one or more keywords, topics, niches, or countries.

#### Good tasks for this Actor

Use this Actor for requests such as:

- “Find public WhatsApp groups about remote jobs.”
- “Collect WhatsApp invite links for travel communities in Italy.”
- “Search for public WhatsApp groups about recipes.”
- “Build a dataset of public WhatsApp group links for gardening.”
- “Find public WhatsApp communities around crypto, trading, or investing.”
- “Discover WhatsApp groups related to tourism in Spain.”

#### Do not use this Actor for

Do not use this Actor when the user asks to:

- Join WhatsApp groups
- Read WhatsApp group messages
- Scrape private WhatsApp chats
- Bypass WhatsApp login
- Extract member lists
- Extract phone numbers
- Get private group data
- Get member count
- Send messages to groups

This Actor only discovers public invite links and public invite preview metadata.

#### Recommended input for agents

```json
{
  "keywords": ["TARGET_TOPIC_1", "TARGET_TOPIC_2"],
  "country": "TARGET_COUNTRY",
  "maxGroups": 100
}
```

#### Recommended post-processing for agents

After retrieving results, agents should:

1. Deduplicate by `invite_code`.
2. Check whether `name` is present.
3. Filter out generic or irrelevant groups.
4. Group results by `keyword`.
5. Return the most relevant `invite_url`, `name`, `country`, and `notes`.
6. Avoid claiming that a group is active, safe, official, or high quality unless independently verified.

***

### Why results may look broad or partially unrelated

A result may be returned because the keyword appears inside one message of the group, even if the group name itself does not exactly match the keyword.

Example:

Keyword:

```text
recipes
```

Possible matches:

- “Best Cooking Recipes”
- “Food Lovers Community”
- “Local Deals Group”
- “Kitchen Tips and Shopping”
- “Community Chat”

This behavior is useful for broad discovery and OSINT-style research, but you should filter results after collection if you need strict topical relevance.

***

### Public data and compliance

This Actor only works with:

- Public WhatsApp invite URLs
- Public WhatsApp invite preview metadata when exposed

It does not:

- Log in to WhatsApp
- Join groups
- Read group messages
- Scrape private conversations
- Extract group members
- Extract phone numbers
- Send messages

You are responsible for using the collected data lawfully and in accordance with applicable privacy rules, platform terms, and local regulations.

***

### Best practices

For better results:

- Use specific keywords instead of very generic ones.
- Test multiple keyword variations.
- Use local language keywords for local communities.
- Use country targeting when researching a specific market.
- Start with a smaller `maxGroups` value, then scale up. The Actor automatically keeps smaller runs gentler and increases parallel search passes only for larger result targets.
- Deduplicate by `invite_code`.
- Manually review results before outreach, analysis, or publication.
- Do not assume that a public invite link means the group is official, active, safe, or moderated.

Keyword examples:

```text
remote jobs
student housing
rome travel
vegan recipes
crypto trading
football fans
fashion deals
gardening tips
real estate investors
tourist spots
```

***

### Common search strategies

#### Broad niche discovery

```json
{
  "keywords": ["travel", "tourism", "backpacking"],
  "country": "United States",
  "maxGroups": 300
}
```

#### Local community discovery

```json
{
  "keywords": ["rome events", "rome students", "rome housing"],
  "country": "Italy",
  "maxGroups": 200
}
```

#### Job group discovery

```json
{
  "keywords": ["jobs", "remote jobs", "freelance jobs"],
  "country": "India",
  "maxGroups": 500
}
```

#### Shopping and deals discovery

```json
{
  "keywords": ["shopping deals", "discounts", "coupons"],
  "country": "United Kingdom",
  "maxGroups": 300
}
```

***

### FAQ

#### Can this Actor find private WhatsApp groups?

No. It only finds public invite links that are discoverable from public web results.

#### Does it join WhatsApp groups?

No. The Actor does not join groups.

#### Does it read group messages?

No. It does not read or access messages.

#### Does it require WhatsApp login?

No. The Actor does not require WhatsApp login, session IDs, cookies, QR codes, or WhatsApp Web.

#### Does it return member count?

No. The output intentionally excludes member count.

#### Why is the group name sometimes missing?

WhatsApp does not always expose public preview metadata. When metadata is unavailable, the Actor still saves the invite URL and available discovery information.

#### Why are some results not perfectly related to my keyword?

Because the Actor searches public web pages where the invite link appears. The keyword may appear inside the group, even if the group name is broader or generic.

#### Can I export the results?

Yes. Apify datasets can be exported as JSON, CSV, Excel, XML, RSS, or accessed through the API.

***

### Similar Actor

Need Telegram groups or channels instead of WhatsApp group links?

[Telegram Keyword Search Scraper](https://apify.com/lofomachines/telegram-keyword-search-scraper)

***

### Related keywords

WhatsApp group finder, WhatsApp group link scraper, WhatsApp invite link scraper, WhatsApp group search, public WhatsApp groups, WhatsApp group links, WhatsApp invite URLs, WhatsApp community discovery, WhatsApp group finder by keyword, WhatsApp group finder by country, WhatsApp public invite links, WhatsApp OSINT tool, public group chat search, group invite link scraper, Apify WhatsApp scraper, WhatsApp group dataset, WhatsApp group automation, WhatsApp link collector.

# Actor input Schema

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

One or more topics to search for public WhatsApp group links, such as shopping deals, tourist spots, fashion ideas, recipes, gardening, travel, jobs, or local communities. A result may match because the topic was discussed near the group invite, even if the group name itself looks broader.

## `country` (type: `string`):

Choose the country/market for public WhatsApp group link discovery.

## `maxGroups` (type: `integer`):

Maximum number of unique public WhatsApp group links to save. The actor adjusts search concurrency automatically: 1 search pass below 50 groups, 2 from 50 to 100 groups, and 3 above 100 groups.

## Actor input object example

```json
{
  "keywords": [
    "gardening"
  ],
  "country": "US",
  "maxGroups": 10
}
```

# 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 = {
    "keywords": [
        "gardening"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("lofomachines/whatsapp-group-search").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 = { "keywords": ["gardening"] }

# Run the Actor and wait for it to finish
run = client.actor("lofomachines/whatsapp-group-search").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "keywords": [
    "gardening"
  ]
}' |
apify call lofomachines/whatsapp-group-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=lofomachines/whatsapp-group-search",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "WhatsApp Group Link Search",
        "description": "Find public WhatsApp group links and group chat invite URLs by keyword for shopping deals, tourist spots, fashion ideas, recipes, travel, local communities, and topic chats. Results may include groups where somebody talked about the topic even if the group name looks broader.",
        "version": "1.0",
        "x-build-id": "Kp18PEERF9gvq9d6S"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/lofomachines~whatsapp-group-search/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-lofomachines-whatsapp-group-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/lofomachines~whatsapp-group-search/runs": {
            "post": {
                "operationId": "runs-sync-lofomachines-whatsapp-group-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/lofomachines~whatsapp-group-search/run-sync": {
            "post": {
                "operationId": "run-sync-lofomachines-whatsapp-group-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "keywords",
                    "country",
                    "maxGroups"
                ],
                "properties": {
                    "keywords": {
                        "title": "Keywords",
                        "type": "array",
                        "description": "One or more topics to search for public WhatsApp group links, such as shopping deals, tourist spots, fashion ideas, recipes, gardening, travel, jobs, or local communities. A result may match because the topic was discussed near the group invite, even if the group name itself looks broader.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "country": {
                        "title": "Country",
                        "enum": [
                            "US",
                            "GB",
                            "CA",
                            "AU",
                            "NZ",
                            "IE",
                            "IT",
                            "FR",
                            "DE",
                            "ES",
                            "PT",
                            "NL",
                            "BE",
                            "CH",
                            "AT",
                            "SE",
                            "NO",
                            "DK",
                            "FI",
                            "IS",
                            "PL",
                            "CZ",
                            "SK",
                            "HU",
                            "RO",
                            "BG",
                            "GR",
                            "TR",
                            "UA",
                            "RU",
                            "IL",
                            "AE",
                            "SA",
                            "QA",
                            "KW",
                            "EG",
                            "ZA",
                            "NG",
                            "KE",
                            "MA",
                            "IN",
                            "PK",
                            "BD",
                            "LK",
                            "NP",
                            "ID",
                            "MY",
                            "SG",
                            "TH",
                            "PH",
                            "VN",
                            "JP",
                            "KR",
                            "CN",
                            "HK",
                            "TW",
                            "BR",
                            "MX",
                            "AR",
                            "CL",
                            "CO",
                            "PE",
                            "VE",
                            "UY",
                            "EC",
                            "BO",
                            "PY",
                            "CR",
                            "PA",
                            "DO",
                            "GT",
                            "HN",
                            "SV",
                            "NI",
                            "CU",
                            "JM"
                        ],
                        "type": "string",
                        "description": "Choose the country/market for public WhatsApp group link discovery.",
                        "default": "US"
                    },
                    "maxGroups": {
                        "title": "Max groups",
                        "minimum": 1,
                        "maximum": 3000,
                        "type": "integer",
                        "description": "Maximum number of unique public WhatsApp group links to save. The actor adjusts search concurrency automatically: 1 search pass below 50 groups, 2 from 50 to 100 groups, and 3 above 100 groups.",
                        "default": 10
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
