{
  "openapi": "3.0.1",
  "info": {
    "title": "Facebook Groups Posts Scraper With Author Lead Enrichment",
    "description": "Scrape posts from Facebook groups with the Facebook Groups Posts Scraper. Extract post text, images, videos, comments, reactions, timestamps, and author info. Ideal for community analysis, market research, and engagement tracking. Fast, reliable, and scalable for multiple groups.",
    "version": "0.1",
    "x-build-id": "nzHdf0updDJn1eja4"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapier~facebook-groups-posts-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapier-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/scrapier~facebook-groups-posts-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapier-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/scrapier~facebook-groups-posts-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapier-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",
        "properties": {
          "groupUrls": {
            "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. ⚡",
            "items": {
              "type": "string"
            }
          },
          "maxPostsToScan": {
            "title": "📊 Maximum Posts to Scan per Group",
            "minimum": 10,
            "maximum": 10000,
            "type": "integer",
            "description": "🎯 Set how many posts to scan per group (minimum: 10). More posts means a more complete engagement leaderboard."
          },
          "feedSortOrder": {
            "title": "🔃 Sort Order",
            "enum": [
              "ALL",
              "TOP_POSTS",
              "CHRONOLOGICAL",
              "RECENT_ACTIVITY"
            ],
            "type": "string",
            "description": "🗂️ Choose how scanned posts are ordered.\n\n• **All sorts** — combine three sort orders to maximize unique posts scanned (best for hitting `Maximum Posts to Scan per Group`).\n• **Top posts** — most-engaged posts first.\n• **Chronological** — newest posts first.\n• **Recent activity** — posts with the latest comments/reactions first."
          },
          "enableContactLeadsDataset": {
            "title": "📇 Push Ranked Contact-Leads Dataset",
            "type": "boolean",
            "description": "📇 Per-post contact extraction (`extractedEmails`, `extractedPhones`, `extractedLinks`, `hasContactInfo`, `leadScore`) always runs and is added to every row. When this is enabled, posts that contain contact info are additionally ranked by `leadScore` and pushed to a separate dataset named `AUTHOR-CONTACT-LEADS`."
          },
          "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)."
          },
          "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)."
          },
          "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. 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."
          },
          "proxyConfiguration": {
            "title": "🛡️ Proxy Configuration",
            "type": "object",
            "description": "🌐 Configure proxy preferences for improved stability when needed. 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}