{
  "openapi": "3.0.1",
  "info": {
    "title": "Instagram Reels Transcript API – Reels & Video to Text, Whisper",
    "description": "Turn public Instagram Reels into a content research library. Get transcripts, opening lines and optional on-screen text from Reel or profile links. Export to a spreadsheet to compare creators and collect ideas for your next video.",
    "version": "1.0",
    "x-build-id": "OUojno8sLVcwqhrdo"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tubetext~instagram-reels-transcript/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tubetext-instagram-reels-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/tubetext~instagram-reels-transcript/runs": {
      "post": {
        "operationId": "runs-sync-tubetext-instagram-reels-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/tubetext~instagram-reels-transcript/run-sync": {
      "post": {
        "operationId": "run-sync-tubetext-instagram-reels-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": "Reel URLs, profile URLs or @usernames",
            "type": "array",
            "description": "Provide at least one of: urls / datasetId. Mix freely, one per line: reel links (instagram.com/reel/…, /p/…), share links (instagram.com/share/…), profile links (instagram.com/natgeo or …/natgeo/reels/) or @usernames. For a profile, its latest public reels are transcribed.",
            "items": {
              "type": "string"
            }
          },
          "monitorProfiles": {
            "title": "Monitor profiles (daily new reels)",
            "type": "boolean",
            "description": "One-click monitoring: only reels posted since your last run, pinned reels skipped, up to 8 new reels per profile (unless you change 'Max reels per profile'). The status shows a monthly cost estimate. Save the run as a task and add a daily schedule to get new reels every day; profiles with nothing new are free.",
            "default": false
          },
          "datasetId": {
            "title": "Or: dataset with reel links (chain another Actor)",
            "type": "string",
            "description": "A dataset from another Actor run, e.g. an Instagram post, hashtag or profile scraper (pick it, or paste its ID via API). The reel/post links in it are transcribed. Read-only access to this one dataset is requested."
          },
          "datasetSortBy": {
            "title": "Sort dataset by",
            "enum": [
              "views",
              "original"
            ],
            "type": "string",
            "description": "Which reels to take first when the dataset has more than 'Max videos from dataset'.",
            "default": "views"
          },
          "maxVideosFromDataset": {
            "title": "Max reels from dataset",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many reel links to take from the dataset (each is billed like a single reel).",
            "default": 50
          },
          "maxReelsPerProfile": {
            "title": "Max reels per profile",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Newest reels first (the profile's Reels tab order). Ignored for direct reel links.",
            "default": 20
          },
          "onlyReelsNewerThan": {
            "title": "Only reels newer than",
            "pattern": "^$|^\\d{4}-\\d{2}-\\d{2}.*$|^\\d+\\s*(d|day|days|w|week|weeks|month|months)$",
            "type": "string",
            "description": "Optional. A date (2026-09-01) or a relative period (7 days, 2 weeks, 3 months). Applies to profiles."
          },
          "skipAlreadyScraped": {
            "title": "Only new reels (skip ones scraped in earlier runs)",
            "type": "boolean",
            "description": "For scheduled monitoring: remembers which reels of each profile were already processed (in a named key-value store 'tubetext-instagram-seen' in your account) and skips them next time.",
            "default": false
          },
          "skipPinned": {
            "title": "Skip pinned reels",
            "type": "boolean",
            "description": "Pinned reels sit at the top of a profile even when they are old.",
            "default": false
          },
          "skipMusicOnlyReels": {
            "title": "Skip music-only reels (profiles)",
            "type": "boolean",
            "description": "For profile links and @usernames: reels whose sound Instagram labels as a licensed song and that contain no speech (only music or song lyrics) get no row of their own, just one free summary row per profile. Someone talking over a song is always kept and transcribed. Direct reel links are always returned in full, and so is every reel when on-screen text is on. Music-only reels are never charged either way. Turn off to get a row (with the lyrics) for every reel.",
            "default": true
          },
          "maxMinutesPerReel": {
            "title": "Max reel length (minutes)",
            "minimum": 1,
            "maximum": 90,
            "type": "integer",
            "description": "Longer videos are skipped (free) to keep costs predictable.",
            "default": 15
          },
          "useCache": {
            "title": "Reuse successful results for 24 hours",
            "type": "boolean",
            "description": "Reuse complete successful transcripts from this Actor in your account across reel links, profiles and datasets, with the same output options and maximum reel length. Cache hits do not download, transcribe or read on-screen text again and incur no result-event charges; run/platform costs can still apply. Metadata is a snapshot. Only-new profile skipping takes priority. If private cache storage is unavailable, normal processing and billing apply.",
            "default": false
          },
          "forceRefresh": {
            "title": "Refresh cached results",
            "type": "boolean",
            "description": "With useCache enabled, bypass existing results and process normally (normal charges apply). A complete successful result replaces the cache; failures leave the previous successful result intact. Has no effect when useCache is off.",
            "default": false
          },
          "includeTimestampedText": {
            "title": "Include timestamped text",
            "type": "boolean",
            "description": "Adds a 'timestampedText' field with one [mm:ss] line per sentence.",
            "default": true
          },
          "includeSrt": {
            "title": "Include SRT subtitles",
            "type": "boolean",
            "description": "Adds an 'srt' field in SubRip (.srt) format.",
            "default": false
          },
          "includeOnScreenText": {
            "title": "Include on-screen text",
            "type": "boolean",
            "description": "Also read the text shown in the video (captions, titles, text stickers) with an AI vision model. Works on music-only reels too. Slower; billed as an extra 'on-screen-text' event only for reels where text was found.",
            "default": false
          },
          "includeSegments": {
            "title": "Include raw segments",
            "type": "boolean",
            "description": "Adds a 'segments' array with start, duration and text.",
            "default": false
          },
          "chunkWords": {
            "title": "RAG chunk size (words)",
            "minimum": 0,
            "maximum": 2000,
            "type": "integer",
            "description": "Set e.g. 300 to add a 'chunks' array: transcript split into ~N-word blocks with start/end timestamps. 0 = off.",
            "default": 0
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many reels to process in parallel.",
            "default": 8
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}