{
  "openapi": "3.0.1",
  "info": {
    "title": "Facebook Reviews Scraper",
    "description": "Facebook Reviews Scraper, Scrape public reviews from any Facebook Page's Reviews tab. Get the reviewer's name and profile, the recommend/don't recommend verdict, review text, date, reactions, comments, photos and videos, plus page details such as category, recommendation rate and total review count.",
    "version": "0.2",
    "x-build-id": "u0zSSTBon6Trxr2J5"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/alpha-scraper~facebook-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-alpha-scraper-facebook-reviews-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/alpha-scraper~facebook-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-alpha-scraper-facebook-reviews-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/alpha-scraper~facebook-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-alpha-scraper-facebook-reviews-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": {
          "startUrls": {
            "title": "Facebook pages URLs",
            "type": "array",
            "description": "One or more Facebook Page URLs, either the page itself or its Reviews tab, for example https://www.facebook.com/copperkettleyqr/reviews. For vanity names or numeric IDs use the \"Pages by username\" and \"Pages by IDs\" fields below. A page given in more than one field is scraped once. Provide at least one URL, username or ID. All reviews go into the same dataset; use the `inputUrl` and `pageName` fields to tell pages apart. \"Max reviews\" is applied to each page separately.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "pages": {
            "title": "Pages by username",
            "uniqueItems": true,
            "type": "array",
            "description": "Page usernames (vanity names), one per line, for example \"copperkettleyqr\". Merged with the URLs above.",
            "items": {
              "type": "string"
            }
          },
          "ids": {
            "title": "Pages by IDs",
            "uniqueItems": true,
            "type": "array",
            "description": "Numeric Facebook Page IDs, one per line, for example \"100064027242849\". Merged with the URLs above.",
            "items": {
              "type": "string",
              "pattern": "^\\d+$"
            }
          },
          "maxItems": {
            "title": "Max reviews",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of reviews to extract. The Actor stops requesting pages as soon as this many reviews are collected and never returns more. Use 0 for no limit (every review Facebook will serve).",
            "default": 10
          },
          "recommendationFilter": {
            "title": "Recommendation",
            "enum": [
              "all",
              "recommended",
              "notRecommended"
            ],
            "type": "string",
            "description": "Keep all reviews, or only those where the reviewer recommends / does not recommend the page.",
            "default": "all"
          },
          "publishedAfter": {
            "title": "Published after",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "Only include reviews published on or after this date. Use an absolute date (YYYY-MM-DD) or a relative one such as \"2 weeks\" or \"3 months\" (units: day, week, month, year)."
          },
          "publishedBefore": {
            "title": "Published before",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "Only include reviews published on or before this date. Use an absolute date (YYYY-MM-DD) or a relative one such as \"1 month\" (units: day, week, month, year)."
          },
          "onlyWithText": {
            "title": "Only reviews with text",
            "type": "boolean",
            "description": "Skip reviews that are only a recommend / don't recommend with no written comment.",
            "default": false
          },
          "textKeywords": {
            "title": "Review text keywords",
            "uniqueItems": false,
            "type": "array",
            "description": "Keep only reviews whose text contains at least one of these words or phrases (case-insensitive). Useful for topic or complaint tracking, for example \"delivery\", \"refund\" or \"rude\". Leave empty to keep every review.",
            "items": {
              "type": "string"
            }
          },
          "includeComments": {
            "title": "Include comments",
            "type": "boolean",
            "description": "Keep the `comments` list on each review (replies under the review, such as the page owner's response). Turn off for smaller items.",
            "default": false
          },
          "includeMedia": {
            "title": "Include photos & videos",
            "type": "boolean",
            "description": "Keep the `photos`, `photoUrls` and `media` fields for reviews that have attachments. Turn off for smaller items.",
            "default": true
          },
          "compactOutput": {
            "title": "Compact output",
            "type": "boolean",
            "description": "Return one canonical name for each value instead of repeating it under several alias spellings (for example `reviewId`, `recommendation_id`, `post_id` and `legacyId` all hold the same review ID). Gives smaller, cleaner items; leave off if you rely on a specific alias.",
            "default": false
          },
          "onlyNewReviews": {
            "title": "Only new reviews",
            "type": "boolean",
            "description": "Only output reviews that no earlier run with the same incremental state name has returned. Every returned review is remembered (by its post ID) for next time. Scanning stops at the first review that was already returned, so older reviews are not revisited. Ideal for scheduled runs that should alert you to newly posted reviews only.",
            "default": false
          },
          "incrementalKey": {
            "title": "Incremental state name",
            "pattern": "^[a-z0-9-]+$",
            "minLength": 1,
            "maxLength": 40,
            "type": "string",
            "description": "Name of the saved list of already-seen reviews. Use a different name for each monitoring job so they do not share state. Only used when \"Only new reviews\" is on. Lowercase letters, digits and dashes only.",
            "default": "default"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}