{
  "openapi": "3.0.1",
  "info": {
    "title": "Facebook Group Scraper",
    "description": "Scrape public Facebook groups without login or cookies: posts, comments, replies, reactions, authors, media, Buy & Sell listings, emails and member counts. Bulk groups, keyword and date filters, resumable runs. Clean JSON for community research, leads and market analysis.",
    "version": "1.0",
    "x-build-id": "ySBLHSEhwV3ja40br"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/data_wiki~facebook-group-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-data_wiki-facebook-group-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/data_wiki~facebook-group-scraper/runs": {
      "post": {
        "operationId": "runs-sync-data_wiki-facebook-group-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/data_wiki~facebook-group-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-data_wiki-facebook-group-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": [
          "urls"
        ],
        "properties": {
          "urls": {
            "title": "👥 Group links",
            "minItems": 1,
            "type": "array",
            "description": "Public Facebook group links such as https://www.facebook.com/groups/dogspotting/. A /groups/name path, a numeric group id, a bare group name or a link to a single group post also works. Add one group or hundreds in the same run.",
            "items": {
              "type": "string"
            }
          },
          "maxPosts": {
            "title": "🔢 Number of posts",
            "minimum": 0,
            "type": "integer",
            "description": "Total posts to collect across all groups in this run. Use 0 for every post Facebook shows without a login.",
            "default": 20
          },
          "sortingOrder": {
            "title": "🧭 Sorting order",
            "enum": [
              "newest_posts",
              "newest_activity",
              "most_relevant",
              "buy_sell_listings",
              "top_listings",
              "recent_listings",
              "popular",
              "photos",
              "videos",
              "media"
            ],
            "type": "string",
            "description": "The order Facebook lists the group's posts in. New posts is the best choice together with a date window, because the run can stop as soon as it passes the window. The Buy & Sell options return listings only.",
            "default": "newest_posts"
          },
          "postsNewerThan": {
            "title": "🗓️ Posts newer than",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])(T[0-2]\\d:[0-5]\\d(:[0-5]\\d)?(\\.\\d+)?Z?)?$|^(\\d+)\\s*(minute|hour|day|week|month|year)s?$",
            "type": "string",
            "description": "Keep posts published after this moment. Use a date such as 2026-01-01 or a relative value such as 7 days or 2 months. Leave empty for no limit."
          },
          "postsOlderThan": {
            "title": "⏳ Posts older than",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])(T[0-2]\\d:[0-5]\\d(:[0-5]\\d)?(\\.\\d+)?Z?)?$|^(\\d+)\\s*(minute|hour|day|week|month|year)s?$",
            "type": "string",
            "description": "Keep posts published before this moment. Same formats as 'Posts newer than'. Leave empty for no limit."
          },
          "includeTopComment": {
            "title": "🗨️ Include top comments",
            "type": "boolean",
            "description": "Add the one or two comments Facebook shows right under each post in the feed. This adds no waiting time. For every comment, switch on 'Fetch all comments'.",
            "default": true
          },
          "fetchAllComments": {
            "title": "📚 Fetch all comments",
            "type": "boolean",
            "description": "Read the full comment thread of each post, replacing the top comments. Posts with many comments take longer. The comment options below apply when this or 'Include replies' is on.",
            "default": false
          },
          "maxCommentsPerPost": {
            "title": "🧮 Comments per post",
            "minimum": 0,
            "type": "integer",
            "description": "Most top-level comments to read per post (replies are counted separately). 0 reads every comment Facebook shows without a login.",
            "default": 0
          },
          "includeReplies": {
            "title": "↩️ Include replies",
            "type": "boolean",
            "description": "Also read the replies under each comment, including replies to replies. Turning this on reads the full comment thread of each post, even when 'Fetch all comments' is off.",
            "default": false
          },
          "maxRepliesPerComment": {
            "title": "🌿 Replies per comment",
            "minimum": 0,
            "type": "integer",
            "description": "Most replies to read under each comment. 0 reads every reply.",
            "default": 0
          },
          "commentsSortOrder": {
            "title": "🔀 Comment order",
            "enum": [
              "all",
              "most_relevant",
              "newest"
            ],
            "type": "string",
            "description": "Which order the comments are listed in: oldest first (All comments), Newest first, or Most relevant (Facebook shows fewer comments in this order).",
            "default": "all"
          },
          "keywords": {
            "title": "🔤 Keywords",
            "type": "array",
            "description": "Keep only posts whose text, listing title or link title contains these words or phrases. Leave empty to keep all posts.",
            "items": {
              "type": "string"
            }
          },
          "keywordMatch": {
            "title": "🧩 Keyword match",
            "enum": [
              "any",
              "all"
            ],
            "type": "string",
            "description": "Keep a post when it contains any of the keywords, or only when it contains all of them.",
            "default": "any"
          },
          "excludeKeywords": {
            "title": "🚫 Excluded keywords",
            "type": "array",
            "description": "Drop posts that contain any of these words or phrases.",
            "items": {
              "type": "string"
            }
          },
          "minReactions": {
            "title": "🔥 Minimum reactions",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only posts with at least this many reactions. 0 keeps all.",
            "default": 0
          },
          "minComments": {
            "title": "💭 Minimum comments",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only posts with at least this many comments. 0 keeps all.",
            "default": 0
          },
          "postTypes": {
            "title": "🗂️ Post types",
            "type": "array",
            "description": "Keep only these kinds of posts. Leave empty to keep every kind. Ignored for Buy & Sell listings.",
            "items": {
              "type": "string",
              "enum": [
                "text",
                "photo",
                "album",
                "video",
                "reel",
                "link",
                "share",
                "event"
              ],
              "enumTitles": [
                "Text",
                "Photo",
                "Album",
                "Video",
                "Reel",
                "Link",
                "Shared post",
                "Event"
              ]
            }
          },
          "onlyWithMedia": {
            "title": "🖼️ Only posts with media",
            "type": "boolean",
            "description": "Keep only posts that carry a photo, album or video.",
            "default": false
          },
          "saleStatus": {
            "title": "🏷️ Listing status",
            "enum": [
              "any",
              "available",
              "sold"
            ],
            "type": "string",
            "description": "Buy & Sell only: keep all listings, only those still available, or only those already sold. Choosing available or sold switches the run to Buy & Sell listings.",
            "default": "any"
          },
          "minPrice": {
            "title": "💵 Minimum price",
            "minimum": 0,
            "type": "number",
            "description": "Buy & Sell only: keep listings priced at or above this amount, in the listing's own currency. Setting a price switches the run to Buy & Sell listings."
          },
          "maxPrice": {
            "title": "💰 Maximum price",
            "minimum": 0,
            "type": "number",
            "description": "Buy & Sell only: keep listings priced at or below this amount, in the listing's own currency. Setting a price switches the run to Buy & Sell listings."
          },
          "includeListingDetails": {
            "title": "📍 Listing location & seller",
            "type": "boolean",
            "description": "Add each listing's location and seller. This adds a little time per listing.",
            "default": true
          },
          "includeGroupInfo": {
            "title": "🏘️ Group details",
            "type": "boolean",
            "description": "Add the group's member count and privacy to every row. The creation date and description are returned only with 'Group details only'. This adds a little time per group.",
            "default": true
          },
          "groupInfoOnly": {
            "title": "📇 Group details only",
            "type": "boolean",
            "description": "Return one row per group (name, member count, privacy, creation date, description) and no posts. This also turns on Group details.",
            "default": false
          },
          "extractContacts": {
            "title": "📧 Contacts in post text",
            "type": "boolean",
            "description": "Collect the emails and phone numbers written inside each post.",
            "default": true
          },
          "includeVideoDetails": {
            "title": "🎬 Video view counts",
            "type": "boolean",
            "description": "Add exact view counts to video posts. This adds a little time per video.",
            "default": true
          },
          "includeVideoTranscript": {
            "title": "📝 Video transcripts",
            "type": "boolean",
            "description": "Add the automatic transcript of a video when Facebook provides one.",
            "default": true
          },
          "includeFullAlbums": {
            "title": "📸 Full photo albums",
            "type": "boolean",
            "description": "Collect every photo of an album instead of the first five.",
            "default": true
          },
          "outputFormat": {
            "title": "🧱 Row format",
            "enum": [
              "full",
              "flat"
            ],
            "type": "string",
            "description": "Full keeps nested objects such as author, media and comments. Flat gives one level of simple columns that suit spreadsheets (the nested tables in the Output tab stay empty in this format).",
            "default": "full"
          },
          "resumeCursors": {
            "title": "⏭️ Resume cursors",
            "type": "object",
            "description": "Continue a capped run: paste the 'resumeCursors' object from the previous run's SUMMARY record, as {\"group link\": \"cursor\"}.",
            "default": {}
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy",
            "type": "object",
            "description": "Choose how requests are routed. A failed request is retried up to 3 times with a new connection, and if a request is blocked the Actor switches to another connection automatically. You can pick a country here; no other setup is needed.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}