{
  "openapi": "3.0.1",
  "info": {
    "title": "TikTok Profile Posts - Bulk Video Scraper [NO LOGIN] ✅",
    "description": "Scrape every public TikTok video from any profile - captions, views, likes, no-watermark MP4 URLs, ad flags, TikTok Shop links, cross-platform creator IDs. Optional per-video transcripts (AI fallback). Also scrape public TikTok collections/playlists by URL. Clean, flat, analysis-ready output.",
    "version": "0.0",
    "x-build-id": "h5wacgUccUWS0gulV"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/unseenuser~TikTok-posts/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-unseenuser-TikTok-posts",
        "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/unseenuser~TikTok-posts/runs": {
      "post": {
        "operationId": "runs-sync-unseenuser-TikTok-posts",
        "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/unseenuser~TikTok-posts/run-sync": {
      "post": {
        "operationId": "run-sync-unseenuser-TikTok-posts",
        "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": [
          "profiles"
        ],
        "properties": {
          "profiles": {
            "title": "Profiles / Collections",
            "type": "array",
            "description": "Bulk list of TikTok profiles OR public collection (playlist) URLs to scrape. Each entry can be: a profile URL (https://www.tiktok.com/@username), a handle (with or without @), a numeric user_id, or a public collection URL (https://www.tiktok.com/@user/collection/name-<id>). Mix any combination - the Actor auto-detects each type. Collection entries return the videos in that playlist; profile entries return the creator's video feed. Note: sort_by and region only apply to profile entries, not collections.",
            "items": {
              "type": "string"
            }
          },
          "sort_by": {
            "title": "Sort order",
            "enum": [
              "latest",
              "popular"
            ],
            "type": "string",
            "description": "Sort order of returned videos.",
            "default": "latest"
          },
          "max_items_per_profile": {
            "title": "Max items per profile (0 = every video)",
            "minimum": 0,
            "type": "integer",
            "description": "Hard cap of videos returned per profile. Set to 0 (the default) to return every video the profile has published - there is no upper limit. Free plan users are still capped to 50 total items per run overall.",
            "default": 0
          },
          "include_transcript": {
            "title": "Include transcript",
            "type": "boolean",
            "description": "Add a WEBVTT-formatted transcript to each video row. Videos over 2 minutes have no transcript (the transcript field stays null). Photo and carousel posts are also skipped. Default off so existing automations are unchanged.",
            "default": false
          },
          "transcript_language": {
            "title": "Transcript language",
            "enum": [
              "",
              "en",
              "es",
              "fr",
              "de",
              "it",
              "ja",
              "ko",
              "zh"
            ],
            "type": "string",
            "description": "Preferred transcript language. Only used when 'Include transcript' is on. Leave at 'TikTok default' to let TikTok pick automatically.",
            "default": ""
          },
          "transcript_use_ai_fallback": {
            "title": "Use AI transcript when captions in the selected language aren't available (paid event)",
            "type": "boolean",
            "description": "If the video has no captions in your selected 'Transcript language' (or has no captions at all), use AI to generate the transcript from the video's audio. Only works for videos under 2 minutes. Billed as a separate paid event at $0.01 per AI transcript ($10 per 1,000) on top of the base per-result pricing. The AI charge only fires when BOTH 'Include transcript' AND this toggle are on AND the video has no native captions in the selected language. Default off.",
            "default": false
          },
          "region": {
            "title": "Proxy region",
            "enum": [
              "US",
              "CA",
              "GB",
              "AU",
              "DE",
              "FR",
              "ES",
              "IT",
              "NL",
              "IE",
              "PL",
              "SE",
              "BE",
              "CH",
              "AT",
              "IL",
              "AE",
              "TR",
              "JP",
              "KR",
              "IN",
              "ID",
              "PH",
              "VN",
              "TH",
              "SG",
              "BR",
              "MX",
              "AR",
              "CL"
            ],
            "type": "string",
            "description": "2-letter ISO country code for the proxy used by the underlying request. Default US.",
            "default": "US"
          },
          "trim": {
            "title": "Trim payload",
            "type": "boolean",
            "description": "Request a slimmed-down response shape. Default false.",
            "default": 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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}