{
  "openapi": "3.0.1",
  "info": {
    "title": "Facebook Page Contacts Scraper - Emails, Phones, Followers",
    "description": "Facebook page followers, contacts and reviews: 53 columns per page, measured on 22 live pages - website 22/22, phone 12/22, email 10/22, plus ratings, address and ad transparency. A login wall is a cooldown, not a verdict: 9 of 9 pages delivered through 34 walls.",
    "version": "0.1",
    "x-build-id": "PrP31HLnC5b7aStZ3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/snow_leo_data~facebook-pages-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-snow_leo_data-facebook-pages-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/snow_leo_data~facebook-pages-scraper/runs": {
      "post": {
        "operationId": "runs-sync-snow_leo_data-facebook-pages-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/snow_leo_data~facebook-pages-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-snow_leo_data-facebook-pages-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": {
          "pages": {
            "title": "Facebook pages",
            "type": "array",
            "description": "One page per line. Four spellings work: a page name (katzsdeli), a full page URL (https://www.facebook.com/katzsdeli/), a profile.php?id= link, or a bare numeric page id. Addresses of Facebook's own surfaces - /groups/, /events/, /watch/, /marketplace/ - are not pages and are listed back as rejected.",
            "default": [
              "katzsdeli"
            ],
            "items": {
              "type": "string"
            }
          },
          "includePosts": {
            "title": "Include latest posts",
            "type": "boolean",
            "description": "Fetch the page's main tab as well and return the recent posts embedded in the page: text, time, permalink, reactions and comment count. Measured ceiling without login: 10 posts on a page that publishes reels, 1 on a page that does not. Turning this off drops one request per page and reads 47% fewer bytes of the About tab.",
            "default": true
          },
          "includeTransparency": {
            "title": "Include page transparency",
            "type": "boolean",
            "description": "Fetch the Page transparency tab: the date the page was created, the legal entity Facebook names as responsible for it, whether it is currently running ads, and the Facebook Page ID.",
            "default": true
          },
          "maxPostsPerPage": {
            "title": "Max posts per page",
            "minimum": 0,
            "type": "integer",
            "description": "Keep at most this many posts in each row. 0 keeps everything the page carried.",
            "default": 10
          },
          "maxItems": {
            "title": "Max pages in the result",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many rows are DELIVERED. Filters below run after the page is fetched, so the limit counts delivered rows, not scraped ones. 0 means no limit.",
            "default": 0
          },
          "onlyWithEmail": {
            "title": "Only pages with an email",
            "type": "boolean",
            "description": "Keep only pages that publish a contact email.",
            "default": false
          },
          "onlyWithPhone": {
            "title": "Only pages with a phone number",
            "type": "boolean",
            "description": "Keep only pages that publish a phone number.",
            "default": false
          },
          "onlyWithWebsite": {
            "title": "Only pages with a website",
            "type": "boolean",
            "description": "Keep only pages that link a website.",
            "default": false
          },
          "onlyWithAddress": {
            "title": "Only pages with a street address",
            "type": "boolean",
            "description": "Keep only pages that publish a street address.",
            "default": false
          },
          "onlyVerified": {
            "title": "Only verified pages",
            "type": "boolean",
            "description": "Keep only pages that carry the verified badge.",
            "default": false
          },
          "onlyRunningAds": {
            "title": "Only pages currently running ads",
            "type": "boolean",
            "description": "Needs 'Include page transparency' on - that is where the ad status lives.",
            "default": false
          },
          "onlyWithPosts": {
            "title": "Only pages with at least one post",
            "type": "boolean",
            "description": "Needs 'Include latest posts' on. Asked for with posts turned off, the run stops before the first request and says so instead of returning an empty dataset.",
            "default": false
          },
          "categoryContains": {
            "title": "Category contains",
            "type": "array",
            "description": "Keep a page when any of its categories contains one of these words. Case is ignored.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minFollowers": {
            "title": "Minimum followers",
            "minimum": 0,
            "type": "integer",
            "description": "Keep pages with at least this many followers. A page whose follower count Facebook did not print is kept."
          },
          "maxFollowers": {
            "title": "Maximum followers",
            "minimum": 0,
            "type": "integer",
            "description": "Keep pages with at most this many followers. A page whose follower count Facebook did not print is kept."
          },
          "createdAfter": {
            "title": "Page created on or after",
            "type": "string",
            "description": "YYYY-MM-DD. Needs 'Include page transparency' on. A page whose creation date is missing is kept."
          },
          "createdBefore": {
            "title": "Page created on or before",
            "type": "string",
            "description": "YYYY-MM-DD. Needs 'Include page transparency' on."
          },
          "onlyNewOrChanged": {
            "title": "Monitor mode: only new or changed pages",
            "type": "boolean",
            "description": "Remember what was delivered and return only pages that are new or whose watched fields moved. Every row is labelled NEW, UPDATED or UNCHANGED and an UPDATED row lists what changed. Follower counts are compared in 1% buckets so a page gaining a handful overnight does not count as changed.",
            "default": false
          },
          "emitUnchanged": {
            "title": "Emit unchanged pages too",
            "type": "boolean",
            "description": "Keep the NEW / UPDATED / UNCHANGED labels but return every page, including the unchanged ones.",
            "default": false
          },
          "compactOutput": {
            "title": "Compact output",
            "type": "boolean",
            "description": "Drop empty fields from every row. Smaller payload for AI agents and for pipelines that do not want null columns.",
            "default": false
          },
          "concurrency": {
            "title": "Pages at a time",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many pages to scrape in parallel. Measured from an Apify cloud run: three pages at a time 0.6 s apart got 18 requests through and then every request was redirected to Facebook's login page. Higher is faster and more likely to meet that.",
            "default": 2
          },
          "requestGapSeconds": {
            "title": "Seconds between requests",
            "type": "string",
            "description": "Minimum pause between two requests to Facebook. Leave empty for the measured default of 1.5 s."
          },
          "inputDatasetId": {
            "title": "Read pages from a dataset",
            "type": "string",
            "description": "Id of an Apify dataset whose rows carry page addresses - the output of another Actor, for instance."
          },
          "pageField": {
            "title": "Field holding the page address",
            "type": "string",
            "description": "Which field of that dataset to read. Default page_url.",
            "default": "page_url"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}