{
  "openapi": "3.0.1",
  "info": {
    "title": "Facebook Reels Scraper: Views, Likes, No Login",
    "description": "Scrape the reels of public Facebook pages and profiles, no login, from links, usernames, ids or a Google Sheet, with date and caption filters. Rows: caption, hashtags, plays, exact reactions and comments, shares, music, MP4 links, page followers. JSON, CSV, API. Pay per reel delivered.",
    "version": "0.1",
    "x-build-id": "PYytLhHrwuActtKXv"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automation_craft~facebook-reels-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automation_craft-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/automation_craft~facebook-reels-scraper/runs": {
      "post": {
        "operationId": "runs-sync-automation_craft-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/automation_craft~facebook-reels-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-automation_craft-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",
        "properties": {
          "pages": {
            "title": "Facebook pages or profiles",
            "type": "array",
            "description": "Public Facebook pages or profiles, one per line: a link (facebook.com/natgeo, facebook.com/natgeo/reels/, facebook.com/profile.php?id=100044623170418, facebook.com/people/Name/100044623170418/), a username (natgeo or @natgeo) or a numeric id. Up to 500. Links of a single reel, post, video, group or event are skipped free. Also read as startUrls, profileUrls, facebook_urls, username or pageId.",
            "items": {
              "type": "string"
            }
          },
          "pagesListUrl": {
            "title": "Pages from a file or Google Sheet link",
            "type": "string",
            "description": "One https link to a public text or CSV file of up to 1 MB, or to a Google Sheet shared with \"anyone with the link\" (its first tab, or the tab in the link, is read as CSV). Every cell that names facebook.com is read, and in a file of one column every line (a link, a username or a numeric id; a value that is not a page is skipped free). It joins the pages above (at most 500 together). A link that cannot be read in 20 seconds stops the run before anything is fetched from Facebook. One file link a run: an item of startUrls written as {\"requestsFromUrl\": \"...\"} is read the same way, instead of this field."
          },
          "maxReelsPerPage": {
            "title": "Reels per page",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "How many reels to deliver for each page, newest first (after a pinned reel, which Facebook shows first). Reels left out by a filter do not count. Also read as resultsLimit, maxReelsPerProfile, reels_count or maxReels."
          },
          "maxItems": {
            "title": "Reels in the whole run",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "An upper bound on the reels the whole run delivers, across every page. Empty: no bound beyond the reels per page and your charge limit. Also read as maxResults."
          },
          "onlyReelsNewerThan": {
            "title": "Published on or after",
            "type": "string",
            "description": "Only reels published on or after this day (UTC): YYYY-MM-DD, an ISO time, today, yesterday, or a relative \"7 days\", \"2 weeks\", \"3 months\", \"1 year\" counted back from the run's start. Facebook lists reels by upload time; a reel published more than 30 days after its upload can be missed. Also read as onlyPostsNewerThan, reelsNewerThan, reels_newer_than, postedAfter or newerThan; sinceDays takes a number of days."
          },
          "onlyReelsOlderThan": {
            "title": "Published on or before",
            "type": "string",
            "description": "Only reels published on or before this day (UTC), the same forms as the start. Newer reels are read and left out free. Also read as onlyPostsOlderThan, postedBefore or olderThan."
          },
          "includeKeywords": {
            "title": "Caption contains",
            "type": "array",
            "description": "Only reels whose caption or hashtags contain at least one of these words or phrases, as whole words, case and accents ignored. Reels left out are free. Also read as keywordFilter.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Caption does not contain",
            "type": "array",
            "description": "Leave out reels whose caption or hashtags contain any of these words or phrases (the same matching). Reels left out are free.",
            "items": {
              "type": "string"
            }
          },
          "minPlays": {
            "title": "Minimum plays",
            "minimum": 0,
            "maximum": 9999999999,
            "type": "integer",
            "description": "Leave out reels whose play figure on the reels tab is below this number. Facebook shows a cut figure (28K), read as the lowest number it can stand for (28,000), so a reel is kept only when it certainly reaches the minimum. Reels left out are free. Also read as minPlayCount or minViews."
          },
          "includeExactViews": {
            "title": "Exact view count (add-on)",
            "type": "boolean",
            "description": "Read each delivered reel's own watch page for its exact play count (the Reels tab shows a cut figure such as 28K), its video views and its reactions by type. Charged as the Exact view count event on each reel whose page gave its figures; a reel whose page did not is delivered without them, free. Also read as enrichDetailPage or enrichReelDetails."
          },
          "includeComments": {
            "title": "Comments (add-on)",
            "type": "boolean",
            "description": "Deliver each delivered reel's comments as rows of their own, oldest first, up to the number below. Charged as the Comment event per comment row. Commenters' names are delivered; their ids and profile links only with personal data on. Also read as fetchComments."
          },
          "maxCommentsPerReel": {
            "title": "Comments per reel",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "With comments on: how many comment rows (replies included) to deliver for each reel."
          },
          "includeReplies": {
            "title": "Replies to comments",
            "type": "boolean",
            "description": "With comments on: read the replies under each comment too (charged as Comment rows, inside the comments per reel). Also read as fetchCommentReplies."
          },
          "maxRepliesPerComment": {
            "title": "Replies per comment",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "With replies on: how many replies to read under each comment."
          },
          "includeTranscript": {
            "title": "Transcripts (Facebook's own captions)",
            "type": "boolean",
            "description": "Add each reel's spoken words where Facebook publishes its own captions for it: the text and the timed cues. No extra charge. A reel without captions says so (no speech to text is run). Also read as fetchTranscript."
          },
          "includePageDetails": {
            "title": "Page details",
            "type": "boolean",
            "description": "Add each Page's About tab and its Meta Ad Library facts to its page row: category, address, phone, e-mail, websites, business hours, price range, the rating line, and whether the Page runs ads now (with its active ads count, Ad Library link, creation date, name changes and the countries of the people who manage it). No extra charge; read for Pages only, never for a person's profile. Also read as include_profile_details or enrichAuthorProfile."
          },
          "includePersonalData": {
            "title": "Include personal data",
            "type": "boolean",
            "description": "Off: a person's profile (a public figure's included) keeps its name, and its profile id, username, link and picture are empty; commenters, mentioned people and reshared or collaborating creators keep their names without ids or links; phone numbers and e-mail addresses read from captions and comments are not listed. On: those fields are filled. You are responsible for a lawful use of personal data (GDPR included).",
            "default": false
          },
          "outputFormat": {
            "title": "Row format",
            "enum": [
              "full",
              "compact"
            ],
            "type": "string",
            "description": "full: every field of a reel. compact: 28 fields most buyers sort and chart by (ids, link, caption, time, duration, plays, reactions, comments, shares, engagement, links, music, page).",
            "default": "full"
          },
          "maxConcurrency": {
            "title": "Pages at once",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "How many pages to read at the same time (1 to 3)."
          },
          "requestDelayMs": {
            "title": "Pause between calls (ms)",
            "minimum": 300,
            "maximum": 10000,
            "type": "integer",
            "description": "The pause between two calls of one page, in milliseconds (300 to 10000; 400 when empty)."
          },
          "maxRunSeconds": {
            "title": "Stop after (seconds)",
            "minimum": 60,
            "maximum": 86400,
            "type": "integer",
            "description": "End the run after this many seconds with what was read so far (60 to 86400). Empty: the run's own timeout."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify's datacenter proxy by default (every door of this Actor answers it logged out). Your own proxy links are possible, and no proxy uses the run container's own address. Apify's residential group is not offered: its transfer price is far above what a reel is charged."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}