{
  "openapi": "3.0.1",
  "info": {
    "title": "Facebook Comments Scraper: Export Comments & Replies, No Login",
    "description": "Facebook comments scraper, no login: post, reel, video, photo or page links in, one row per comment and reply out. Text, time, reactions by type, reply count, the commenter's public name and link. Reads the list to its end, names it against Facebook's count. Date window free. Misses free.",
    "version": "0.1",
    "x-build-id": "utZZiEk9P6JxyRwHb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/hyperbach~facebook-comments-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-hyperbach-facebook-comments-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/hyperbach~facebook-comments-scraper/runs": {
      "post": {
        "operationId": "runs-sync-hyperbach-facebook-comments-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/hyperbach~facebook-comments-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-hyperbach-facebook-comments-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 post, reel, video, photo or page links",
            "maxItems": 5000,
            "type": "array",
            "description": "One per line. A post link in any form (https://www.facebook.com/<page>/posts/<id>/, a pfbid link, a link with ?comment_id=, a group post, permalink.php, story.php, /share/p/…), a reel, video, watch or photo link (/reel/…, /<page>/videos/…, /watch/?v=…, /<page>/photos/…, /photo/?fbid=…, /share/r/…), or a bare post id. A page, profile or public group link reads its newest posts (maxPostsPerPage). A hashtag or search link is not read and gets a free row that says so. The leader's [{\"url\": …}] objects are read too. Empty: the example post is read and the status says so.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "resultsLimit": {
            "title": "Comments per post",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "The most rows to deliver from each post, replies included (a reply is a row, as with the leader). Empty or 0 = every comment the post's list serves, to its end. Over the API, send this number: the form's 50 is a prefill, not a default."
          },
          "includeNestedComments": {
            "title": "Include replies",
            "type": "boolean",
            "description": "Also deliver the replies to every comment read, each right after its comment, with its real parent and its thread's top comment named (replies to replies included: Facebook shows two levels). Each reply is a row and counts toward Comments per post; with a limit set, each comment's thread is read before the next comment. A comment Facebook shows 0 replies under is asked too (Facebook counts 0 on some threads it serves).",
            "default": false
          },
          "maxRepliesPerComment": {
            "title": "Replies per comment",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "With replies on: the most replies to deliver under each comment. Empty or 0 = every reply of the thread."
          },
          "sortOrder": {
            "title": "Comments order",
            "enum": [
              "all",
              "newest",
              "oldest",
              "relevant"
            ],
            "type": "string",
            "description": "The order Facebook lists the comments in. All comments (default, the leader's RANKED_UNFILTERED): the whole list in Facebook's ranking. Newest first, Oldest first: the whole list by time. Most relevant: Facebook's filtered list (some comments left out by Facebook). A date window reads each post newest first. The leader's viewOption values are read too.",
            "default": "all"
          },
          "onlyCommentsNewerThan": {
            "title": "Comments newer than",
            "type": "string",
            "description": "Only comments from this time on: a date (2026-10-01, 00:00 UTC), a time (2026-10-01T12:00:00Z) or a span back from now (7 days, 7d, 24h, 30m, 2 months, yesterday, today). The walk reads newest first and stops at the first older comment. Free (no add-on price)."
          },
          "onlyCommentsOlderThan": {
            "title": "Comments older than",
            "type": "string",
            "description": "Only comments up to this time: a date, a time or a span back from now. Free."
          },
          "textContains": {
            "title": "Comment text contains any of",
            "type": "array",
            "description": "Deliver only the comments and replies whose text contains any of these words, case-insensitive. A filtered walk reads at most 100 pages of a post plus 5 for each row it keeps, and its post row says so.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includePostDetails": {
            "title": "Add the post's own fields",
            "type": "boolean",
            "description": "Read each post's own page once for its text, time, reactions and shares, on every row (postTitle, postDate, postReactionsCount, postSharesCount). The post's id, URL, page and comment counts are on every row either way.",
            "default": true
          },
          "maxPostsPerPage": {
            "title": "Posts per page or profile link",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "For a page or profile link: how many of its newest posts to read (1–20, from one read of the page).",
            "default": 5
          },
          "failOnEmpty": {
            "title": "Fail the run when no comment comes out",
            "type": "boolean",
            "description": "End the run FAILED (instead of SUCCEEDED with the free post rows) when no comment row was delivered. For pipelines that alert on a failed run.",
            "default": false
          },
          "maxItems": {
            "title": "Max comments (whole run)",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "The most charged rows (comments and replies) of the whole run; 0 = no cap beyond your charge limit.",
            "default": 0
          },
          "proxyUrl": {
            "title": "Proxy URL",
            "type": "string",
            "description": "Your own proxy (scheme://user:pass@host:port) for every call instead of ours. Leave empty: the Actor brings its own connections at no cost to you."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}