{
  "openapi": "3.0.1",
  "info": {
    "title": "TikTok Transcript Scraper - Captions, Views & Likes",
    "description": "Get the transcript of any TikTok video from its link, short link, share text or id: TikTok's captions as text, segments, SRT or VTT, in any language or translated to yours. Views, likes and author in the same row. No limit per run. No captions, private or restricted = free. US$ 0.80 per 1,000.",
    "version": "0.1",
    "x-build-id": "NCIBR4CLwUOOZblun"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapewise~tiktok-transcript/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapewise-tiktok-transcript",
        "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/scrapewise~tiktok-transcript/runs": {
      "post": {
        "operationId": "runs-sync-scrapewise-tiktok-transcript",
        "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/scrapewise~tiktok-transcript/run-sync": {
      "post": {
        "operationId": "run-sync-scrapewise-tiktok-transcript",
        "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": {
          "videos": {
            "title": "TikTok videos",
            "type": "array",
            "description": "TikTok videos, one per line: a video link (https://www.tiktok.com/@natgeo/video/7549930445127896333), a short share link (https://vt.tiktok.com/..., https://vm.tiktok.com/..., https://www.tiktok.com/t/...) or the numeric video id. Photo posts and links with ?lang= or other parameters also work. Each video returns one row with the full transcript text and the video stats. Profile and search links are not supported. Leave empty to run two example videos. Also accepts 'postUrls', 'videoUrls', 'urls', 'videoIds' or 'links'.",
            "items": {
              "type": "string"
            }
          },
          "language": {
            "title": "Preferred language",
            "type": "string",
            "description": "Language code of the transcript to return (for example en, es, pt, pt-BR, fr or eng-US). If the video has no caption in this language you get the original-language caption (auto-generated by TikTok), then the first one available; 'requestedLanguageFound' tells you which case happened. Empty means the original language. Also accepts 'targetLanguage' or 'languages'."
          },
          "includeAllLanguages": {
            "title": "Return every available language",
            "type": "boolean",
            "description": "Adds a 'transcripts' array with every caption TikTok has for the video (the original plus its machine translations), each with language, source, text and the segments or subtitle files chosen below. Same price per video. Off by default."
          },
          "includeSegments": {
            "title": "Include timestamped segments",
            "type": "boolean",
            "description": "Adds a 'segments' array with start, end and duration in seconds and the text of each caption line, for quotes, chapters or syncing with the video. Same price. Off when the field is missing from the input."
          },
          "subtitleFormats": {
            "title": "Subtitle files in the output",
            "type": "array",
            "description": "Adds ready-to-use 'srt' and/or 'vtt' fields with the full subtitle file, to save as .srt or .vtt and upload to a video editor or player. Pick one, both or none. Same price. Also accepts 'formats'.",
            "items": {
              "type": "string",
              "enum": [
                "srt",
                "vtt"
              ],
              "enumTitles": [
                "SRT",
                "WebVTT"
              ]
            }
          },
          "translateTo": {
            "title": "Translate the transcript to",
            "type": "string",
            "description": "Language code to translate every transcript into (for example en, es, de, fr or ja). TikTok's own translation is used when it has one; otherwise the transcript, segments and SRT/VTT are machine-translated. 'translatedTo' and 'translationSource' tell you which. Same price. Empty means no translation."
          },
          "maxItems": {
            "title": "Max transcripts (whole run)",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many transcripts are delivered in the whole run (for example 100). Empty or 0 means no limit. You pay only per transcript delivered; videos without captions return free rows and do not count. Also accepts 'maxResults' or 'limit'."
          },
          "includeMetadataWhenNoCaptions": {
            "title": "Keep post data for videos without captions",
            "type": "boolean",
            "description": "Videos without captions always come back as free NO_CAPTIONS rows. When on, those rows also carry the post caption, hashtags, date, duration, cover image and author handle (no view, like or follower counts). Useful for recipe, product or music videos where the text is in the caption. Still free. Off by default."
          },
          "postURLs": {
            "title": "Video URLs (compatibility)",
            "type": "array",
            "description": "Same as 'TikTok videos', under the field name other TikTok transcript scrapers use, so you can switch without changing your integration. Merged with the list above. Rows requested this way also carry the field names those scrapers return (text, webVideoUrl, diggCount, videoMeta.subtitleLinks with a download link to each VTT file).",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs (compatibility)",
            "type": "array",
            "description": "Same as 'TikTok videos', in the Apify start URLs format: paste links, or link a text file with one video link per line (requestsFromUrl). Merged with the list above.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify datacenter proxy is the default and works for TikTok video pages. Failed requests are retried. Keep the default.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}