{
  "openapi": "3.0.1",
  "info": {
    "title": "WhatsApp Group Links Scraper & Precision Search Filters",
    "description": "WhatsApp Group Links Scraper & Precision Search Filters extracts public WhatsApp group links using targeted filters, including keywords, categories, titles, descriptions, locations, and topics. Ideal for group discovery, community research, audience analysis, and market research.",
    "version": "0.1",
    "x-build-id": "S9cAgjN3e85b5utsG"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/simpleapi~whatsapp-group-links-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-simpleapi-whatsapp-group-links-scraper",
        "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/simpleapi~whatsapp-group-links-scraper/runs": {
      "post": {
        "operationId": "runs-sync-simpleapi-whatsapp-group-links-scraper",
        "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/simpleapi~whatsapp-group-links-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-simpleapi-whatsapp-group-links-scraper",
        "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",
        "properties": {
          "searchTerms": {
            "title": "🔤 Search Terms",
            "type": "array",
            "description": "Topics you want WhatsApp groups for — one term per line (e.g. \"marketing\", \"crypto jobs\", \"real estate\"). Every term is searched on its own and tagged in the output. Example: [\"marketing\", \"jobs\"].",
            "items": {
              "type": "string"
            }
          },
          "socialSource": {
            "title": "📡 Source Network",
            "enum": [
              "facebook.com",
              "linkedin.com",
              "instagram.com",
              "twitter.com",
              "youtube.com",
              "reddit.com",
              "pinterest.com",
              "tiktok.com"
            ],
            "type": "string",
            "description": "Which social network the invite links are published on. Pick the network where your audience posts group invites. Example: facebook.com."
          },
          "geoTarget": {
            "title": "🌍 Region Bias",
            "enum": [
              "us",
              "uk",
              "ca",
              "au",
              "in",
              "it",
              "gm",
              "fr",
              "sp",
              "al",
              "ag",
              "ar",
              "am",
              "as",
              "aj",
              "bg",
              "bo",
              "be",
              "bh",
              "bk",
              "br",
              "bu",
              "ci",
              "ch",
              "co",
              "cs",
              "hr",
              "cu",
              "ez",
              "dk",
              "ec",
              "eg",
              "en",
              "fi",
              "gg",
              "gr",
              "hk",
              "hu",
              "ic",
              "id",
              "ir",
              "iz",
              "ei",
              "is",
              "jm",
              "ja",
              "ke",
              "kn",
              "ks",
              "ku",
              "lg",
              "ly",
              "ls",
              "lh",
              "lu",
              "mc",
              "mk",
              "my",
              "mt",
              "mx",
              "md",
              "mn",
              "mj",
              "mo",
              "np",
              "nl",
              "nz",
              "ni",
              "no",
              "pk",
              "we",
              "pm",
              "pa",
              "pe",
              "rp",
              "pl",
              "po",
              "rq",
              "qa",
              "ro",
              "rs",
              "sm",
              "sa",
              "sg",
              "ri",
              "sn",
              "lo",
              "si",
              "sf",
              "sw",
              "sz",
              "sy",
              "tw",
              "th",
              "ts",
              "tu",
              "ua",
              "ae",
              "uy",
              "uz",
              "ve"
            ],
            "type": "string",
            "description": "Bias the results toward one country so you get groups relevant to that market. Example: United States."
          },
          "maxLinkRecords": {
            "title": "🔢 Record Budget",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many kept link records (counted across all search terms, after every filter below has been applied). Leave empty to keep everything found. Example: 25."
          },
          "excludeTerms": {
            "title": "🚫 Exclude Terms",
            "type": "array",
            "description": "Drop any result whose title, snippet or source link mentions one of these words — the same words are also pushed into the query itself as negatives. Great for cutting scam bait or off-topic hits. Example: [\"scam\", \"betting\", \"adult\"]. Leave empty for no exclusions.",
            "items": {
              "type": "string"
            }
          },
          "resultFreshness": {
            "title": "🕒 Result Freshness",
            "enum": [
              "any",
              "day",
              "week",
              "month",
              "year"
            ],
            "type": "string",
            "description": "Only accept results published within this window. Fresher pages correlate with invite links that are still live. Example: \"Past week\". Default is Any time.",
            "default": "any"
          },
          "minSnippetLength": {
            "title": "🧽 Minimum Snippet Length",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Junk-result cutter: reject a result whose snippet text is shorter than this many characters. Thin snippets are usually link-farm pages with no real group context. Example: 120 keeps only descriptive results. Default is 0 (keep everything).",
            "default": 0
          },
          "uniqueGroupLinksOnly": {
            "title": "🧹 Unique Invite Links Only",
            "type": "boolean",
            "description": "Keep a result only when it introduces at least one WhatsApp invite link you have not already collected in this run. Turn off to keep every mention (repeats stay, marked by the isDuplicateGroupUrl column). Default is off.",
            "default": false
          },
          "appendRunSummary": {
            "title": "📊 Append Run Summary Row",
            "type": "boolean",
            "description": "Add one final row (rowType = run_summary) with the unique-link total, the per-network breakdown, the per-term yield and how many results each filter removed. Default is on.",
            "default": true
          },
          "riskClassification": {
            "title": "🤖 Classify Topic & Scam Risk",
            "type": "boolean",
            "description": "Score every kept result for topic category and scam/spam risk (fake airdrop, signal-selling, work-from-home bait, etc.). Adds aiTopicCategory, aiScamRiskLevel, aiScamRiskScore and aiScamSignals. Default is off.",
            "default": false
          },
          "classifierModel": {
            "title": "🧠 Classifier Model",
            "enum": [
              "claude-haiku-4-5",
              "claude-sonnet-5",
              "claude-opus-4-8",
              "gpt-4o-mini",
              "gpt-4o",
              "gpt-4.1-mini",
              "gpt-4.1",
              "o3-mini",
              "gemini-2.0-flash-lite",
              "gemini-2.0-flash",
              "gemini-2.5-flash",
              "gemini-2.5-pro",
              "grok-3-mini",
              "grok-3",
              "deepseek-chat",
              "deepseek-reasoner",
              "sonar",
              "sonar-pro",
              "mistral-small-latest",
              "mistral-large-latest"
            ],
            "type": "string",
            "description": "Provider is picked from the model name: claude-*=Anthropic, gpt-*/o1/o3=OpenAI, gemini-*=Google, grok-*=xAI, deepseek-*=DeepSeek, sonar*=Perplexity, mistral-*=Mistral. Cheap mini/flash/haiku models are plenty for this classification.",
            "default": "claude-haiku-4-5"
          },
          "classifierApiKey": {
            "title": "🔑 Classifier API Key",
            "type": "string",
            "description": "Your own provider API key, used only for the classification above. Left empty, the Actor falls back to the matching environment variable (ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY, XAI_API_KEY, DEEPSEEK_API_KEY, PERPLEXITY_API_KEY, MISTRAL_API_KEY); with no key at all the classification columns stay empty instead of guessing."
          },
          "keywords": {
            "title": "🔑 keywords (alias of Search Terms)",
            "type": "array",
            "description": "Legacy alias for Search Terms. Used only when Search Terms is empty.",
            "items": {
              "type": "string"
            }
          },
          "platform": {
            "title": "🌐 platform (alias of Source Network)",
            "enum": [
              "facebook.com",
              "linkedin.com",
              "instagram.com",
              "twitter.com",
              "youtube.com",
              "reddit.com",
              "pinterest.com",
              "tiktok.com"
            ],
            "type": "string",
            "description": "Legacy alias for Source Network. Used only when Source Network is empty."
          },
          "country": {
            "title": "🗺️ country (alias of Region Bias)",
            "type": "string",
            "description": "Legacy alias for Region Bias. Used only when Region Bias is empty."
          },
          "limit": {
            "title": "🔢 limit (alias of Record Budget)",
            "minimum": 1,
            "type": "integer",
            "description": "Legacy alias for Record Budget. Used only when Record Budget is empty."
          },
          "proxyConfiguration": {
            "title": "🛡️ Proxy Configuration",
            "type": "object",
            "description": "Network route used to reach the public search results. The Actor adapts automatically if a route starts returning nothing, so the defaults are safe to keep.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "GOOGLE_SERP"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}