{
  "openapi": "3.0.1",
  "info": {
    "title": "TikTok Transcript Scraper",
    "description": "Rewatching TikToks to take notes wastes hours. Get clean transcripts instead: timestamped text, every subtitle language, AI speech-to-text when captions are missing and translation into 133 languages, plus video and author data. No login.",
    "version": "1.0",
    "x-build-id": "ndc1DeZ52C1bFUgcO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawl_craft~tiktok-transcript-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawl_craft-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/crawl_craft~tiktok-transcript-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawl_craft-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/crawl_craft~tiktok-transcript-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawl_craft-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": "🔗 TikTok video URLs",
            "type": "array",
            "description": "TikTok videos to get transcripts for, one per line. Accepts full video links (https://www.tiktok.com/@user/video/123...), photo-post links, short links (vm.tiktok.com / vt.tiktok.com / tiktok.com/t/...), bare numeric video IDs, and links to a .txt file with one entry per line. Bulk paste supported; duplicates are removed. Free plan users get up to 10 videos per run; paid plans have no limit.",
            "items": {
              "type": "string"
            }
          },
          "downloadSubtitlesOptions": {
            "title": "🎧 Subtitles & transcription",
            "enum": [
              "DOWNLOAD_SUBTITLES",
              "DOWNLOAD_AND_TRANSCRIBE_VIDEOS_WITHOUT_SUBTITLES",
              "TRANSCRIBE_ALL_VIDEOS"
            ],
            "type": "string",
            "description": "How to get the spoken text. TikTok's own subtitles are used whenever they exist. The speech-to-text options also create a transcript with an AI model for videos without subtitles (or for every video). Speech-to-text takes time: with the default 1 GB memory expect roughly 1-5 minutes per minute of video; more memory in the run options makes it faster.",
            "default": "DOWNLOAD_SUBTITLES"
          },
          "languages": {
            "title": "🔤 Subtitle languages",
            "type": "array",
            "description": "Only keep subtitle tracks in the selected languages (all regional variants included, e.g. English keeps eng-US and eng-GB). You can also type a code such as en-US or eng-US for one region. The first matching track becomes the main transcript. Leave empty to keep every language TikTok has for the video.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "af",
                "sq",
                "am",
                "ar",
                "hy",
                "as",
                "ay",
                "az",
                "bm",
                "eu",
                "be",
                "bn",
                "bho",
                "bs",
                "bg",
                "ca",
                "ceb",
                "ny",
                "zh-CN",
                "zh-TW",
                "co",
                "hr",
                "cs",
                "da",
                "dv",
                "doi",
                "nl",
                "en",
                "eo",
                "et",
                "ee",
                "tl",
                "fi",
                "fr",
                "fy",
                "gl",
                "ka",
                "de",
                "el",
                "gn",
                "gu",
                "ht",
                "ha",
                "haw",
                "iw",
                "hi",
                "hmn",
                "hu",
                "is",
                "ig",
                "ilo",
                "id",
                "ga",
                "it",
                "ja",
                "jw",
                "kn",
                "kk",
                "km",
                "rw",
                "gom",
                "ko",
                "kri",
                "ku",
                "ckb",
                "ky",
                "lo",
                "la",
                "lv",
                "ln",
                "lt",
                "lg",
                "lb",
                "mk",
                "mai",
                "mg",
                "ms",
                "ml",
                "mt",
                "mi",
                "mr",
                "mni-Mtei",
                "lus",
                "mn",
                "my",
                "ne",
                "no",
                "or",
                "om",
                "ps",
                "fa",
                "pl",
                "pt",
                "pa",
                "qu",
                "ro",
                "ru",
                "sm",
                "sa",
                "gd",
                "nso",
                "sr",
                "st",
                "sn",
                "sd",
                "si",
                "sk",
                "sl",
                "so",
                "es",
                "su",
                "sw",
                "sv",
                "tg",
                "ta",
                "tt",
                "te",
                "th",
                "ti",
                "ts",
                "tr",
                "tk",
                "ak",
                "uk",
                "ur",
                "ug",
                "uz",
                "vi",
                "cy",
                "xh",
                "yi",
                "yo",
                "zu"
              ],
              "enumTitles": [
                "Afrikaans (af)",
                "Albanian (sq)",
                "Amharic (am)",
                "Arabic (ar)",
                "Armenian (hy)",
                "Assamese (as)",
                "Aymara (ay)",
                "Azerbaijani (az)",
                "Bambara (bm)",
                "Basque (eu)",
                "Belarusian (be)",
                "Bengali (bn)",
                "Bhojpuri (bho)",
                "Bosnian (bs)",
                "Bulgarian (bg)",
                "Catalan (ca)",
                "Cebuano (ceb)",
                "Chichewa (ny)",
                "Chinese (Simplified) (zh-CN)",
                "Chinese (Traditional) (zh-TW)",
                "Corsican (co)",
                "Croatian (hr)",
                "Czech (cs)",
                "Danish (da)",
                "Dhivehi (dv)",
                "Dogri (doi)",
                "Dutch (nl)",
                "English (en)",
                "Esperanto (eo)",
                "Estonian (et)",
                "Ewe (ee)",
                "Filipino (tl)",
                "Finnish (fi)",
                "French (fr)",
                "Frisian (fy)",
                "Galician (gl)",
                "Georgian (ka)",
                "German (de)",
                "Greek (el)",
                "Guarani (gn)",
                "Gujarati (gu)",
                "Haitian Creole (ht)",
                "Hausa (ha)",
                "Hawaiian (haw)",
                "Hebrew (iw)",
                "Hindi (hi)",
                "Hmong (hmn)",
                "Hungarian (hu)",
                "Icelandic (is)",
                "Igbo (ig)",
                "Ilocano (ilo)",
                "Indonesian (id)",
                "Irish (ga)",
                "Italian (it)",
                "Japanese (ja)",
                "Javanese (jw)",
                "Kannada (kn)",
                "Kazakh (kk)",
                "Khmer (km)",
                "Kinyarwanda (rw)",
                "Konkani (gom)",
                "Korean (ko)",
                "Krio (kri)",
                "Kurdish (Kurmanji) (ku)",
                "Kurdish (Sorani) (ckb)",
                "Kyrgyz (ky)",
                "Lao (lo)",
                "Latin (la)",
                "Latvian (lv)",
                "Lingala (ln)",
                "Lithuanian (lt)",
                "Luganda (lg)",
                "Luxembourgish (lb)",
                "Macedonian (mk)",
                "Maithili (mai)",
                "Malagasy (mg)",
                "Malay (ms)",
                "Malayalam (ml)",
                "Maltese (mt)",
                "Maori (mi)",
                "Marathi (mr)",
                "Meiteilon (Manipuri) (mni-Mtei)",
                "Mizo (lus)",
                "Mongolian (mn)",
                "Myanmar (my)",
                "Nepali (ne)",
                "Norwegian (no)",
                "Odia (Oriya) (or)",
                "Oromo (om)",
                "Pashto (ps)",
                "Persian (fa)",
                "Polish (pl)",
                "Portuguese (pt)",
                "Punjabi (pa)",
                "Quechua (qu)",
                "Romanian (ro)",
                "Russian (ru)",
                "Samoan (sm)",
                "Sanskrit (sa)",
                "Scots Gaelic (gd)",
                "Sepedi (nso)",
                "Serbian (sr)",
                "Sesotho (st)",
                "Shona (sn)",
                "Sindhi (sd)",
                "Sinhala (si)",
                "Slovak (sk)",
                "Slovenian (sl)",
                "Somali (so)",
                "Spanish (es)",
                "Sundanese (su)",
                "Swahili (sw)",
                "Swedish (sv)",
                "Tajik (tg)",
                "Tamil (ta)",
                "Tatar (tt)",
                "Telugu (te)",
                "Thai (th)",
                "Tigrinya (ti)",
                "Tsonga (ts)",
                "Turkish (tr)",
                "Turkmen (tk)",
                "Twi (ak)",
                "Ukrainian (uk)",
                "Urdu (ur)",
                "Uyghur (ug)",
                "Uzbek (uz)",
                "Vietnamese (vi)",
                "Welsh (cy)",
                "Xhosa (xh)",
                "Yiddish (yi)",
                "Yoruba (yo)",
                "Zulu (zu)"
              ]
            },
            "default": []
          },
          "transcriptionModel": {
            "title": "🧠 Speech-to-text model",
            "enum": [
              "tiny",
              "base",
              "small",
              "medium",
              "large-v3",
              "distil-large-v3"
            ],
            "type": "string",
            "description": "AI model used by the speech-to-text options. Larger models are more accurate but slower; medium and large models need 4 GB memory or more in the run options.",
            "default": "base"
          },
          "transcriptionLanguage": {
            "title": "💬 Speech-to-text language",
            "type": "string",
            "description": "Optional two-letter language code of the spoken audio (e.g. en, es, de) for the speech-to-text options. Leave empty to detect the language automatically."
          },
          "translate": {
            "title": "🌍 Translate transcript to",
            "enum": [
              "afrikaans",
              "albanian",
              "amharic",
              "arabic",
              "armenian",
              "assamese",
              "aymara",
              "azerbaijani",
              "bambara",
              "basque",
              "belarusian",
              "bengali",
              "bhojpuri",
              "bosnian",
              "bulgarian",
              "catalan",
              "cebuano",
              "chichewa",
              "chinese (simplified)",
              "chinese (traditional)",
              "corsican",
              "croatian",
              "czech",
              "danish",
              "dhivehi",
              "dogri",
              "dutch",
              "english",
              "esperanto",
              "estonian",
              "ewe",
              "filipino",
              "finnish",
              "french",
              "frisian",
              "galician",
              "georgian",
              "german",
              "greek",
              "guarani",
              "gujarati",
              "haitian creole",
              "hausa",
              "hawaiian",
              "hebrew",
              "hindi",
              "hmong",
              "hungarian",
              "icelandic",
              "igbo",
              "ilocano",
              "indonesian",
              "irish",
              "italian",
              "japanese",
              "javanese",
              "kannada",
              "kazakh",
              "khmer",
              "kinyarwanda",
              "konkani",
              "korean",
              "krio",
              "kurdish (kurmanji)",
              "kurdish (sorani)",
              "kyrgyz",
              "lao",
              "latin",
              "latvian",
              "lingala",
              "lithuanian",
              "luganda",
              "luxembourgish",
              "macedonian",
              "maithili",
              "malagasy",
              "malay",
              "malayalam",
              "maltese",
              "maori",
              "marathi",
              "meiteilon (manipuri)",
              "mizo",
              "mongolian",
              "myanmar",
              "nepali",
              "norwegian",
              "odia (oriya)",
              "oromo",
              "pashto",
              "persian",
              "polish",
              "portuguese",
              "punjabi",
              "quechua",
              "romanian",
              "russian",
              "samoan",
              "sanskrit",
              "scots gaelic",
              "sepedi",
              "serbian",
              "sesotho",
              "shona",
              "sindhi",
              "sinhala",
              "slovak",
              "slovenian",
              "somali",
              "spanish",
              "sundanese",
              "swahili",
              "swedish",
              "tajik",
              "tamil",
              "tatar",
              "telugu",
              "thai",
              "tigrinya",
              "tsonga",
              "turkish",
              "turkmen",
              "twi",
              "ukrainian",
              "urdu",
              "uyghur",
              "uzbek",
              "vietnamese",
              "welsh",
              "xhosa",
              "yiddish",
              "yoruba",
              "zulu"
            ],
            "type": "string",
            "description": "Optional target language for a translated, time-aligned copy of the transcript. TikTok's own translated subtitles are used when they exist for that language. Leave empty for no translation."
          },
          "videoKvStoreIdOrName": {
            "title": "📦 Save files to storage",
            "pattern": "^[a-zA-Z0-9-]+$",
            "type": "string",
            "description": "Optional name (or ID) of a key-value store where the subtitle (.vtt) and speech-to-text files are saved; the record links then point to the stored files. A named store keeps the files until you delete them. Letters, digits and hyphens only, no spaces (e.g. tiktok-transcripts). Leave empty to skip saving files: the links then point to TikTok's own subtitle files, which expire after about two days."
          },
          "keepDownloadedVideos": {
            "title": "💾 Keep downloaded videos",
            "type": "boolean",
            "description": "Also store the MP4 that was downloaded for speech-to-text in the storage above. Works only when a storage name is set and a speech-to-text option is selected.",
            "default": false
          },
          "enrichAuthorProfile": {
            "title": "👤 Extra author details",
            "type": "boolean",
            "description": "Add the author's bio link, business category, language and organisation flag. Turn off for faster runs.",
            "default": true
          },
          "concurrency": {
            "title": "⚡ Parallel videos",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many videos are processed at the same time.",
            "default": 4
          },
          "maxRetries": {
            "title": "🔁 Retries",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many times a video is retried when TikTok does not answer as expected.",
            "default": 3
          },
          "requestDelay": {
            "title": "⏳ Pause before each video",
            "minimum": 0,
            "maximum": 30,
            "type": "number",
            "description": "Optional pause in seconds before each video is loaded. 0 = no pause.",
            "default": 0
          },
          "timeout": {
            "title": "⌛ Request timeout",
            "minimum": 5,
            "maximum": 180,
            "type": "integer",
            "description": "How long to wait for one answer from TikTok before retrying.",
            "default": 40
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy configuration",
            "type": "object",
            "description": "Optional. Choose the proxy settings for your run. Leave the default if you are unsure.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}