{
  "openapi": "3.0.1",
  "info": {
    "title": "Facebook Groups Posts Scraper",
    "description": "Facebook Groups Posts Scraper extracts posts from public Facebook groups. Capture text, media, authors, timestamps, reactions, comments, and metadata. Ideal for research, community insights, trend tracking, and workflows needing structured Facebook group post data.",
    "version": "0.1",
    "x-build-id": "frqHJQN3wxUuugwuu"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/api-empire~facebook-groups-posts-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-api-empire-facebook-groups-posts-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-posts-scraper/runs": {
      "post": {
        "operationId": "runs-sync-api-empire-facebook-groups-posts-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-posts-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-api-empire-facebook-groups-posts-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": "🔗 Group URLs, Usernames, or Keywords",
            "type": "array",
            "description": "📥 Enter one or more Facebook group URLs (example: https://www.facebook.com/groups/germtheory.vs.terraintheory), usernames, or keywords. Perfect for single or bulk input. ⚡",
            "items": {
              "type": "string"
            }
          },
          "maxPosts": {
            "title": "📊 Maximum Posts per Group",
            "minimum": 10,
            "maximum": 10000,
            "type": "integer",
            "description": "🎯 Set how many posts to collect from each group (minimum: 10, maximum: 10000). Increase for deeper analysis. Matches the actual code default (10) when this field is omitted from raw input.",
            "default": 10
          },
          "sortBy": {
            "title": "🔃 Sort Order",
            "enum": [
              "ALL",
              "TOP_POSTS",
              "CHRONOLOGICAL",
              "RECENT_ACTIVITY"
            ],
            "type": "string",
            "description": "🗂️ Choose how posts are ordered.\n\n• **All sorts** — combine three sort orders to maximize unique posts collected (best for hitting `Maximum Posts per Group`).\n• **Top posts** — most-engaged posts first.\n• **Chronological** — newest posts first.\n• **Recent activity** — posts with the latest comments/reactions first.",
            "default": "ALL"
          },
          "resolveFullMedia": {
            "title": "🖼️ Resolve Full-Resolution Photos + Real OCR",
            "type": "boolean",
            "description": "When enabled, each photo attachment is re-fetched from its own Facebook permalink page to replace the low-res feed preview with a full-resolution image URL (`attachments[].fullImageUrl`) plus Facebook's own OCR/alt text (`attachments[].ocrText`) when available. Off by default = low-res preview only (original behavior).",
            "default": false
          },
          "includeGroupProfile": {
            "title": "🏷️ Attach Group Profile Metadata",
            "type": "boolean",
            "description": "When enabled, each group's profile (member count, privacy & discoverability settings, creation date, admins/moderators) is fetched ONCE per group and attached as `groupProfile` on every post from that group. Off by default = no extra group profile call (original behavior).",
            "default": false
          },
          "maxComments": {
            "title": "💬 Top Comments Preview per Post",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum number of real top-level comments to attach as `topComments` per post (fetched via Facebook's own comments-pagination query against the post's permalink page — never fabricated). 0 (default) disables this lookup entirely, matching the original actor's behavior. Coverage depends on Facebook's live response for each post/session; when no real comment data can be recovered, `topComments` is an empty list, never faked data.",
            "default": 0
          },
          "proxyConfiguration": {
            "title": "🛡️ Proxy Configuration",
            "type": "object",
            "description": "🌐 Configure proxy preferences for improved stability when needed. Custom proxy URLs are tried first if supplied; a specific Apify proxy group selection is now honored as a real fallback tier (previously ignored); Apify RESIDENTIAL proxy remains the final guaranteed fallback (most reliable against Facebook's anti-bot defenses). Default settings work for most runs."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}