{
  "openapi": "3.0.1",
  "info": {
    "title": "Instagram Reels Transcript Scraper — Reel to Text",
    "description": "Instagram Reels, TikTok and YouTube Shorts to text: transcript with timestamps, on-screen text, the 3-second hook, likes, views and a viral score vs the author's usual. No login, no cookies. Failed and private videos are free.",
    "version": "0.1",
    "x-build-id": "KrV7bJEXL0nMFM7Oz"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lergassy~instagram-reels-transcript-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lergassy-instagram-reels-transcript-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/lergassy~instagram-reels-transcript-scraper/runs": {
      "post": {
        "operationId": "runs-sync-lergassy-instagram-reels-transcript-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/lergassy~instagram-reels-transcript-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-lergassy-instagram-reels-transcript-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": {
          "videoUrls": {
            "title": "🔗 Instagram Reel URLs",
            "type": "array",
            "description": "Add one or more public Reel links (instagram.com/reel/...). No login or cookies needed. TikTok and YouTube Shorts links also work, if you happen to have them in the same list.",
            "items": {
              "type": "string"
            }
          },
          "compareWithAuthor": {
            "title": "📈 Find viral videos (compare with the author's usual)",
            "type": "boolean",
            "description": "Adds author, views, likes, comments, caption and publish date to every video, and when you send 4 or more videos from the same author it compares each one with that author's median (vsAuthorMedian: 5 means five times the author's usual). Videos at 3× or more are flagged isOutlier — the ones that went viral for that account. TikTok is compared on views; Instagram on likes, because Instagram hides view counts from logged-out visitors. Free: no extra charge.",
            "default": true
          },
          "profiles": {
            "title": "👤 TikTok profiles or YouTube channels",
            "type": "array",
            "description": "Instagram profiles need a login, so they are not supported — paste Reel links above. A TikTok handle (@duolingo) or a YouTube channel does work here.",
            "items": {
              "type": "string"
            }
          },
          "resultsLimitPerProfile": {
            "title": "🔢 Videos per profile",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How many of the newest videos to take from each profile.",
            "default": 10
          },
          "onlyPostsNewerThan": {
            "title": "📅 Only videos newer than",
            "type": "string",
            "description": "Skip anything published before this date. Leave empty to take the newest videos whatever their date."
          },
          "transcriptionMode": {
            "title": "🎧 Transcription strategy",
            "enum": [
              "ai-only",
              "captions-first",
              "captions-only"
            ],
            "type": "string",
            "description": "Captions first is the default: when TikTok has its own subtitles for a video, they are used as the transcript (fast, and they keep every repeated line, which speech recognition tends to drop on short clips); videos without subtitles, and all Instagram Reels, go to speech recognition. YouTube Shorts always use their caption track. Choose Speech recognition to ignore platform subtitles, or Captions only to skip videos that have none.",
            "default": "captions-first"
          },
          "includeOnScreenText": {
            "title": "🖼️ Read on-screen text",
            "type": "boolean",
            "description": "Read the text burned into the picture — caption cards, title cards, hard subtitles — and split it from what the author actually says. No other Actor does this. It downloads the video and reads it frame by frame, so it is billed separately and takes several minutes per video. Off by default.",
            "default": false
          },
          "quality": {
            "title": "🎯 Speech recognition quality",
            "enum": [
              "fast",
              "balanced",
              "accurate"
            ],
            "type": "string",
            "description": "Only used when a video has no captions of its own. Fast is enough for clear speech in short video; accurate helps with noise, accents and music.",
            "default": "fast"
          },
          "language": {
            "title": "🗣️ Spoken language",
            "enum": [
              "auto",
              "en",
              "es",
              "pt",
              "fr",
              "de",
              "it",
              "nl",
              "hi",
              "ar",
              "ja",
              "ko",
              "zh",
              "ru",
              "tr",
              "id",
              "vi",
              "th",
              "pl",
              "uk"
            ],
            "type": "string",
            "description": "Leave on Auto unless the video is short and the language is being guessed wrong.",
            "default": "auto"
          },
          "maximumVideoDurationSeconds": {
            "title": "⏳ Maximum video duration, seconds",
            "minimum": 0,
            "maximum": 36000,
            "type": "integer",
            "description": "Videos longer than this are skipped with a free error row, before anything is downloaded. 0 means no limit. Useful when a profile mixes Shorts with hour-long uploads.",
            "default": 0
          },
          "ocrFps": {
            "title": "🖼️ On-screen text sampling",
            "enum": [
              "1",
              "1.5",
              "2",
              "3"
            ],
            "type": "string",
            "description": "How often frames are read when “Read on-screen text” is on. On our labelled test video 1.5 frames per second found every caption card, while 1 lost three of six. Higher values cost more time, not more accuracy.",
            "default": "1.5"
          },
          "includeTranscriptSegments": {
            "title": "⏱️ Include timestamped segments",
            "type": "boolean",
            "description": "Return the transcript as timestamped segments in addition to the plain text. Turn off for a flatter table.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}