{
  "openapi": "3.0.1",
  "info": {
    "title": "TikTok Transcript Scraper — Video to Text, Subtitles, No Login",
    "description": "TikTok transcripts from the link alone — no cookies, no login. Instagram Reels, YouTube and Shorts too. Transcript, timed segments and ready-made SRT/WebVTT subtitles, optional translation, hook and summary. A voice-activity gate means music and silence cost nothing. $0.005 per audio minute.",
    "version": "0.1",
    "x-build-id": "ZDb0xcUxSEvvd6Ztc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/blitzdata~tiktok-transcript-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-blitzdata-tiktok-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/blitzdata~tiktok-transcript-scraper/runs": {
      "post": {
        "operationId": "runs-sync-blitzdata-tiktok-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/blitzdata~tiktok-transcript-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-blitzdata-tiktok-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",
        "required": [
          "urls"
        ],
        "properties": {
          "urls": {
            "title": "Video URLs",
            "type": "array",
            "description": "Instagram Reels, TikTok and YouTube (incl. Shorts) — one dataset row per video, with transcript, timed segments and ready-made SRT and WebVTT subtitles. No cookies or login needed for public content. A channel or profile URL works too when 'Posts per profile' is set. Direct .mp3/.mp4 URLs work as well.",
            "items": {
              "type": "string"
            }
          },
          "posts_per_profile": {
            "title": "Posts per profile",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Paste a channel or profile URL instead of single videos and this many of its latest posts are transcribed. 0 disables it, so a profile URL then yields one video. Works for YouTube channels, playlists and search; TikTok profiles are hit-and-miss; Instagram profiles cannot be listed, so give reel URLs there.",
            "default": 0
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "ISO code (en, nl, es, ...) or 'auto'. Passing the code is worth it when you know it: on a 120-clip benchmark the model scored 6.8 word error rate with the language given against 7.6 on 'auto', which establishes the language from one chunk first and would be 8.0 without that. The row reports which happened in 'language_source'.",
            "default": "auto"
          },
          "include_hook": {
            "title": "Add hook + summary",
            "type": "boolean",
            "description": "Also return a one-line hook and a one-sentence summary, written from the transcript by the same model.",
            "default": false
          },
          "diarize": {
            "title": "Label the speakers",
            "type": "boolean",
            "description": "Work out who is speaking when, and label every segment and subtitle line with Speaker 1, Speaker 2 and so on. Useful for interviews, podcasts and panels. Costs nothing extra.",
            "default": false
          },
          "num_speakers": {
            "title": "How many speakers",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Tell it the exact number of speakers if you know it — an interview is 2. Leave empty and it works the number out itself, which is slightly less reliable. Only used when Label the speakers is on."
          },
          "translate_to": {
            "title": "Translate to",
            "type": "string",
            "description": "Language to translate the transcript into (e.g. English, Dutch, Spanish, or an ISO code). Leave empty to skip. The same speech model does the translation, so there is no second vendor and no extra fee.",
            "default": ""
          },
          "max_duration_seconds": {
            "title": "Max audio length (seconds)",
            "minimum": 10,
            "maximum": 7200,
            "type": "integer",
            "description": "Skip anything longer, so one long upload cannot run up the bill. Up to 2 hours is supported: the audio is cut at silences and the pieces are transcribed in parallel at roughly 5-9x realtime, so a 2-hour file takes minutes.",
            "default": 7200
          },
          "use_proxy": {
            "title": "Residential proxy",
            "enum": [
              "auto",
              "always",
              "never"
            ],
            "type": "string",
            "description": "YouTube refuses datacenter IPs with a bot check, so 'auto' routes YouTube through a residential pool. Instagram and TikTok download fine without one and are left direct. Any other refused download is retried through the pool as well. 'always' / 'never' override.",
            "default": "auto"
          },
          "proxy_region": {
            "title": "Proxy country",
            "type": "string",
            "description": "ISO-2 country for the residential exit (e.g. NL, US). Leave empty for the default.",
            "default": ""
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}