{
  "openapi": "3.0.1",
  "info": {
    "title": "Facebook Reel Transcript & Caption Scraper [NO LOGIN] ✅",
    "description": "Bulk-extract captions and transcripts from public Facebook reels and short videos. Every URL returns clean text or a plain-language reason (over 2 min / no captions / wrong URL). No login, no cookies, no speech-to-text bill. >99% success rate. Free tier: 50 results per run, unlimited on paid.",
    "version": "0.0",
    "x-build-id": "EaronSZdb31Oy6Qtf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/unseenuser~fb-transcript/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-unseenuser-fb-transcript",
        "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/unseenuser~fb-transcript/runs": {
      "post": {
        "operationId": "runs-sync-unseenuser-fb-transcript",
        "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/unseenuser~fb-transcript/run-sync": {
      "post": {
        "operationId": "run-sync-unseenuser-fb-transcript",
        "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": "Paste your Facebook URLs here",
            "uniqueItems": true,
            "type": "array",
            "description": "One URL per line. Reel URLs (facebook.com/reel/...) get transcribed straight away. Page URLs (facebook.com/nike) get expanded into their recent reels first, then each reel gets transcribed. Instagram, TikTok, YouTube, and other non-Facebook URLs are flagged with a note telling you which Actor to use instead.",
            "items": {
              "type": "string"
            }
          },
          "maxReelsPerPage": {
            "title": "How many reels to pull from each page URL (0 = grab everything)",
            "minimum": 0,
            "type": "integer",
            "description": "Only matters if you pasted a Facebook page URL above. 0 pulls every reel the page has. Set a number like 10 or 50 if you only want the newest few.",
            "default": 0
          },
          "includePostContext": {
            "title": "Add reel details (author, views, likes, music, video link)",
            "type": "boolean",
            "description": "Turn this on to get the reel's author, view / like / comment / share counts, description, music track, thumbnail, and direct video URL alongside the transcript. Required if you want creator profile, top comments, the MP4 download, or the 'skip long videos' shortcut below.",
            "default": false
          },
          "includeCreatorProfile": {
            "title": "Add the author's page profile (bio, followers, verified, category)",
            "type": "boolean",
            "description": "Turn on 'Add reel details' first. Adds the author's page bio, follower count, category, contact info, and verified badge to each row.",
            "default": false
          },
          "skipOverTwoMinutes": {
            "title": "Skip videos over 2 minutes (they can't be transcribed anyway)",
            "type": "boolean",
            "description": "Turn on 'Add reel details' first. Checks each video's length before trying to transcribe it and skips anything over 2 minutes so you don't waste credits.",
            "default": false
          },
          "includeTopComments": {
            "title": "Add top comments",
            "type": "boolean",
            "description": "Pulls the reel's top comments with author, text, like count, and reply count. Also written to a separate 'comments' dataset if you want to filter them on their own.",
            "default": false
          },
          "topCommentsLimit": {
            "title": "How many comments per reel (0 = grab everything one call returns)",
            "minimum": 0,
            "type": "integer",
            "description": "Only used when 'Add top comments' is on.",
            "default": 0
          },
          "includeCommentReplies": {
            "title": "Also grab the replies to each comment",
            "type": "boolean",
            "description": "Turn on 'Add top comments' first. Fetches every reply under each comment you pulled.",
            "default": false
          },
          "commentRepliesLimit": {
            "title": "How many replies per comment (0 = grab everything one call returns)",
            "minimum": 0,
            "type": "integer",
            "description": "Only used when 'Also grab the replies' is on.",
            "default": 0
          },
          "downloadVideo": {
            "title": "Download the reel's MP4 file to your Apify storage",
            "type": "boolean",
            "description": "Turn on 'Add reel details' first. Saves each reel's video file to your Apify key-value store. The row's output tells you the key so you can grab it later. You pay Apify for the storage.",
            "default": false
          },
          "downloadVideoQuality": {
            "title": "Which quality to download",
            "enum": [
              "hd",
              "sd"
            ],
            "type": "string",
            "description": "HD is bigger and sharper, SD is smaller and cheaper to store. Falls back to the other quality automatically if the first choice fails.",
            "default": "hd"
          },
          "downloadVideoMaxMb": {
            "title": "Skip any file bigger than this many MB (0 = no limit)",
            "minimum": 0,
            "type": "integer",
            "description": "Safety cap so a single giant video can't blow up your storage bill. 0 downloads any size.",
            "default": 0
          },
          "enrichments": {
            "title": "AI insights to add per reel",
            "type": "array",
            "description": "Pick any number. Each one is a small extra analysis run on the transcript using your own OpenAI key. Costs roughly $0.00013 per item per reel on OpenAI's side.",
            "items": {
              "type": "string",
              "enum": [
                "hook",
                "cta",
                "summary",
                "topics",
                "seo_keywords",
                "sentiment",
                "ad_angle",
                "comment_analysis",
                "run_summary"
              ],
              "enumTitles": [
                "Hook - the first 3 seconds of the reel",
                "Call-to-action - detect and classify",
                "Summary - 2 to 3 sentences",
                "Topics - 3 to 5 short labels",
                "SEO keywords - 8 to 12 phrases",
                "Sentiment - positive / neutral / negative",
                "Ad angle - problem-solution, testimonial, and similar",
                "Comment analysis - needs 'Add top comments' turned on",
                "Run summary - one overview across every reel in the run, saved to your storage"
              ]
            },
            "default": []
          },
          "translateTo": {
            "title": "Translate every transcript into these languages",
            "type": "array",
            "description": "Pick one or more languages. Each transcript gets translated with your own OpenAI key.",
            "items": {
              "type": "string",
              "enum": [
                "af",
                "am",
                "ar",
                "az",
                "bg",
                "bn",
                "bs",
                "ca",
                "cs",
                "cy",
                "da",
                "de",
                "el",
                "en",
                "eo",
                "es",
                "et",
                "eu",
                "fa",
                "fi",
                "fr",
                "ga",
                "gl",
                "gu",
                "he",
                "hi",
                "hr",
                "hu",
                "hy",
                "id",
                "is",
                "it",
                "ja",
                "ka",
                "kk",
                "km",
                "kn",
                "ko",
                "lo",
                "lt",
                "lv",
                "mk",
                "ml",
                "mn",
                "mr",
                "ms",
                "mt",
                "my",
                "ne",
                "nl",
                "no",
                "pa",
                "pl",
                "ps",
                "pt",
                "pt-br",
                "ro",
                "ru",
                "si",
                "sk",
                "sl",
                "sq",
                "sr",
                "sv",
                "sw",
                "ta",
                "te",
                "tg",
                "th",
                "tk",
                "tl",
                "tr",
                "uk",
                "ur",
                "uz",
                "vi",
                "yo",
                "zh",
                "zh-tw",
                "zu"
              ],
              "enumTitles": [
                "Afrikaans",
                "Amharic",
                "Arabic",
                "Azerbaijani",
                "Bulgarian",
                "Bengali",
                "Bosnian",
                "Catalan",
                "Czech",
                "Welsh",
                "Danish",
                "German",
                "Greek",
                "English",
                "Esperanto",
                "Spanish",
                "Estonian",
                "Basque",
                "Persian (Farsi)",
                "Finnish",
                "French",
                "Irish",
                "Galician",
                "Gujarati",
                "Hebrew",
                "Hindi",
                "Croatian",
                "Hungarian",
                "Armenian",
                "Indonesian",
                "Icelandic",
                "Italian",
                "Japanese",
                "Georgian",
                "Kazakh",
                "Khmer",
                "Kannada",
                "Korean",
                "Lao",
                "Lithuanian",
                "Latvian",
                "Macedonian",
                "Malayalam",
                "Mongolian",
                "Marathi",
                "Malay",
                "Maltese",
                "Burmese (Myanmar)",
                "Nepali",
                "Dutch",
                "Norwegian",
                "Punjabi",
                "Polish",
                "Pashto",
                "Portuguese (European)",
                "Portuguese (Brazilian)",
                "Romanian",
                "Russian",
                "Sinhala",
                "Slovak",
                "Slovenian",
                "Albanian",
                "Serbian",
                "Swedish",
                "Swahili",
                "Tamil",
                "Telugu",
                "Tajik",
                "Thai",
                "Turkmen",
                "Tagalog (Filipino)",
                "Turkish",
                "Ukrainian",
                "Urdu",
                "Uzbek",
                "Vietnamese",
                "Yoruba",
                "Chinese (Simplified)",
                "Chinese (Traditional)",
                "Zulu"
              ]
            },
            "default": []
          },
          "openaiApiKey": {
            "title": "Your OpenAI API key (only if you picked any insight or language above)",
            "type": "string",
            "description": "Get one at https://platform.openai.com/api-keys. Starts with 'sk-'. Used only for this run, never logged or stored."
          },
          "cache_max_age": {
            "title": "Reuse a URL's recent result for free (default: always scrape fresh)",
            "enum": [
              "",
              "1d",
              "3d",
              "7d",
              "14d",
              "30d"
            ],
            "type": "string",
            "description": "If you already scraped a URL within the window you pick here, this run reuses the previous result at zero cost. Leave off if you always want fresh data.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}