{
  "openapi": "3.0.1",
  "info": {
    "title": "TikTok Mega Scraper & Data Extractor",
    "description": "Scrape TikTok videos, user profiles, hashtags, and comments. This data extraction tool helps you get public video data, user details, and engagement metrics for market research, trend analysis, and social media campaigns.",
    "version": "0.0",
    "x-build-id": "jJ7wpXF8OKoqcKgOQ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lucrateresults~tik-tok-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lucrateresults-tik-tok-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/lucrateresults~tik-tok-scraper/runs": {
      "post": {
        "operationId": "runs-sync-lucrateresults-tik-tok-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/lucrateresults~tik-tok-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-lucrateresults-tik-tok-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": [
          "mode",
          "maxItems"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "profiles",
              "hashtags",
              "music",
              "trending",
              "search",
              "videoUrls"
            ],
            "type": "string",
            "description": "Select the scraping mode (profiles, hashtags, music, trending, search, or video URLs).",
            "default": "trending"
          },
          "profiles": {
            "title": "Profiles (handles)",
            "type": "array",
            "description": "TikTok usernames (without @). Example: username123",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "hashtags": {
            "title": "Hashtags",
            "type": "array",
            "description": "List of hashtags to scrape (without #).",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "musicIds": {
            "title": "Music / Sound IDs",
            "type": "array",
            "description": "TikTok music/sound IDs to scrape videos for.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "videoUrls": {
            "title": "Video URLs",
            "type": "array",
            "description": "Direct TikTok video URLs to scrape.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "searchQueries": {
            "title": "Search queries / keywords",
            "type": "array",
            "description": "Keywords to search on TikTok.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "region": {
            "title": "Region",
            "type": "string",
            "description": "Two-letter country code (e.g., US, GB, IN) for localized trending / search.",
            "default": "US"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "IETF language code (e.g., en, es, fr).",
            "default": "en"
          },
          "maxItems": {
            "title": "Max items (global cap)",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Stop scraping after this many total items across all seeds.",
            "default": 1000
          },
          "resultsPerPage": {
            "title": "Results per page / batch (API)",
            "minimum": 5,
            "maximum": 100,
            "type": "integer",
            "description": "Number of results per API page or batch.",
            "default": 30
          },
          "perProfileLimit": {
            "title": "Per-profile posts limit",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "When scraping profiles, cap number of posts per profile.",
            "default": 200
          },
          "minLikes": {
            "title": "Minimum likes (filter)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return videos with >= this many likes (0 disables).",
            "default": 0
          },
          "minShares": {
            "title": "Minimum shares (filter)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return videos with >= this many shares (0 disables).",
            "default": 0
          },
          "includeComments": {
            "title": "Include comments (may slow down)",
            "type": "boolean",
            "description": "If true, also scrape comments for each video.",
            "default": false
          },
          "includeMusic": {
            "title": "Include music objects",
            "type": "boolean",
            "description": "If true, include metadata about music/sound used in videos.",
            "default": true
          },
          "downloadMode": {
            "title": "Download mode",
            "enum": [
              "none",
              "metadata",
              "videos",
              "videos_no_watermark"
            ],
            "type": "string",
            "description": "Choose whether to download media files or only metadata.",
            "default": "metadata"
          },
          "downloadCovers": {
            "title": "Download covers (thumbnails)",
            "type": "boolean",
            "description": "If true, download thumbnail images for videos.",
            "default": true
          },
          "downloadSubtitles": {
            "title": "Download subtitles if present",
            "type": "boolean",
            "description": "If true, download available subtitles/captions.",
            "default": false
          },
          "downloadFolder": {
            "title": "Download folder (KV store)",
            "type": "string",
            "description": "Key-value store folder name where downloaded media will be stored.",
            "default": "tiktok_media"
          },
          "downloadConcurrency": {
            "title": "Download concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Number of media files to download in parallel.",
            "default": 3
          },
          "deviceProfile": {
            "title": "Device profile",
            "enum": [
              "mobile-android",
              "mobile-ios",
              "desktop"
            ],
            "type": "string",
            "description": "Choose which type of device the scraper should emulate.",
            "default": "mobile-android"
          },
          "requestDelayMs": {
            "title": "Base request delay (ms)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Base delay between requests in milliseconds.",
            "default": 800
          },
          "jitterMs": {
            "title": "Random jitter (ms)",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Random variation added to request delays to avoid detection.",
            "default": 400
          },
          "maxConcurrency": {
            "title": "Max concurrency (crawler)",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum number of concurrent browser or request instances.",
            "default": 5
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Use Apify Proxy (RESIDENTIAL recommended) or custom proxy settings.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "countryCode": "US"
            }
          },
          "debug": {
            "title": "Debug logs",
            "type": "boolean",
            "description": "If true, output detailed debug logs.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}