{
  "openapi": "3.0.1",
  "info": {
    "title": "Instagram AI Transcript Extractor",
    "description": "Instagram Transcript Generator — 🎬 AI Reel Transcription | 🗣️ Speaker Diarization | 🌍 Language Detection | 📊 30+ Metrics | 💰 Best Price. Extract entire channels with word-perfect transcripts and speaker identification. Try 5 reels free!",
    "version": "0.0",
    "x-build-id": "yJdzQ3u9EhnT7QmDH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sian.agency~instagram-ai-transcript-extractor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sian.agency-instagram-ai-transcript-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/sian.agency~instagram-ai-transcript-extractor/runs": {
      "post": {
        "operationId": "runs-sync-sian.agency-instagram-ai-transcript-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/sian.agency~instagram-ai-transcript-extractor/run-sync": {
      "post": {
        "operationId": "run-sync-sian.agency-instagram-ai-transcript-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": {
          "instagramUrl": {
            "title": "🎬 Single Instagram URL",
            "pattern": "^https://(www\\.)?instagram\\.com/(reels?|p)/[A-Za-z0-9_-]+/?.*$",
            "type": "string",
            "description": "🎬 **SINGLE VIDEO PROCESSING:** Extract transcript from one Instagram video.\n\n📱 **How to get the URL:**\n1. Open Instagram **video** reel or **video** post (with speaking/audio)\n2. Click the **share** button (↗️)\n3. Select **\"Copy Link\"**\n4. Paste the link here\n\n💡 **TIP:** Use bulk mode for multiple videos\n\n❌ **NOT supported:** \n• Image carousels/slideshows (multiple photos)\n• Music-only videos without speech\n• Silent videos without audio\n\n✅ **SUPPORTED:** \n• Video reels (/reel/) with speech/talking\n• Single video posts (/p/) with spoken audio\n\n🤖 **Auto-correction:** URLs are automatically fixed if needed (e.g., /reels/ → /reel/)\n\n⚠️ **Requirements:** \n• Only **public profiles** can be processed\n• URL must contain **VIDEO with spoken audio** for transcription",
            "default": "https://www.instagram.com/p/DS46KJNjva9/"
          },
          "bulkUrls": {
            "title": "🚀 Bulk Instagram URLs (Multiple Videos)",
            "type": "array",
            "description": "🚀 **BULK PROCESSING:** Extract transcripts from multiple Instagram videos at once.\n\n✨ **Perfect for content creators, marketers & social media analysts**\n\n💰 **TIER-BASED LIMITS:**\n• **FREE users:** Up to 5 URLs per run\n• **PAID users:** Unlimited URLs\n\n💡 **TIP:** Use single mode for one video\n\n📝 **BULK EDIT:** Click \"Bulk edit\" button to paste URLs (one per line)\n📁 **TEXT FILE UPLOAD:** Upload .txt files with URLs (supports line breaks, commas, AND spaces - perfect for clipboard issues!)\n🔗 **MANUAL ADD:** Use + Add button for individual URLs\n\n⚠️ **IMPORTANT:** Please provide either single URL OR bulk URLs (at least one is required)",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "wordLevelTimestamps": {
            "title": "🔤 Word-Level Timestamps (FREE)",
            "type": "boolean",
            "description": "🔤 **WORD-LEVEL TIMING:** Get precise timestamps for every single word in the transcript!\n\n✅ **COMPLETELY FREE** - No extra charges for this feature\n\n📊 **WHAT YOU GET:**\n• **Word-by-word timing** - Perfect timestamp for each word\n• **Detailed analysis** - Ideal for content analysis, subtitles, and research\n• **Precision data** - Perfect for syncing with video editors\n• **Enhanced search** - Find exact moments when specific words are spoken\n\n🎯 **PERFECT FOR:**\n• **Content creators** - Create precise subtitles and captions\n• **Researchers** - Analyze speech patterns and timing\n• **Video editors** - Sync edits with exact word timing\n• **Data analysts** - Extract insights from speech timing patterns\n• **Accessibility** - Create detailed accessibility content\n\n✨ **BULK PROCESSING:** Applies to ALL URLs when enabled (no extra cost)\n\n🆓 **ALWAYS FREE:** This feature is included for both FREE and PAID users",
            "default": false
          },
          "fastProcessing": {
            "title": "⚡ Fast Processing (PAID)",
            "type": "boolean",
            "description": "🚀 **SPEED BOOST:** Get your transcripts 50%+ faster!\n\n💰 **PRICING (per URL):**\n• **FREE users:** Standard rate for fast processing\n• **PAID users:** Discounted rate for fast processing\n\n⏱️ **PROCESSING SPEED:**\n• Standard: ~30 seconds per video\n• Fast: 50%+ faster than standard processing\n\n🎯 **RECOMMENDED FOR:**\n• **Bulk processing (2+ URLs)** - Speed benefits become more obvious with multiple reels\n• Urgent transcript needs with multiple videos\n• Time-sensitive bulk content analysis\n• Real-time social media monitoring workflows\n\n⚠️ **NOT RECOMMENDED FOR:**\n• **Single URL processing** - Speed difference is minimal\n• One-off transcript extractions\n\n✨ **Bulk Note:** Fast processing applies to ALL URLs in bulk processing (charged per URL for all users)",
            "default": false
          },
          "channelUsername": {
            "title": "👤 Instagram Username or URL (Channel Scrape)",
            "type": "string",
            "description": "👤 **CHANNEL SCRAPE MODE:** Automatically scrape multiple reels from an Instagram profile!\n\n✨ **Perfect for analyzing creator content, competitor research, and bulk content processing**\n\n📝 **SUPPORTED FORMATS:**\n• Username only: \"ig-username\" or \"yourusername\"\n• Profile URL: \"https://www.instagram.com/ig-username/\"\n• Reels tab URL: \"https://www.instagram.com/ig-username/reels/\"\n• Tagged URL: \"https://www.instagram.com/ig-username/tagged/\"\n• Any Instagram profile URL format\n\n✅ **AUTO-EXTRACTION:** We automatically extract the username from any Instagram URL\n\n❌ **NOT supported:** Private profiles\n\n🎯 **HOW IT WORKS:**\n1. Enter the Instagram username OR paste any profile URL (including reels tab)\n2. Specify how many recent reels to scrape (in the next field)\n3. Get transcripts and data for all reels automatically\n\n⚠️ **IMPORTANT:** When this field is filled, single URL and bulk URLs fields will be ignored\n⚠️ **REQUIREMENTS:** Public profile only, reels with spoken audio"
          },
          "reelCount": {
            "title": "🔢 Amount of Reels to Scrape",
            "minimum": 1,
            "type": "integer",
            "description": "🔢 **REEL COUNT:** How many recent reels to scrape from the profile.\n\n💰 **TIER-BASED LIMITS:**\n• **FREE users:** Up to 5 reels per run\n• **PAID users:** Unlimited reels\n\n📊 **RECOMMENDED VALUES:**\n• **10-20** - Quick content analysis\n• **50-100** - Comprehensive content study\n• **All** - Full profile analysis\n\n🔄 **SCRAPING ORDER:**\n• The scraper **always starts from the newest** to the oldest\n• Works within your chosen time frame (if date filter is set)\n• Example: \"50 reels\" + \"last 3 months\" = 50 most recent reels from the last 3 months\n\n⚠️ **IMPORTANT:** Only reels with spoken audio will be transcribed\n⚠️ **REQUIRED:** Only when Channel Scrape Mode is enabled (username field is filled)\n\n💡 **TIP:** Start with smaller numbers to test, then increase for full analysis",
            "default": 10
          },
          "onlyPostsNewerThan": {
            "title": "📅 Only Posts Newer Than (Optional)",
            "type": "string",
            "description": "📅 **DATE FILTER:** Only scrape reels/posts newer than a specific date.\n\n✨ **Perfect for analyzing recent content, seasonal campaigns, or time-sensitive research**\n\n🎯 **TWO FORMATS AVAILABLE:**\n\n**1️⃣ ABSOLUTE DATE:**\n• Pick a specific date from the calendar\n\n**2️⃣ RELATIVE DATE:**\n• Select a time period (e.g., 1 day, 3 weeks, 6 months)\n\n💡 **USE CASES:**\n• **Content analysis** - Study recent creator strategies\n• **Campaign tracking** - Monitor promotional content periods\n• **Competitor research** - Analyze latest competitor moves\n• **Trend monitoring** - Track emerging content patterns\n\n⚠️ **OPTIONAL:** Leave empty to scrape all available reels\n⚠️ **PRIORITY:** If set, this filter applies BEFORE the reel count limit\n\n💡 **TIP:** Combine with reel count for precise control (e.g., \"last 3 months\" + \"50 reels\" = 50 most recent reels from the last 3 months)"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}