{
  "openapi": "3.0.1",
  "info": {
    "title": "Facebook Group Scraper — Posts, Comments & Engagement",
    "description": "Scrape facebook.com — post text & timestamps · reaction/comment/share counts · media & optional comments · Marketplace listing signals · monitoring mode. Incremental mode tracks new and changed posts across scheduled runs.",
    "version": "0.1",
    "x-build-id": "qaItTSklOJkdBRmMW"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/blackfalcondata~facebook-group-post-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-blackfalcondata-facebook-group-post-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/blackfalcondata~facebook-group-post-scraper/runs": {
      "post": {
        "operationId": "runs-sync-blackfalcondata-facebook-group-post-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/blackfalcondata~facebook-group-post-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-blackfalcondata-facebook-group-post-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",
        "required": [
          "startUrls"
        ],
        "properties": {
          "startUrls": {
            "title": "🔗 Facebook group URLs",
            "type": "array",
            "description": "One or more public Facebook group URLs to scrape posts from, for example https://www.facebook.com/groups/874728723021553. Links copied from a group's Share button (https://www.facebook.com/share/g/...) work too.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "viewOption": {
            "title": "Post sorting",
            "enum": [
              "CHRONOLOGICAL",
              "RECENT_ACTIVITY",
              "TOP_POSTS",
              "CHRONOLOGICAL_LISTINGS"
            ],
            "type": "string",
            "description": "Preferred feed order for the group feed.",
            "default": "CHRONOLOGICAL"
          },
          "search": {
            "title": "Keyword filter within groups",
            "type": "string",
            "description": "Keep only posts from the provided group URLs whose extracted text contains this phrase."
          },
          "onlyPostsNewerThan": {
            "title": "Only posts newer than",
            "type": "string",
            "description": "Only return posts published after this point. Use a date such as 2026-04-20 or 2026-04-20T08:00:00Z, a relative duration such as 24 hours, 3 days, 2 weeks, 1 month or 1 year (short forms 24h, 3d, 2w, 1mo, 1y also work), or today / yesterday. A value that cannot be read stops the run with an error instead of being ignored. While this filter is set, posts that show no publication date are left out, because they cannot be confirmed as newer."
          },
          "includeComments": {
            "title": "Include top comments",
            "type": "boolean",
            "description": "Extract top-level comments when they are present in the group page payload.",
            "default": false
          },
          "enrichMarketplaceListings": {
            "title": "Enrich Marketplace listings",
            "type": "boolean",
            "description": "Detect Marketplace posts and fetch extra listing fields when a linked item is present.",
            "default": false
          },
          "monitoringMode": {
            "title": "Monitoring mode",
            "type": "boolean",
            "description": "Return only posts not delivered in previous runs for the same state key.",
            "default": false
          },
          "incrementalMode": {
            "title": "Incremental mode",
            "type": "boolean",
            "description": "Alias for monitoring mode. Return only posts not delivered in previous runs for the same state key.",
            "default": false
          },
          "maxItems": {
            "title": "Max posts",
            "minimum": 0,
            "maximum": 2000,
            "type": "integer",
            "description": "Maximum number of posts to save.",
            "default": 100
          },
          "compact": {
            "title": "Compact output",
            "type": "boolean",
            "description": "Return only core fields.",
            "default": false
          },
          "excludeEmptyFields": {
            "title": "Exclude empty fields",
            "type": "boolean",
            "description": "Remove null, empty array, and empty object fields from each output item.",
            "default": false
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "Optional stable key for monitoring mode."
          },
          "emitUnchanged": {
            "title": "♻️ Include unchanged posts",
            "type": "boolean",
            "description": "When monitoring mode is enabled, also emit posts already seen before.",
            "default": false
          },
          "telegramToken": {
            "title": "Telegram bot token",
            "type": "string",
            "description": "Optional Telegram bot token for sending run notifications."
          },
          "telegramChatId": {
            "title": "💬 Telegram chat ID",
            "type": "string",
            "description": "Optional Telegram chat ID for sending run notifications."
          },
          "discordWebhookUrl": {
            "title": "Discord webhook URL",
            "type": "string",
            "description": "Optional Discord webhook URL for sending run notifications."
          },
          "slackWebhookUrl": {
            "title": "Slack webhook URL",
            "type": "string",
            "description": "Optional Slack webhook URL for sending run notifications."
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional generic webhook URL. Receives a JSON payload with emitted posts and run metadata."
          },
          "webhookHeaders": {
            "title": "Webhook headers",
            "type": "object",
            "description": "Optional custom headers for the generic webhook."
          },
          "whatsappAccessToken": {
            "title": "WhatsApp access token",
            "type": "string",
            "description": "Optional WhatsApp Cloud API access token for sending run notifications."
          },
          "whatsappPhoneNumberId": {
            "title": "WhatsApp phone number ID",
            "type": "string",
            "description": "Optional WhatsApp Business phone-number ID."
          },
          "whatsappTo": {
            "title": "WhatsApp recipient",
            "type": "string",
            "description": "Optional WhatsApp recipient phone number in E.164 format."
          },
          "notificationLimit": {
            "title": "Notification limit",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Maximum number of posts to include in each notification batch.",
            "default": 10
          },
          "notifyOnlyChanges": {
            "title": "Notify only changes",
            "type": "boolean",
            "description": "When monitoring mode is enabled, send notifications only for new or updated posts.",
            "default": true
          },
          "appConnector": {
            "title": "Send results to a connected app",
            "type": "string",
            "description": "Optional. Pick a connected app under Settings → API & Integrations (Notion, Slack, Google Sheets, Airtable, Linear, etc.) to receive emitted posts."
          },
          "mcpIssueTeam": {
            "title": "MCP issue team",
            "type": "string",
            "description": "Optional team name or ID for issue-tracker connectors such as Linear."
          },
          "mcpSlackChannel": {
            "title": "MCP Slack channel",
            "type": "string",
            "description": "Optional Slack channel for Slack MCP connector exports."
          },
          "proxy": {
            "title": "Proxy",
            "type": "object",
            "description": "Proxy configuration. The default is suitable for most runs.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          },
          "query": {
            "title": "🔍 Search Term(s)",
            "type": "string",
            "description": "Backward-compatible alias for search. Filters posts from the provided groups by extracted text."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}