> ## Documentation Index
> Fetch the complete documentation index at: https://api-tools.memories.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# TikTok Video Transcript

> Get TikTok video transcript.

<Info>
  **Product**: Visual Intelligence — Social Media Scraping
  **Use case**: Fetch video metadata, transcripts, captions, and comments from YouTube, Instagram, TikTok, and Twitter/X
  **Host**: `https://mavi-backend.memories.ai/serve/api/v2`
  **Auth**: `Authorization: sk-mavi-...` (no `Bearer` prefix)
</Info>

This endpoint allows you to retrieve transcript for a TikTok video.

<Note>
  Channel routing guide: see [Social Media Scraping Overview](/visual-intelligence/social-media-scraping-overview). Endpoints with a `channel` request field let you choose `apify`, `rapid`, or `memories.ai`; endpoints without this field use managed routing.
</Note>

<Note>
  **Pricing:**

  * **rapid** channel: \$0.01 per video
  * **memories.ai** channel: \$0.01 per video
  * **apify** channel: Charged at Apify's actual cost (higher and variable pricing)
</Note>

### Code Example

<CodeGroup>
  ```python Python theme={null}
  import requests

  BASE_URL = "https://mavi-backend.memories.ai/serve/api/v2"
  API_KEY = "sk-mavi-..."
  HEADERS = {
      "Authorization": f"{API_KEY}"
  }

  def tiktok_video_transcript(video_url: str, channel: str):
      url = f"{BASE_URL}/tiktok/video/transcript"
      data = {"video_url": video_url, "channel": channel}
      resp = requests.post(url, headers=HEADERS, json=data)
      return resp.json()

  # Usage example
  result = tiktok_video_transcript("https://www.tiktok.com/@cutshall73/video/7543017294226558221", "apify")
  print(result)
  ```
</CodeGroup>

### Request Body

| Field      | Type   | Required | Description                                                         |
| ---------- | ------ | -------- | ------------------------------------------------------------------- |
| video\_url | string | Yes      | The TikTok video URL                                                |
| channel    | string | Yes      | The channel name. Supported values: `apify`, `rapid`, `memories.ai` |

### Response

<Warning>
  **Response shape depends on the `channel` parameter** — same channel-dependent split as the other scraping endpoints. Verified live:

  * `channel: "apify"` — `data` is an **array** with one item: `{success, credits_remaining, id, url, transcript}`. The example below is this shape.
  * `channel: "memories.ai"` — `data` is an **object**: `{status, data}` (TikTok's native response).
  * `channel: "rapid"` — same alternative shape as `memories.ai`.

  Pick a channel per integration; the table below documents the **apify** shape.
</Warning>

<ResponseExample>
  ```json theme={null}
  {
    "code": 200,
    "msg": "success",
    "data": [
      {
        "credits_remaining": "9997665621",
        "id": "7543017294226558221",
        "url": "https://www.tiktok.com/@cutshall73/video/7543017294226558221",
        "transcript": "WEBVTT\n\n\n00:00:00.140 --> 00:00:01.600\nSay hi. Hi.\n\n00:00:01.700 --> 00:00:03.560\nSay. Say I'm alive.\n\n00:00:03.660 --> 00:00:06.280\nI'm alive. We're gonna do a little OOTD.\n\n00:00:07.460 --> 00:00:09.380\nI've got on my pretty,\n\n00:00:09.381 --> 00:00:14.401\ncute little cheetah print dress I got from my friend on Facebook.\n\n00:00:16.780 --> 00:00:18.460\nHair up in a clip. It's brush.\n\n00:00:18.461 --> 00:00:21.281\nNo makeup because I'm tired.\n\n00:00:21.580 --> 00:00:23.640\nI'm tired. Are you tired?\n\n00:00:24.140 --> 00:00:25.360\nSay, I'm alive.\n\n00:00:25.380 --> 00:00:27.480\nI'm alive! And I'm crazy.\n\n00:00:27.500 --> 00:00:28.300\nI'm crazy.\n\n00:00:28.820 --> 00:00:30.920\nSay bye. Bye.\n\n00:00:31.180 --> 00:00:31.980\nMwah! Mwah.\n\n00:00:32.660 --> 00:00:33.720\nSay hi, river.\n\n00:00:33.860 --> 00:00:35.280\nYou showing your lip gloss?\n"
      }
    ],
    "failed": false,
    "success": true
  }
  ```
</ResponseExample>

### Response Parameters

| Parameter                  | Type           | Description                                               |
| -------------------------- | -------------- | --------------------------------------------------------- |
| code                       | string         | Response code indicating the result status                |
| msg                        | string         | Response message describing the operation result          |
| data                       | array\[object] | Array containing transcript data objects                  |
| data\[].credits\_remaining | string         | Remaining API credits                                     |
| data\[].id                 | string         | TikTok video ID                                           |
| data\[].url                | string         | TikTok video URL                                          |
| data\[].transcript         | string         | Video transcript in WEBVTT format with timing information |
| success                    | boolean        | Indicates whether the operation was successful            |
| failed                     | boolean        | Indicates whether the operation failed                    |


## OpenAPI

````yaml POST /tiktok/video/transcript
openapi: 3.1.0
info:
  title: Video Metadata & Transcript API Reference
  description: >-
    REST APIs for retrieving video metadata and transcripts from YouTube,
    Instagram, TikTok, and Twitter
  version: v1.0.1
servers:
  - url: https://mavi-backend.memories.ai/serve/api/v2
security:
  - ApiKeyAuth: []
paths:
  /tiktok/video/transcript:
    post:
      summary: TikTok Video Transcript
      description: Get TikTok video transcript.
      operationId: tiktok_video_transcript
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                video_url:
                  type: string
                  description: The TikTok video URL
                  example: https://www.tiktok.com/@cutshall73/video/7543017294226558221
                channel:
                  type: string
                  description: >-
                    The channel name. Supported values: apify, rapid,
                    memories.ai
                  enum:
                    - apify
                    - rapid
                    - memories.ai
                  example: apify
              required:
                - video_url
                - channel
      responses:
        '200':
          description: Video transcript in WEBVTT format
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    example: 200
                    description: Response code indicating the result status
                  msg:
                    type: string
                    example: success
                    description: Response message describing the operation result
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        credits_remaining:
                          type: string
                          example: '9997665621'
                          description: Remaining API credits
                        id:
                          type: string
                          example: '7543017294226558221'
                          description: TikTok video ID
                        url:
                          type: string
                          example: >-
                            https://www.tiktok.com/@cutshall73/video/7543017294226558221
                          description: TikTok video URL
                        transcript:
                          type: string
                          example: |-
                            WEBVTT


                            00:00:00.140 --> 00:00:01.600
                            Say hi. Hi.

                            00:00:01.700 --> 00:00:03.560
                            Say. Say I'm alive.

                            00:00:03.660 --> 00:00:06.280
                            I'm alive. We're gonna do a little OOTD.
                          description: >-
                            Video transcript in WEBVTT format with timing
                            information
                    description: Array containing transcript data objects
                  success:
                    type: boolean
                    example: true
                    description: Indicates whether the operation was successful
                  failed:
                    type: boolean
                    example: false
                    description: Indicates whether the operation failed
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization

````