{
  "openapi": "3.0.1",
  "info": {
    "title": "Instagram Reel Transcript Scraper — Instagram Video Transcript",
    "description": "Instagram reels scraper with transcripts — the spoken words plus the on-screen text (OCR) audio-only tools miss, and each reel's hook, beats and call to action. Transcribes silent music-only reels too. Paste reel links, a profile handle to rank its reels by views, or a keyword or hashtag to search.",
    "version": "0.0",
    "x-build-id": "rn3fisePID8DrV8Aa"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/afanasenko~instagram-reel-script-extractor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-afanasenko-instagram-reel-script-extractor",
        "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/afanasenko~instagram-reel-script-extractor/runs": {
      "post": {
        "operationId": "runs-sync-afanasenko-instagram-reel-script-extractor",
        "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/afanasenko~instagram-reel-script-extractor/run-sync": {
      "post": {
        "operationId": "run-sync-afanasenko-instagram-reel-script-extractor",
        "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": {
          "reelUrls": {
            "title": "Reel links",
            "type": "array",
            "description": "Paste one or more reel links, or just their shortcodes. Leave this empty to use Mode 2 or Mode 3 instead.",
            "items": {
              "type": "string"
            }
          },
          "maxItemsMode1": {
            "title": "Maximum reels to analyze",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Stops after this many reels, so a long list cannot cost more than you expect.",
            "default": 50
          },
          "analyzeCarousels": {
            "title": "Analyze carousel links too",
            "type": "boolean",
            "description": "Mode 1 only. A carousel has no video to transcribe, so by default its link comes back as a free row. Switch this on to hand carousel links to the Instagram Carousel Analyzer, which starts as a second run in your account and reads the slides: text, hook, structure. That run charges $0.25 per analyzed carousel ($0.20 from Gold); this run charges nothing for carousels.",
            "default": false
          },
          "usernames": {
            "title": "Creator handles",
            "type": "array",
            "description": "One or more public Instagram handles, without the @. Leave this empty to use Mode 3 instead.",
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Which reels to analyze first",
            "enum": [
              "Top performing",
              "Newest"
            ],
            "type": "string",
            "description": "Top performing starts with the creator's biggest reels, which is what you want when you are looking for what works. Mode 2 only; Mode 3 has its own.",
            "default": "Top performing"
          },
          "postedWithinDays": {
            "title": "Only reels posted in the last N days",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Leave empty to search the whole catalog. To set an exact start date instead, use \"Posted on or after\" below; if both are set, the later of the two start dates is used. Mode 2 only; Mode 3 has its own date fields."
          },
          "postedAfter": {
            "title": "Posted on or after",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])(T[0-2]\\d:[0-5]\\d(:[0-5]\\d)?(\\.\\d+)?Z?)?$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "Only reels posted on or after this date (UTC): a date like 2026-03-01, or a span back from today like \"3 weeks\". Leave empty for no start date. If \"Only reels posted in the last N days\" is also set, the later of the two start dates is used. Mode 2 only."
          },
          "postedBefore": {
            "title": "Posted on or before",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])(T[0-2]\\d:[0-5]\\d(:[0-5]\\d)?(\\.\\d+)?Z?)?$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "Only reels posted on or before this date (UTC), the whole day included: a date like 2026-03-31, or a span back from today like \"1 week\". Leave empty for no end date. With an end date the run first pages past the creator's newer posts, about 480 of them per feed at most. Mode 2 only."
          },
          "minViews": {
            "title": "Only reels above this many views",
            "minimum": 0,
            "type": "integer",
            "description": "Leave empty to include every reel. Mode 2 only; Mode 3 has its own."
          },
          "maxItemsMode2": {
            "title": "Maximum reels to analyze per creator",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Stops after this many reels per handle. Reels beyond the limit are still listed, ranked by views, so you can see what was left.",
            "default": 50
          },
          "searchQueries": {
            "title": "Search words or phrases",
            "type": "array",
            "description": "Words or short phrases, one per row — the run analyzes the reels Instagram's search returns for each, from any creator. Instagram returns about 20 to 30 reels per phrase; a hashtag goes deeper. A \"#tag\" typed here is searched as a hashtag.",
            "items": {
              "type": "string"
            }
          },
          "searchHashtags": {
            "title": "Hashtags",
            "type": "array",
            "description": "Hashtags, with or without the #, one per row. A hashtag returns Instagram's reels under that tag — mostly from the last couple of weeks, and hundreds deep.",
            "items": {
              "type": "string"
            }
          },
          "maxItemsPerSearch": {
            "title": "Maximum reels to analyze per search",
            "minimum": 1,
            "maximum": 300,
            "type": "integer",
            "description": "Per word or hashtag. Found reels beyond the limit are still listed, with their view counts and the search that found them, in the run's NOT_ANALYZED record.",
            "default": 10
          },
          "maxItemsMode3": {
            "title": "Maximum reels to analyze in total",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Across every search in the run, so a long list cannot cost more than you expect. The searches take turns, so a small total still covers each one.",
            "default": 50
          },
          "sortByMode3": {
            "title": "Which found reels to analyze first",
            "enum": [
              "Most viewed",
              "Newest",
              "Instagram's order"
            ],
            "type": "string",
            "description": "Most viewed is what you want when you are looking for what works. Instagram's order keeps the order the search returned them in. The free plan always takes the most viewed.",
            "default": "Most viewed"
          },
          "postedAfterMode3": {
            "title": "Posted on or after",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])(T[0-2]\\d:[0-5]\\d(:[0-5]\\d)?(\\.\\d+)?Z?)?$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "Only found reels posted on or after this date (UTC): a date like 2026-10-01, or a span back from today like \"2 weeks\". Leave empty for no start date."
          },
          "postedBeforeMode3": {
            "title": "Posted on or before",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])(T[0-2]\\d:[0-5]\\d(:[0-5]\\d)?(\\.\\d+)?Z?)?$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "Only found reels posted on or before this date (UTC), the whole day included: a date like 2026-10-31, or a span back from today like \"1 week\". Leave empty for no end date. A hashtag search mostly returns recent reels, so a window far back finds little."
          },
          "minViewsMode3": {
            "title": "Only reels above this many views",
            "minimum": 0,
            "type": "integer",
            "description": "Leave empty to include every found reel."
          },
          "analyzeLongVideos": {
            "title": "Analyze videos longer than 3 minutes",
            "type": "boolean",
            "description": "Every mode. Off: a video longer than 3 minutes comes back as a free row, as always. On, from 13 November 2026: videos up to 20 minutes are analyzed too, charged as one reel plus an Extra minute for each started minute beyond the first 3 — see the Pricing tab. Before that date they stay free rows even when this is on. Reels up to 3 minutes cost the same either way. A video whose extra minutes do not fit in the run's maximum charge stays a free row.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}