{
  "openapi": "3.0.1",
  "info": {
    "title": "WhatsApp Group Links Scraper: Multi-Engine Search",
    "description": "Scrape public WhatsApp group invite links from websites and search results, including group names, categories, descriptions, countries, and invite URLs. Ideal for community discovery, lead generation, audience research, and niche community analysis.",
    "version": "0.1",
    "x-build-id": "ny9wISDDVRDw9JTfS"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapio~whatsapp-group-links-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapio-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/scrapio~whatsapp-group-links-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapio-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/scrapio~whatsapp-group-links-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapio-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": "One or more topics to hunt for, e.g. \"marketing\", \"crypto trading\", \"nursing jobs\". Each term is searched on every enabled engine, and results are tagged with the term they came from. ✍️",
            "items": {
              "type": "string"
            }
          },
          "targetSite": {
            "title": "🌐 Social Network To Scan",
            "enum": [
              "facebook.com",
              "linkedin.com",
              "instagram.com",
              "twitter.com",
              "youtube.com",
              "reddit.com",
              "pinterest.com",
              "tiktok.com"
            ],
            "type": "string",
            "description": "The social network whose public posts and pages are searched for WhatsApp join links. 📲"
          },
          "geoTarget": {
            "title": "🗺️ Region Focus",
            "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",
              "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",
              "vm"
            ],
            "type": "string",
            "description": "Bias the search towards one country's results. Applied on both engines where the engine supports that region; the run log states it plainly when an engine has no setting for the chosen country. 🌍"
          },
          "maxLinkRecords": {
            "title": "🔢 Max Link Records",
            "minimum": 1,
            "type": "integer",
            "description": "Stop the run once this many WhatsApp link records have been collected (counted across all search terms, engines and term variants). Example: 25 → the run ends as soon as 25 records are in the table. 📊"
          },
          "engineMode": {
            "title": "🧭 Search Engines",
            "enum": [
              "both",
              "google",
              "duckduckgo"
            ],
            "type": "string",
            "description": "Run one engine or both. Both engines index different corners of the web and rate-limit independently, so running both widens coverage and keeps the run productive when one engine is having a bad day. Every output row carries the engine it came from. Example: pick \"Google only\" to reproduce single-engine behaviour exactly.",
            "default": "both"
          },
          "includeChannelLinks": {
            "title": "📡 Also Hunt WhatsApp Channel Links",
            "type": "boolean",
            "description": "Run a second, channel-targeted query for every search term so `whatsapp.com/channel/...` links are found on purpose, not only when they happen to sit next to a group link. Rows are tagged `linkType: channel`. Turn off to search group invites only. Default: on.",
            "default": true
          },
          "pagesPerQuery": {
            "title": "📄 Result Pages Per Query",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How deep each individual query digs before moving on. Higher values find more but take longer; a query that runs out of results earlier is reported as exhausted in the log instead of being padded. Example: 5 (default), maximum 10.",
            "default": 5
          },
          "expansionMode": {
            "title": "🧩 Keyword Expansion",
            "enum": [
              "auto",
              "off",
              "custom"
            ],
            "type": "string",
            "description": "Off = search exactly the terms you typed. Automatic = also search built-in related phrasings (\"marketing\" → \"marketing group\", \"marketing community\", \"best marketing groups\", …). Custom = use only the variants you supply below.",
            "default": "auto"
          },
          "customFacets": {
            "title": "✏️ Custom Term Variants",
            "type": "array",
            "description": "Used only when Keyword Expansion is set to Custom. Plain words are appended to your term (\"community\" → \"marketing community\"); include `{}` to place the term yourself (\"digital {}\" → \"digital marketing\"). 🧠",
            "items": {
              "type": "string"
            }
          },
          "maxFacetsPerTerm": {
            "title": "🔁 Max Variants Per Term",
            "minimum": 0,
            "type": "integer",
            "description": "Caps how many expanded variants are searched per term, on top of the plain term itself. Example: 4 → the plain term plus 4 related phrasings. Set 0 to use every available variant. Default: 4.",
            "default": 4
          },
          "keywords": {
            "title": "🧾 keywords (legacy)",
            "type": "array",
            "description": "Legacy alias for Search Terms. Only used when Search Terms is empty.",
            "items": {
              "type": "string"
            }
          },
          "platform": {
            "title": "🧾 platform (legacy)",
            "type": "string",
            "description": "Legacy alias for Social Network To Scan, e.g. `facebook.com`. Only used when the field above is empty."
          },
          "country": {
            "title": "🧾 country (legacy)",
            "type": "string",
            "description": "Legacy alias for Region Focus, e.g. `us`. Only used when the field above is empty."
          },
          "limit": {
            "title": "🧾 limit (legacy)",
            "minimum": 1,
            "type": "integer",
            "description": "Legacy alias for Max Link Records. Only used when the field above is empty."
          },
          "proxyConfiguration": {
            "title": "🛡️ Proxy Configuration",
            "type": "object",
            "description": "Network configuration used to reach the search engines. Each engine keeps its own route and switches automatically when it stops returning results. 🔁",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}