{
  "openapi": "3.0.1",
  "info": {
    "title": "Facebook Video Transcript: Reels & Pages to Text",
    "description": "Facebook video transcript and Reel transcript extractor: paste video, Reel or share links, or a page name. Uses Facebook's own captions when they cover the video, AI (Whisper) otherwise. Text with timestamps, SRT and VTT, views and reactions. No login, no API key.",
    "version": "0.1",
    "x-build-id": "qbRllOcCLONSnO68b"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/firsthand~facebook-video-transcript/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-firsthand-facebook-video-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/firsthand~facebook-video-transcript/runs": {
      "post": {
        "operationId": "runs-sync-firsthand-facebook-video-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/firsthand~facebook-video-transcript/run-sync": {
      "post": {
        "operationId": "run-sync-firsthand-facebook-video-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": {
          "urls": {
            "title": "Facebook video, Reel or page links",
            "type": "array",
            "description": "One per line. Works with Reels (facebook.com/reel/...), videos (facebook.com/watch/?v=..., facebook.com/<page>/videos/...), share links from the app (facebook.com/share/r/..., share/v/...), and page links (facebook.com/<page>, facebook.com/profile.php?id=...), which give the page's newest Reels (not the Videos tab). Only public videos; private profiles, groups that need a login and live streams are not supported. Links to other sites are listed as errors and not charged.",
            "items": {
              "type": "string"
            }
          },
          "pages": {
            "title": "Page names",
            "type": "array",
            "description": "Facebook page names, like natashaskitchen or NBCNews (the part after facebook.com/). The newest Reels of each page are transcribed. Same as putting the page link in the links field.",
            "items": {
              "type": "string"
            }
          },
          "maxVideosPerPage": {
            "title": "Reels per page",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many of the newest Reels to take from each page link or page name. Pages list their Reels newest first. Empty means 10."
          },
          "publishedAfter": {
            "title": "Published after",
            "type": "string",
            "description": "Take only page Reels published on or after this date (2026-09-01, midnight UTC) or within a window back from now (30 days, 2 weeks, 12 hours). Applies to page links; a direct video link is always taken."
          },
          "titleIncludes": {
            "title": "Caption contains",
            "type": "array",
            "description": "Only page Reels whose title or caption contains one of these texts, one per line, like recipe. Case and accents are ignored; * matches anything. Skipped Reels are not charged.",
            "items": {
              "type": "string"
            }
          },
          "titleExcludes": {
            "title": "Caption does not contain",
            "type": "array",
            "description": "Skip page Reels whose title or caption contains one of these texts, one per line. Skipped Reels are not charged.",
            "items": {
              "type": "string"
            }
          },
          "useFacebookCaptions": {
            "title": "Use the video's own captions first",
            "type": "boolean",
            "description": "Many Facebook videos have captions in the language they are spoken in (made by Facebook). When they cover the whole video, they are used instead of AI transcription and charged as one caption transcript per video, not per minute. Machine-translated captions are never used. Turn off to always transcribe the audio with AI.",
            "default": true
          },
          "captionsOnly": {
            "title": "Captions only, no AI transcription",
            "type": "boolean",
            "description": "Return only videos that have their own captions on Facebook; videos without them are listed as skipped and not charged. The cheapest way to check many videos.",
            "default": false
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language of the speech as a two-letter code (en, es, de, hi) or a name (Spanish), for AI transcription. Leave empty to detect it automatically."
          },
          "subtitles": {
            "title": "SRT and VTT subtitles",
            "type": "boolean",
            "description": "Adds ready subtitle files as text in the srt and vtt fields. Free.",
            "default": true
          },
          "includeSegments": {
            "title": "Timestamped segments",
            "type": "boolean",
            "description": "Adds the transcript split into lines with start and end seconds. Free.",
            "default": true
          },
          "wordTimestamps": {
            "title": "Word timestamps",
            "type": "boolean",
            "description": "Add the start and end time of every word inside each segment (segments[].words). Free. Only for videos transcribed with AI, not for Facebook captions. Turns segments on.",
            "default": false
          },
          "speakerLabels": {
            "title": "Speaker labels (who said what)",
            "type": "boolean",
            "description": "Marks every line with the person speaking (Speaker 1, Speaker 2), also in the subtitles, and adds speakerTranscript. Always uses AI transcription (ElevenLabs Scribe), never the Facebook captions. Adds $0.003 per audio minute.",
            "default": false
          },
          "translateTo": {
            "title": "Translate to",
            "type": "string",
            "description": "Also translate the transcript into up to 5 languages, separated by commas: codes like en, es, de or names like Spanish. The first language fills translatedText and translated SRT and VTT subtitles; with two or more, translations has text and subtitles for each. $0.002 per minute per language; a language the video is already in is not translated or charged."
          },
          "summarize": {
            "title": "Summary, chapters and key points",
            "type": "boolean",
            "description": "Adds a short summary, chapters, key points and keywords written by AI from the transcript. Charged per started hour of video with speech.",
            "default": false
          },
          "searchTerms": {
            "title": "Find mentions of",
            "type": "array",
            "description": "Brands, names or topics to find in the transcripts, one per line. Each mention comes back in mentions with its time and the phrase around it; mentionCounts has the number per term. Free.",
            "items": {
              "type": "string"
            }
          },
          "maxMinutesPerItem": {
            "title": "Max minutes per video",
            "minimum": 1,
            "maximum": 600,
            "type": "integer",
            "description": "Longer videos are transcribed up to this length and charged only for it; the row says truncated. Empty means up to 600 minutes."
          },
          "maxTotalMinutes": {
            "title": "Max minutes per run",
            "minimum": 1,
            "type": "integer",
            "description": "A video that would take the run over this many charged AI minutes is skipped; shorter ones that still fit are taken. You can also cap spending with the run's maximum cost."
          },
          "onlyNewVideos": {
            "title": "Only new videos",
            "type": "boolean",
            "description": "Remember what was transcribed and leave it out of later runs with the same list name. Put the actor on a schedule with page links: each run transcribes and charges only Reels it has not seen before. A video that failed is tried again next time.",
            "default": false
          },
          "monitorName": {
            "title": "List name",
            "type": "string",
            "description": "Runs with the same name share the list of transcribed videos, for example one name per schedule. Letters, digits, dashes and underscores. Empty means 'default'."
          },
          "datasetId": {
            "title": "Dataset ID from another actor's run",
            "type": "string",
            "description": "Transcribe the Facebook links found in a dataset, for example the output of a Facebook posts or Reels scraper. In each row the actor takes the first field that holds a link (videoUrl, url, postUrl, facebookUrl, topLevelUrl and similar). Up to 10,000 rows."
          },
          "datasetItems": {
            "title": "Dataset rows",
            "type": "array",
            "description": "Rows of another actor's output pasted as JSON; a link is taken from each row the same way as with Dataset ID."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}