{
  "openapi": "3.0.1",
  "info": {
    "title": "B2B Social Video Transcripts",
    "description": "Transcripts from TikTok, Instagram Reels, Facebook Reels, X, Threads, podcasts, and Wistia, with pain points, buying signals, competitor mentions, and icebreakers for outbound. Watch creators for new videos. Your own speech and AI keys.",
    "version": "0.1",
    "x-build-id": "TJRHedv6hcjCvJNeA"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/mambalabs~b2b-social-video-transcripts/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-mambalabs-b2b-social-video-transcripts",
        "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/mambalabs~b2b-social-video-transcripts/runs": {
      "post": {
        "operationId": "runs-sync-mambalabs-b2b-social-video-transcripts",
        "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/mambalabs~b2b-social-video-transcripts/run-sync": {
      "post": {
        "operationId": "run-sync-mambalabs-b2b-social-video-transcripts",
        "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": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "description": "transcript (default): transcript, caption, creator, and counts for each video given. outbound: the same plus pain points, buying signals, competitor mentions, and icebreakers on your AI key. watch_list: checks creators, podcast feeds, podcast keywords, and Threads hashtags for videos earlier runs have not seen, and transcribes only those.",
            "default": "transcript"
          },
          "video_urls": {
            "title": "Video URLs",
            "type": "array",
            "description": "TikTok video, Instagram reel, Facebook reel, X post, Threads post, podcast episode or RSS feed, Wistia page, or YouTube video URLs. A podcast feed URL reads its latest episodes, up to max_videos_per_creator.",
            "items": {
              "type": "string"
            }
          },
          "creators": {
            "title": "Creators",
            "type": "array",
            "description": "watch_list mode: profile URLs or platform:handle, for example instagram:hubspot, x:gong_io, facebook:HubSpot, threads:hubspot. TikTok has no creator feed without a login, so TikTok creators are refused with a free row.",
            "items": {
              "type": "string"
            }
          },
          "podcast_feeds": {
            "title": "Podcast feeds",
            "type": "array",
            "description": "Podcast RSS feed URLs. In watch_list mode each feed is watched for new episodes; in the other modes the latest episodes are read.",
            "items": {
              "type": "string"
            }
          },
          "podcast_keywords": {
            "title": "Podcast keywords",
            "type": "array",
            "description": "watch_list mode: search terms for finding podcast feeds through the iTunes search API; each feed found is watched.",
            "items": {
              "type": "string"
            }
          },
          "hashtags": {
            "title": "Hashtags",
            "type": "array",
            "description": "watch_list mode: Threads hashtags, without #. Hashtag pages on TikTok, Instagram, X, and Facebook need a login or do not list newest first, so only Threads is read.",
            "items": {
              "type": "string"
            }
          },
          "wistia_ids": {
            "title": "Wistia media IDs or pages",
            "type": "array",
            "description": "Wistia media IDs, or company page URLs that embed Wistia videos; the page is scanned for embedded media IDs.",
            "items": {
              "type": "string"
            }
          },
          "include_commenters": {
            "title": "Include TikTok commenters",
            "type": "string",
            "description": "yes or no (default no). On TikTok videos at or above webhook_min_score, adds one row per commenter: handle, name, profile URL, comment, time, likes.",
            "default": "no"
          },
          "watch_list_name": {
            "title": "Watch list name",
            "type": "string",
            "description": "Names the stored watch list. Rows are also appended to a named dataset b2b-social-video-transcripts-<name>, and seen video IDs are kept in a named key-value store b2b-social-video-transcripts-<name>-state. Letters, numbers, and dashes; up to 28 characters. Default default.",
            "default": "default"
          },
          "watch_list_depth": {
            "title": "Watch list depth",
            "type": "string",
            "description": "transcript (default) or outbound: what runs on each new video in watch_list mode.",
            "default": "transcript"
          },
          "max_videos_per_creator": {
            "title": "Max videos per creator",
            "type": "string",
            "description": "Most videos read per creator, feed, keyword result, or hashtag in one run. Default 10, up to 100.",
            "default": "10"
          },
          "since_days": {
            "title": "Only videos from the last N days",
            "type": "string",
            "description": "Skips videos older than this many days. Default 30.",
            "default": "30"
          },
          "topic_filter": {
            "title": "Topic filter (before transcription)",
            "type": "array",
            "description": "Keywords. A video whose caption, hashtags, and title match none of them is skipped before any speech-to-text call, as a free skipped_off_topic row.",
            "items": {
              "type": "string"
            }
          },
          "transcript_filter": {
            "title": "Transcript filter (after transcription)",
            "type": "array",
            "description": "Keywords matched against the spoken words. Rows are kept, with transcript_match true or false.",
            "items": {
              "type": "string"
            }
          },
          "stt_provider": {
            "title": "Speech-to-text provider",
            "type": "string",
            "description": "openai (default), groq, deepgram, or assemblyai. Used for videos with no native subtitle or transcript.",
            "default": "openai"
          },
          "stt_api_key": {
            "title": "Speech-to-text API key",
            "type": "string",
            "description": "Your own key for the provider above. Without a key, only videos with native subtitles or transcripts are transcribed; the rest return a free no_speech_track row. Never stored or logged."
          },
          "stt_model": {
            "title": "Speech-to-text model",
            "type": "string",
            "description": "Optional. With openai the default is gpt-4o-mini-transcribe in transcript mode and whisper-1 when timestamps are needed (outbound mode or include_segments yes), because only whisper-1 returns timestamps among OpenAI models."
          },
          "stt_fallback_provider": {
            "title": "Fallback speech-to-text provider",
            "type": "string",
            "description": "Optional second provider, tried when the first refuses or fails."
          },
          "stt_fallback_api_key": {
            "title": "Fallback speech-to-text API key",
            "type": "string",
            "description": "Your own key for the fallback provider."
          },
          "ai_provider": {
            "title": "AI provider",
            "type": "string",
            "description": "openai (default), anthropic, or gemini. Used by outbound mode and for translation.",
            "default": "openai"
          },
          "ai_api_key": {
            "title": "AI API key",
            "type": "string",
            "description": "Your own key for the AI provider. Without it, outbound mode returns transcripts only and charges no outbound-insights. Never stored or logged."
          },
          "ai_model": {
            "title": "AI model",
            "type": "string",
            "description": "Optional override. Defaults: gpt-4.1-mini (openai), claude-haiku-4-5 (anthropic), gemini-2.5-flash (gemini)."
          },
          "my_company": {
            "title": "My company",
            "type": "string",
            "description": "Your company name, so pain points and icebreakers fit your offer."
          },
          "my_product": {
            "title": "My product",
            "type": "string",
            "description": "What you sell, in one line."
          },
          "competitors": {
            "title": "Competitors",
            "type": "array",
            "description": "Brand names to flag when spoken. Each is matched exactly in the transcript and by the AI call.",
            "items": {
              "type": "string"
            }
          },
          "translate_to_english": {
            "title": "Translate to English",
            "type": "string",
            "description": "yes or no. Default yes in outbound mode, no in the other modes. Needs the AI key."
          },
          "include_segments": {
            "title": "Include timestamped segments",
            "type": "string",
            "description": "yes or no (default no). Adds transcript_segments to each row. Outbound mode always fills them when the source gives timestamps.",
            "default": "no"
          },
          "youtube_transcript_provider": {
            "title": "YouTube transcript provider",
            "type": "string",
            "description": "scrapecreators, searchapi, or supadata. YouTube videos are transcribed only through your own key with one of these services."
          },
          "youtube_transcript_api_key": {
            "title": "YouTube transcript API key",
            "type": "string",
            "description": "Your own key for the YouTube transcript provider above. Without it, YouTube URLs return a free row."
          },
          "youtube_transcript_fallback_provider": {
            "title": "YouTube fallback provider",
            "type": "string",
            "description": "Optional second YouTube transcript provider."
          },
          "youtube_transcript_fallback_api_key": {
            "title": "YouTube fallback API key",
            "type": "string",
            "description": "Your own key for the fallback YouTube provider."
          },
          "webhook_url": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional. Each new video row with buying_signal_score at or above webhook_min_score is sent here as a POST with a Slack compatible text field."
          },
          "webhook_min_score": {
            "title": "Webhook minimum score",
            "type": "string",
            "description": "0 to 100. Default 0 sends every video row.",
            "default": "0"
          },
          "max_charge_usd": {
            "title": "Maximum charge for this run (USD)",
            "type": "string",
            "description": "Optional. The run stops before a charge that would pass this amount. Summary rows are always returned."
          },
          "source_tag": {
            "title": "Source tag",
            "type": "string",
            "description": "Internal attribution tag. Leave empty."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}