{
  "openapi": "3.0.1",
  "info": {
    "title": "Facebook Groups Scraper With Engagement Analytics",
    "description": "Scrape Facebook Groups with names, descriptions, member counts, categories, posts, comments, reactions, and engagement metrics. Analyze group activity, audience interests, content performance, and engagement trends for market research, competitor analysis, and lead generation.",
    "version": "0.1",
    "x-build-id": "ePfbkvGlI1uHmlgPe"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/api-empire~Facebook-Groups-Scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-api-empire-Facebook-Groups-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~Facebook-Groups-Scraper/runs": {
      "post": {
        "operationId": "runs-sync-api-empire-Facebook-Groups-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~Facebook-Groups-Scraper/run-sync": {
      "post": {
        "operationId": "run-sync-api-empire-Facebook-Groups-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": {
          "groupUrls": {
            "title": "🔗 Facebook Group URLs to Analyze",
            "type": "array",
            "description": "One or more public Facebook group URLs to analyze, e.g. https://www.facebook.com/groups/cheapmealideas/. Only public groups can be read without a login cookie. List several groups to benchmark them side by side; each group is scored and summarized separately.",
            "items": {
              "type": "string"
            }
          },
          "postsPerGroup": {
            "title": "📊 Posts to Analyze per Group",
            "minimum": 1,
            "type": "integer",
            "description": "How many posts to pull from each group before engagement analytics are computed. A larger sample makes averages, rank and percentile more stable. Example: 50. Placeholder is 20."
          },
          "feedSortStrategy": {
            "title": "🔄 Facebook Feed Order (what to sample)",
            "enum": [
              "CHRONOLOGICAL",
              "RECENT_ACTIVITY",
              "TOP_POSTS",
              "CHRONOLOGICAL_LISTINGS"
            ],
            "type": "string",
            "description": "Which slice of the group's feed Facebook returns for analysis: CHRONOLOGICAL (newest→oldest), RECENT_ACTIVITY (most recently active), TOP_POSTS (most engaged), CHRONOLOGICAL_LISTINGS (Buy/Sell groups). This decides WHICH posts are sampled; use `sortBy` below to order the analytics output rows."
          },
          "sortBy": {
            "title": "🏆 Sort Analytics Output By",
            "enum": [
              "newest",
              "most_reactions",
              "highest_engagement"
            ],
            "type": "string",
            "description": "How to order the post rows in the output dataset after analytics are computed: newest (by post time), most_reactions (by total reactions), or highest_engagement (reactions + comments + shares). Example: highest_engagement puts the most engaging posts first.",
            "default": "highest_engagement"
          },
          "minReactions": {
            "title": "👍 Minimum Reactions",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep posts with at least this many total reactions (all reaction types combined). Example: 10 drops posts with fewer than 10 reactions. Default 0 (no filter).",
            "default": 0
          },
          "minEngagementRate": {
            "title": "📊 Minimum Engagement Rate",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep posts whose engagement rate is at least this value. Engagement rate is relative to the run average: 1 = average, 2 = twice the average engagement. Example: 2 keeps only posts with at least double the average engagement. Default 0 (no filter).",
            "default": 0
          },
          "textFilterKeyword": {
            "title": "🔍 Keyword Text Filter",
            "type": "string",
            "description": "Keep only posts whose text contains this keyword or letter. This is a local substring match over the sampled feed, not a Facebook search. Without a login cookie, single or double letters work best. Example: \"a\"."
          },
          "yearFilter": {
            "title": "📅 Year Text Filter",
            "type": "string",
            "description": "Keep only posts from a specific year (e.g. 2024). Best combined with the Keyword Text Filter above."
          },
          "postsNewerThan": {
            "title": "📅 Only Analyze Posts Newer Than",
            "pattern": "^$|^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "Keep only posts newer than this date/time for the analytics. Absolute: YYYY-MM-DD (e.g. 2024-01-15). Relative: \"7 days\", \"2 weeks\", \"1 month\", \"1 year\"."
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy Configuration",
            "type": "object",
            "description": "Proxy configuration. Residential proxies are used automatically for Facebook requests."
          },
          "facebookSessionCookie": {
            "title": "🍪 Facebook Session Cookie",
            "type": "string",
            "description": "Optional Facebook session cookie string (must include at least c_user and xs). Format: c_user=100000...; xs=12%3A...; datr=...; fr=... . Leave empty for logged-out public-group analysis."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}