{
  "openapi": "3.0.1",
  "info": {
    "title": "Facebook Groups Search Scraper",
    "description": "Discover publicly indexed Facebook groups by keyword and optional location. Export canonical group URLs, names, search ranks, snippets, and visible group metadata.",
    "version": "0.2",
    "x-build-id": "lyM2BGwjFf6gQg7Rv"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fetch_cat~facebook-groups-search-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fetch_cat-facebook-groups-search-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/fetch_cat~facebook-groups-search-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fetch_cat-facebook-groups-search-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/fetch_cat~facebook-groups-search-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fetch_cat-facebook-groups-search-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": {
          "keywords": {
            "title": "Keywords",
            "minItems": 0,
            "maxItems": 20,
            "type": "array",
            "description": "Search up to 20 phrases. Supply at least one phrase or a group target. Each phrase is searched separately. Omit this list for target-only lookups.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations (optional)",
            "maxItems": 20,
            "type": "array",
            "description": "Optional search qualifiers such as cities or countries. Every qualifier is combined with every keyword. This does not verify or filter actual group location.",
            "items": {
              "type": "string"
            }
          },
          "maxGroupsPerQuery": {
            "title": "Maximum groups per query",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Save up to this many matching rows per keyword/location query, from 1 to 100. In monitor mode this counts emitted change rows. Unchanged observations can lead the run to inspect additional groups within its limits.",
            "default": 10
          },
          "enrichIndexedDetails": {
            "title": "Include indexed About snippets",
            "type": "boolean",
            "description": "Try additional indexed About or rules snippets. They may be incomplete or stale and never count as a full description. Both enrichment options share at most ten requests and 60 seconds inside the run limit.",
            "default": false
          },
          "groupUrls": {
            "title": "Group URLs, IDs or vanity names",
            "minItems": 0,
            "maxItems": 200,
            "type": "array",
            "description": "Supply up to 200 group URLs, numeric IDs or vanity names. Root, About, mobile, post and permalink URLs identify the parent group. Only actual matching public-index metadata becomes a result. Unavailable targets are summarized without a group-result charge. Numeric and vanity URLs may be indexed differently.",
            "items": {
              "type": "string",
              "maxLength": 2048
            }
          },
          "maxItems": {
            "title": "Aggregate output limit",
            "minimum": 1,
            "maximum": 40000,
            "type": "integer",
            "description": "Cap total saved rows across queries and targets. Omitted means 40000 in scrape mode or 500 in monitor mode. Monitor mode accepts at most 500. Filtered and unchanged observations do not use this quota. The per-query and run-time limits also apply."
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "scrape",
              "monitor"
            ],
            "type": "string",
            "description": "Scrape saves matching group observations. Monitor compares a private baseline and saves only first observations, new groups and changes to known values. Monitor requires monitorStateId. Selecting it does not create or activate a schedule.",
            "default": "scrape"
          },
          "monitorStateId": {
            "title": "Stable monitor state ID",
            "pattern": "^[A-Za-z0-9_-]+$",
            "minLength": 1,
            "maxLength": 64,
            "type": "string",
            "description": "Required in monitor mode. Choose a reusable 1–64 character name using letters, digits, hyphens or underscores. Continue with the same initiating account and query/target/filter settings. Changing those settings starts a separate baseline. An uncertain prior save or charge pauses reuse with a reference to that run."
          },
          "privacy": {
            "title": "Privacy",
            "enum": [
              "any",
              "public",
              "private"
            ],
            "type": "string",
            "description": "Choose any, public or private. Unknown privacy does not pass a public/private filter. A blocked page does not imply that a group is private.",
            "default": "any"
          },
          "minMembers": {
            "title": "Minimum members",
            "minimum": 0,
            "type": "integer",
            "description": "Optional minimum whole-number member count. Unknown counts do not pass. A normalized approximate count keeps its approximation label."
          },
          "maxMembers": {
            "title": "Maximum members",
            "minimum": 0,
            "type": "integer",
            "description": "Optional maximum whole-number member count. Unknown counts do not pass. Must not be lower than minMembers."
          },
          "minPostsPerDay": {
            "title": "Minimum monthly-average posts per day",
            "minimum": 0,
            "type": "number",
            "description": "Optional minimum observed last-month post count divided by 30. A today count or an unsupported rate cannot replace missing monthly activity. Unknown monthly counts do not pass."
          },
          "locationText": {
            "title": "Actual group location contains",
            "maxLength": 200,
            "type": "string",
            "description": "Match text in an actual public group location, ignoring case. Search qualifiers and vanity names do not qualify. Unknown actual location does not pass."
          },
          "requireKeywordMatch": {
            "title": "Require keyword match",
            "type": "boolean",
            "description": "Requires keywords. All words of the current phrase must match eligible group fields. Direct targets may match any supplied phrase. Eligible fields are the group name, indexed About text, full description, recognized public tags and actual locations. Post snippets and title count labels are excluded.",
            "default": false
          },
          "enrichGroupDetails": {
            "title": "Try direct public About details",
            "type": "boolean",
            "description": "Try the anonymous direct public About page without paid proxy access. Default false. Login walls may leave details unavailable. This legacy option never enables paid enrichment.",
            "default": false
          },
          "enrichPaidGroupDetails": {
            "title": "Paid group details (when available)",
            "type": "boolean",
            "description": "Currently unavailable in this basic release. Default false. Selecting this option stops before the custom start fee or detail requests. Basic search enrichment and the separate direct/indexed detail options remain available. Optional public fields may still be missing.",
            "default": false
          },
          "webhookSecretUrl": {
            "title": "Notification webhook URL",
            "type": "string",
            "description": "Optional encrypted public HTTPS destination on port 443. Monitor mode only. Receives a bounded preview after changes are saved, billed and committed. Failure does not discard results. Redirects and private addresses are rejected. Runtime length limit is 2048 characters."
          },
          "telegramBotToken": {
            "title": "Telegram bot token",
            "type": "string",
            "description": "Optional encrypted Telegram bot token, up to 200 characters. Requires monitor mode and telegramChatSecret. Used only for committed change notifications, never for Facebook login."
          },
          "telegramChatSecret": {
            "title": "Telegram recipient chat ID or channel",
            "type": "string",
            "description": "Optional encrypted Telegram numeric chat ID or @channel. Requires monitor mode and telegramBotToken. A bounded preview marks truncation and links the run results."
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}