{
  "openapi": "3.0.1",
  "info": {
    "title": "WhatsApp Group Links Scraper With Metadata",
    "description": "WhatsApp Group Links Scraper with Metadata extracts publicly available WhatsApp group links along with group names, descriptions, categories, source URLs, and other metadata. Ideal for community discovery, market research, audience analysis, and lead generation.",
    "version": "0.1",
    "x-build-id": "rro5UVyqL0DCEjSj5"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/api-empire~whatsapp-group-links-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-api-empire-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/api-empire~whatsapp-group-links-scraper/runs": {
      "post": {
        "operationId": "runs-sync-api-empire-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/api-empire~whatsapp-group-links-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-api-empire-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 to hunt for, one per line (e.g. \"marketing\", \"crypto jobs\", \"real estate\"). Every term is searched on its own and tagged on the result row. Leave the direct-link box below empty to use this search mode. Example: [\"marketing\", \"jobs\"].",
            "items": {
              "type": "string"
            }
          },
          "socialNetwork": {
            "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 should be discovered on. One network per run. Example: Facebook."
          },
          "searchCountry": {
            "title": "🧭 Target Country",
            "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 discovery step toward one country's results. Example: United States. Does not affect the live link check — that always talks to WhatsApp directly."
          },
          "maxLinkRecords": {
            "title": "🎚️ Result Cap",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many result rows (counted across all search terms). Leave empty for no cap. Example: 25."
          },
          "inviteLinksToVerify": {
            "title": "📥 Check My Own Links (skips search)",
            "type": "array",
            "description": "Paste your own invite links or bare invite codes, one per line — e.g. https://chat.whatsapp.com/AbCdEf123..., chat.whatsapp.com/invite/AbCdEf123... or just AbCdEf123.... When this box has anything in it, the search step is skipped completely and only your links are checked and enriched. Leave it empty to discover links by search instead.",
            "items": {
              "type": "string"
            }
          },
          "verifyLinkStatus": {
            "title": "🔬 Verify Every Link Live",
            "type": "boolean",
            "description": "Open each discovered invite link against WhatsApp and fill in linkStatus, liveGroupName, liveGroupPhotoUrl, inviteLinkType (REGULAR / PARENT / SUB) and checkedAt. Turn this off to get discovery only (those columns come back empty). Default is on.",
            "default": true
          },
          "onlyActiveLinks": {
            "title": "🧹 Keep Only Working Links",
            "type": "boolean",
            "description": "Drop every row whose invite link is revoked, expired or invalid, so the output contains joinable groups only. Needs the live check, which is switched on automatically when you enable this. Default is off (everything is returned, each row labelled).",
            "default": false
          },
          "linkCheckConcurrency": {
            "title": "⚡ Parallel Checks",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many invite links are checked at the same time. Higher is faster, lower is gentler. Example: 8. Default is 8.",
            "default": 8
          },
          "keywords": {
            "title": "🔑 keywords (legacy alias of Search Terms)",
            "type": "array",
            "description": "Legacy alias. Used only when 🧲 Search Terms is empty.",
            "items": {
              "type": "string"
            }
          },
          "platform": {
            "title": "🌐 platform (legacy 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. Used only when 📡 Source Network is empty."
          },
          "country": {
            "title": "🗺️ country (legacy alias of Target Country)",
            "type": "string",
            "description": "Legacy alias. Used only when 🧭 Target Country is empty."
          },
          "limit": {
            "title": "🔢 limit (legacy alias of Result Cap)",
            "minimum": 1,
            "type": "integer",
            "description": "Legacy alias. Used only when 🎚️ Result Cap is empty."
          },
          "proxyConfiguration": {
            "title": "🛡️ Proxy Configuration",
            "type": "object",
            "description": "Network route used for the discovery step. The Actor adapts on its own if a route becomes unreliable.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}