{
  "openapi": "3.0.1",
  "info": {
    "title": "Instagram Transcript API & Profile Scraper - AI Video to Text",
    "description": "Instagram Transcript API & Profile Scraper extracts public profile details and converts video content into text transcripts. Collect captions, creator data, video metadata, and transcripts for content research, SEO, AI analysis, and lead generation.",
    "version": "1.0",
    "x-build-id": "rC7DMexB9Xp5ro6Xh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scraper-engine~instagram-transcript-profile-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scraper-engine-instagram-transcript-profile-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/scraper-engine~instagram-transcript-profile-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scraper-engine-instagram-transcript-profile-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/scraper-engine~instagram-transcript-profile-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scraper-engine-instagram-transcript-profile-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": {
          "bulkUrls": {
            "title": "📦 Reel / Video URLs (bulk)",
            "type": "array",
            "description": "🎞️ One or more public Instagram Reel, video, or post URLs to transcribe — e.g. <code>https://www.instagram.com/reel/DXtvzz7B3dC/</code>. Paste as many as you like, one per line. 🆓 FREE tier is capped at 5 URLs per run (see below) — 💎 switch to PAID tier for unlimited bulk transcription.",
            "items": {
              "type": "string"
            }
          },
          "videoUrl": {
            "title": "🎬 Single Reel / Video URL (quick test)",
            "type": "string",
            "description": "⚡ A single Instagram Reel/video/post URL — handy for a quick one-off test run alongside (or instead of) the bulk list above."
          },
          "userTier": {
            "title": "🎟️ Plan tier",
            "enum": [
              "free",
              "paid"
            ],
            "type": "string",
            "description": "🆓 <b>free</b> caps bulk transcription at the limit below. 💎 <b>paid</b> removes the cap for unlimited bulk transcription in one run.",
            "default": "free"
          },
          "freeBulkUrlsLimit": {
            "title": "🔒 FREE tier bulk URL cap",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "🚧 Maximum number of `bulkUrls` processed per run while on the FREE tier. Extra URLs beyond this are skipped with a clear log warning.",
            "default": 5
          },
          "usernames": {
            "title": "👥 Usernames / profile URLs",
            "type": "array",
            "description": "📇 One or more public Instagram usernames (or full profile URLs) to scrape recent posts from — e.g. <code>bbcnews</code> or <code>https://www.instagram.com/bbcnews/</code>. This mode returns post metadata and does NOT generate transcripts.",
            "items": {
              "type": "string"
            }
          },
          "resultsLimit": {
            "title": "🔢 Max posts per username",
            "minimum": 0,
            "type": "integer",
            "description": "🛑 Stop collecting posts for a profile after this many. Set to <b>0</b> for unlimited (subject to the safety scan cap below).",
            "default": 10
          },
          "onlyPostsNewerThan": {
            "title": "📅 Only posts newer than",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "⏳ Only collect posts published on/after this point in time. Accepts <code>YYYY-MM-DD</code>, a full ISO timestamp, or a relative value like <code>1 day</code>, <code>2 weeks</code>, <code>3 months</code>, <code>1 year</code>. All evaluated in UTC. Leave empty for no date filter."
          },
          "skipPinnedPosts": {
            "title": "📌 Skip pinned posts",
            "type": "boolean",
            "description": "🙈 Exclude posts pinned to the top of the profile grid from the results — useful when you only want naturally recent content.",
            "default": false
          },
          "includeSharesCount": {
            "title": "🔁 Include shares count (premium)",
            "type": "boolean",
            "description": "💰 Attempt to include a share/reshare count per post. ⚠️ Honestly reported: Instagram's public anonymous feed does not expose this value, so it is emitted as <code>0</code> with a clear log warning rather than being guessed.",
            "default": false
          },
          "maxScanned": {
            "title": "🧯 Safety scan cap (per username)",
            "minimum": 50,
            "maximum": 20000,
            "type": "integer",
            "description": "🛡️ Hard ceiling on how many raw posts are examined per username before giving up — protects against runaway runs when filters (date/pinned) reject almost everything.",
            "default": 2000
          },
          "whisperModel": {
            "title": "🧠 Whisper AI model",
            "enum": [
              "tiny",
              "base",
              "small",
              "medium"
            ],
            "type": "string",
            "description": "🎚️ Local speech-to-text model size. Bigger models are more accurate but slower and use more memory. <b>base</b> is the sweet spot for most Reels.",
            "default": "base"
          },
          "language": {
            "title": "🌐 Force transcript language (optional)",
            "type": "string",
            "description": "🈯 ISO 639-1 language code (e.g. <code>en</code>, <code>es</code>, <code>fr</code>) to force Whisper to a specific spoken language. Leave empty for automatic language detection."
          },
          "includeSegments": {
            "title": "🧩 Include timestamped segments",
            "type": "boolean",
            "description": "⏱️ Include the full array of timestamped transcript segments (<code>start</code>/<code>end</code>/<code>text</code>) — ideal for subtitles, captions, and clipping workflows.",
            "default": true
          },
          "includeImg": {
            "title": "🖼️ Include thumbnail image URL",
            "type": "boolean",
            "description": "🖌️ Include a preview/thumbnail image URL for each transcribed Reel/video.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "🛡️ Proxy configuration",
            "type": "object",
            "description": "🌍 By default the Actor connects with <b>NO proxy</b> for maximum speed. If Instagram rejects or blocks a request, it automatically escalates: ⚡ No proxy → 🏢 Datacenter proxy → 🏠 Residential proxy (retried up to 3×) — then sticks with Residential for the rest of the run. You can also force a tier yourself here."
          },
          "concurrency": {
            "title": "⚡ Parallel requests",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "🏎️ How many reels/profiles to process at the same time. Higher = faster, but more likely to trigger Instagram rate limits.",
            "default": 5
          },
          "requestDelay": {
            "title": "⏱️ Delay between requests (seconds)",
            "minimum": 0,
            "maximum": 10,
            "type": "number",
            "description": "🐢 A polite pause (plus random jitter) before every page fetch. Raise this if you're seeing blocks; lower it for smaller, faster runs.",
            "default": 1
          },
          "maxRetries": {
            "title": "🔁 Max retries per request",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "💪 How many times to retry a blocked/failed request before giving up (each retry may also trigger a proxy tier escalation — see Proxy configuration above).",
            "default": 3
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}