{
  "openapi": "3.0.1",
  "info": {
    "title": "Facebook Posts Scraper — Facebook Page Posts & Group Posts",
    "description": "Facebook posts scraper for pages and public groups: paste a link and get posts as rows — text, date, ten-way reactions, comment count, image and a playable MP4 link on video posts. Optional page details: followers, category, email, phone, address, hours, ads. No login, exact limit, no start fee.",
    "version": "1.0",
    "x-build-id": "HnbzjFBJl5Y4MpgOn"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/steadyfetch~facebook-posts-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-steadyfetch-facebook-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/steadyfetch~facebook-posts-scraper/runs": {
      "post": {
        "operationId": "runs-sync-steadyfetch-facebook-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/steadyfetch~facebook-posts-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-steadyfetch-facebook-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": [
          "pages"
        ],
        "properties": {
          "pages": {
            "title": "Facebook pages",
            "type": "array",
            "description": "Facebook pages — a name like \"ladbible\", @ladbible, https://www.facebook.com/ladbible, or a profile.php?id=… link. Never charged for a page that does not exist, a page Facebook shows to logged-in users only, or a page with no posts. A reel, watch, share or fb.watch link belongs to steadyfetch/facebook-reels-scraper and comes back uncharged naming it. Leave it untouched in the console and click Start for the built-in three-post sample of one public brand page: nothing is collected from Facebook and there is no result fee.",
            "default": [
              "_demo"
            ],
            "items": {
              "type": "string"
            }
          },
          "groups": {
            "title": "Public Facebook groups",
            "type": "array",
            "description": "Public Facebook groups — https://www.facebook.com/groups/dogspotting, a /groups/<numeric id> link, or a bare numeric group id. Never charged for a group that does not exist or one Facebook shows to members only: a private group returns one uncharged row saying so. Private groups cannot be collected at all — Facebook shows their posts to members only, with or without a login.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Page and group links mixed",
            "type": "array",
            "description": "Page links and group links in one list — each is sent to the right door by its own shape, so you never have to split them. Never charged for a link this actor cannot collect: a reel, watch, share or fb.watch link comes back uncharged naming steadyfetch/facebook-reels-scraper, a single post permalink naming steadyfetch/facebook-comments-scraper, and an Ad Library link naming steadyfetch/facebook-ad-library-scraper. Entries may be plain links or the crawler shape [{\"url\": \"https://www.facebook.com/ladbible\"}]; both are read.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "resultsLimit": {
            "title": "Max posts per page or group",
            "minimum": 0,
            "type": "integer",
            "description": "Hard cap on the posts delivered for EACH page and EACH group — three targets at 20 collect up to 60 in total. Set it to 0 with \"Include page details\" on for a details-only run that collects no posts at all. A page or group that runs short leaves an uncharged row saying so.",
            "default": 20
          },
          "maxItems": {
            "title": "Max posts for the whole run",
            "minimum": 1,
            "type": "integer",
            "description": "Hard ceiling across every page and group in the run, whatever the per-target limit says. Also answers to `limit`, `count` and `maxPosts` — the names other Facebook post scrapers use — and the smallest one present binds. One uncharged note row says which name was read and what it was read as.",
            "default": 1000
          },
          "includePageDetails": {
            "title": "Include page details",
            "type": "boolean",
            "description": "ON adds one Page details row per page target: follower, like and talking-about counts, category, intro, creation date, website and links, email, phone, address, opening hours, price range, services, rating, whether the page is running ads, and its Instagram handle where Facebook shows one. Charged as one Page details unit per row delivered, $0.012 on the Apify free plan and from $0.005 on paid plans. A page that does not exist is never charged, and a detail the page does not list comes back as an explicit empty value rather than a guess.",
            "default": false
          },
          "newerThan": {
            "title": "Posts newer than",
            "type": "string",
            "description": "Only posts published on or after this point — a date like 2026-09-01, an ISO timestamp, or a window like \"7 days\", \"3 weeks\", \"2 months\". Never charged for a post the window dropped. A value this actor cannot read leaves one uncharged row naming the field and the run collects as if no window were set, rather than returning nothing."
          },
          "olderThan": {
            "title": "Posts older than",
            "type": "string",
            "description": "Only posts published on or before this point — a date like 2026-09-01, an ISO timestamp, or a window like \"7 days\". Never charged for a post the window dropped. Use it with \"Posts newer than\" to take a slice between two dates."
          },
          "maxRunSeconds": {
            "title": "Max run seconds",
            "type": "integer",
            "description": "The run stops cleanly before this many seconds and reports what is left, instead of being killed by a timeout. Never charged for the posts it did not reach — they ship as uncharged rows naming the clock.",
            "default": 1800
          },
          "includeSeen": {
            "title": "Include posts you already have",
            "type": "boolean",
            "description": "OFF (default): a post already delivered to your account is skipped — no row, no charge — and the next new post takes its place, so you still get the number you asked for. ON: those posts are delivered again anyway, marked `repeat: true`, and still not charged. Posts older than 90 days in your account's memory count as new again either way.",
            "default": false
          },
          "resumeFromDatasetId": {
            "title": "Skip posts in this dataset",
            "type": "string",
            "description": "The dataset ID of a previous run of this actor. Posts already in it are treated as posts you already have and are skipped, so a follow-up run collects only what is new even from a different Apify account. Selecting it here is what grants this run permission to read it."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}