{
  "openapi": "3.0.1",
  "info": {
    "title": "Facebook Page Reels Scraper — Facebook Reels API, Views, MP4",
    "description": "Facebook page reels as rows: paste a page link and get views, duration, description, music, post date and a playable MP4 link — with an opt-in transcript per reel. No login, no cookies, exact limit. A page with no reels, a private page and a reel we cannot transcribe are never charged.",
    "version": "1.0",
    "x-build-id": "VUFYW66aZxCcmVRvh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/steadyfetch~facebook-reels-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-steadyfetch-facebook-reels-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-reels-scraper/runs": {
      "post": {
        "operationId": "runs-sync-steadyfetch-facebook-reels-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-reels-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-steadyfetch-facebook-reels-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, one per line — a page name (\"ladbible\"), a page slug, or a full page link (https://www.facebook.com/ladbible); \"_demo\" is the sample switch, not a page. A page with no reels, and a page Facebook will not show without a login, are delivered as labelled rows and are never charged. A reel link put here is routed to the reel box automatically, not refused, and a page's reels come back newest first. Leave this empty and the run returns built-in sample rows instead of collecting anything, so you can see the output shape at no result fee.",
            "default": [
              "_demo"
            ],
            "items": {
              "type": "string"
            }
          },
          "reelUrls": {
            "title": "Reel links",
            "type": "array",
            "description": "Individual reel links, one per line — https://www.facebook.com/reel/1234567890, https://www.facebook.com/share/r/abc123/, https://www.facebook.com/watch/?v=1234567890, https://fb.watch/abc123/ or https://www.facebook.com/<page>/videos/1234567890. A pasted reel link is a first-class input here, not a workaround: each one returns its own row with the like, comment, share and view counts a page listing does not carry. Charged as one \"Reel lookup\" when the row lands; a link Facebook answers is gone costs nothing.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs (pages and reel links mixed)",
            "type": "array",
            "description": "One list for both kinds of link, for buyers moving over from another scraper. A page or profile URL lists its reels; a reel, share, watch or fb.watch link returns that one reel. Each line is sorted into the right door before anything is bought, so a reel link never costs a page read and a page link never costs a lookup.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "includeTranscript": {
            "title": "Include transcript",
            "type": "boolean",
            "description": "OFF (default): rows carry the reel's description and metadata only. ON: every delivered reel also carries `transcript`, `transcriptLanguage` and timestamped `transcriptSegments`, at $0.0075 per produced transcript on top of the row. Facebook reels run about two minutes on average; one longer than 180 seconds is delivered without a transcript, uncharged, and the row names our Media Transcriber, which transcribes any length by the minute.",
            "default": false
          },
          "maxItems": {
            "title": "Max reels to return",
            "minimum": 1,
            "type": "integer",
            "description": "Hard ceiling — the run never delivers or bills more reel rows than this, across every page and every link, whatever else is set. With more than one page the limit is split evenly between them, so 60 across 3 pages collects 20 from each; a page that runs short leaves an uncharged row saying so rather than borrowing another page's share. Other reels scrapers call this `resultsLimit`, `limit` or `count`; those names are read as this field too and the smallest of them wins, with one uncharged note row saying which was read. Ask for more than this actor can serve in one run and the run still starts: it continues at the actor's own ceiling of 2,000 rows, with one uncharged row saying what you asked for and what bound it.",
            "default": 30
          },
          "newerThan": {
            "title": "Only reels posted after",
            "type": "string",
            "description": "A date, YYYY-MM-DD, or a relative window like \"7 days\". Reels posted before it are dropped, uncharged, and the status line says how many. Page reels arrive newest first, so a daily run with the default limit catches everything posted since."
          },
          "olderThan": {
            "title": "Only reels posted before",
            "type": "string",
            "description": "A date, YYYY-MM-DD, or a relative window like \"30 days\". Reels posted after it are dropped, uncharged, and counted on the status line."
          },
          "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. A time limit ends the collecting, never the delivering: reels already in hand are always written out. With the transcript on, budget roughly 6-10 seconds per reel. Anything outside the actor's own range of 30 to 3,600 seconds still starts a run: the clock is set to the nearest end of that range and one uncharged row says so.",
            "default": 1800
          },
          "includeSeen": {
            "title": "Include reels you already have",
            "type": "boolean",
            "description": "OFF (default): a reel already delivered to your account is skipped — no row, no charge — and the next new reel takes its place, so you still get the number you asked for. ON: those reels are delivered again anyway, marked `repeat: true`, without a transcript leg and still not charged. That is about reels found in a page listing. A reel you pasted a LINK to is one you named, and there is no next reel behind it to take its place, so it always comes back either way — marked `repeat: true`, with no transcript leg and no result fee. Reels older than 90 days in your account's memory count as new again either way.",
            "default": false
          },
          "resumeFromDatasetId": {
            "title": "Skip reels in this dataset",
            "type": "string",
            "description": "The dataset ID of a previous run of this actor. Reels already in it are treated as reels 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}