{
  "openapi": "3.0.1",
  "info": {
    "title": "Instagram Transcript Scraper",
    "description": "Turn Instagram reel and video links into the spoken transcript: full text, timestamps, SRT and WebVTT, detected language, plus the caption, author, duration and engagement counts. Flat per-transcript price with no per-minute fee. No account, no cookies, no browser.",
    "version": "0.1",
    "x-build-id": "hgaAODocoYS2h4BpI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dami_studio~instagram-transcript-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dami_studio-instagram-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/dami_studio~instagram-transcript-scraper/runs": {
      "post": {
        "operationId": "runs-sync-dami_studio-instagram-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/dami_studio~instagram-transcript-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-dami_studio-instagram-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": {
          "postUrls": {
            "title": "Instagram reels or videos",
            "minItems": 0,
            "maxItems": 1000,
            "type": "array",
            "description": "The posts you want transcribed. A full link (https://www.instagram.com/reel/DcBsBkPOtmB/), a /p/ or /tv/ link, an instagram.com/share/ link, or just the bare shortcode - all work, and you can mix them in one list. Up to 1,000 per run.",
            "items": {
              "type": "string"
            }
          },
          "transcriptionApiKey": {
            "title": "Your speech-to-text API key",
            "type": "string",
            "description": "The key for YOUR speech-to-text account - OpenAI, Groq, Deepgram's OpenAI-compatible endpoint, an audio-capable model behind an OpenAI-compatible gateway, or your own self-hosted Whisper server. Instagram does not publish transcripts, so the audio has to be listened to by something; using your key means you pay your provider's rate directly instead of a marked-up per-minute fee here. The key is used for the requests and nothing else - it is never stored, logged or written to the dataset."
          },
          "transcriptionBaseUrl": {
            "title": "Speech-to-text endpoint",
            "type": "string",
            "description": "The OpenAI-compatible base URL your key belongs to. Leave as is for OpenAI. Examples: https://api.groq.com/openai/v1, https://api.deepgram.com/v1/openai, or your own server."
          },
          "transcriptionModel": {
            "title": "Speech-to-text model",
            "type": "string",
            "description": "The model name your provider expects. whisper-1 for OpenAI, whisper-large-v3-turbo for Groq, or the name of any audio-capable model your gateway exposes."
          },
          "maxItems": {
            "title": "Maximum transcripts",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many transcripts to return at most. The list is read in order and the run stops as soon as it has this many, so links past that point cost you nothing. Keep it low while you are testing - you pay per transcript."
          },
          "language": {
            "title": "Spoken language (optional)",
            "type": "string",
            "description": "A language code such as es, fr, de or ja, passed to your speech-to-text provider as a hint. Leave empty to let it detect the language itself, which is usually right."
          },
          "maxDurationSeconds": {
            "title": "Skip videos longer than",
            "minimum": 5,
            "maximum": 3600,
            "type": "integer",
            "description": "Videos longer than this are skipped with a free note rather than transcribed. Long videos cost you real money at your speech-to-text provider, so the limit is here to make that a decision rather than a surprise. Default 900 seconds (15 minutes)."
          },
          "transcriptionMode": {
            "title": "How to call your endpoint",
            "enum": [
              "auto",
              "transcriptions",
              "chat"
            ],
            "type": "string",
            "description": "Leave on auto. auto tries the /audio/transcriptions endpoint first (the one that returns per-cue timestamps) and falls back to /chat/completions with an audio part if your gateway does not implement it. Force one shape with transcriptions or chat."
          },
          "transcriptionChatModel": {
            "title": "Model for the chat fallback",
            "type": "string",
            "description": "Only used when the run falls back to /chat/completions and your audio-capable chat model has a different name from the transcription model above."
          },
          "concurrency": {
            "title": "Posts read at once",
            "minimum": 1,
            "maximum": 15,
            "type": "integer",
            "description": "How many posts to work through in parallel. Default 5, maximum 15. Lower it if your speech-to-text provider rate-limits you."
          },
          "sessionCookies": {
            "title": "Your own account cookies (optional)",
            "minItems": 0,
            "maxItems": 20,
            "type": "array",
            "description": "Leave this empty. This is not the speech-to-text key — it is an Instagram cookie, and it is optional. Posts are looked up without an account; a built-in session is only used for the occasional post Instagram will not hand to a logged-out reader. That built-in session is shared between runs, so if you are transcribing a long list and posts come back blocked, paste your own Instagram cookie here and this run gets a rate limit nobody else shares. In Chrome: F12 → Application → Cookies → instagram.com. The `sessionid` cookie is the one that matters; `csrftoken` alongside it is better. Paste it as `sessionid=...; csrftoken=...`, one entry per account. Cookies are used for this run's requests and nothing else — never stored, never logged, never written to the dataset.",
            "items": {
              "type": "string"
            }
          },
          "proxyUrls": {
            "title": "Your own proxy servers (optional)",
            "minItems": 0,
            "maxItems": 50,
            "type": "array",
            "description": "Leave this empty. By default the run rotates a large pool of addresses that cost you nothing per gigabyte. Fill it in only if you specifically want the traffic to leave through proxy servers you already pay for, in the form http://user:pass@host:port.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}