{
  "openapi": "3.0.1",
  "info": {
    "title": "TikTok Trending Scraper With Trend Insights",
    "description": "Scrapes trending TikTok videos by region or category, capturing video URLs, captions, hashtags, creators, sounds, metrics, and publish dates. Ideal for trend research, content strategy, influencer insights, and automated discovery of high-performing viral videos",
    "version": "0.1",
    "x-build-id": "NjlSaYGJtkbfl0fcb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapio~tiktok-trending-videos-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapio-tiktok-trending-videos-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/scrapio~tiktok-trending-videos-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapio-tiktok-trending-videos-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/scrapio~tiktok-trending-videos-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapio-tiktok-trending-videos-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",
        "properties": {
          "countryCode": {
            "title": "🌍 Country Code",
            "enum": [
              "AU",
              "BR",
              "CA",
              "EG",
              "FR",
              "DE",
              "ID",
              "IL",
              "IT",
              "JP",
              "MY",
              "PH",
              "RU",
              "SA",
              "SG",
              "KR",
              "ES",
              "TW",
              "TH",
              "TR",
              "AE",
              "GB",
              "US",
              "VN"
            ],
            "type": "string",
            "description": "Country to pull trending videos from (ignored when Video URLs are supplied). Example: US. Default is US.",
            "default": "US"
          },
          "sortBy": {
            "title": "↕️ Sort By",
            "enum": [
              "vv",
              "like",
              "comment",
              "repost"
            ],
            "type": "string",
            "description": "How to sort trending results. Example: Views. Default is Views.",
            "default": "vv"
          },
          "period": {
            "title": "📅 Period",
            "enum": [
              "7",
              "30"
            ],
            "type": "string",
            "description": "Trending window: last 7 or last 30 days. Default is 7.",
            "default": "7"
          },
          "maxItems": {
            "title": "🔢 Max Items",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of trending videos to scrape (ignored in Video-URL mode, which scrapes every URL). Example: 20. Default is 10.",
            "default": 10
          },
          "startUrls": {
            "title": "🔗 Video URLs (optional)",
            "type": "array",
            "description": "Scrape specific TikTok video URLs instead of trending. When set, country/sort/period/maxItems are ignored. Accepts full video links. Example: https://www.tiktok.com/@scout2015/video/6718335390845095173",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeDetailedVideoData": {
            "title": "📊 Include Detailed Video Data",
            "type": "boolean",
            "description": "Fetch each video's page to harvest views, author, music, hashtags, full caption, timestamps and video specs. Required for engagement metrics and filters. Video-URL mode always harvests details. Default is false.",
            "default": false
          },
          "filters": {
            "title": "🔍 Filters (need Detailed Video Data)",
            "type": "object",
            "description": "Drop videos outside these ranges. Only applied when detailed data is available. Example: minViews=100000, verifiedOnly=true.",
            "default": {}
          },
          "minViews": {
            "title": "👁️ Min Views",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only videos with at least this many views (needs Detailed Video Data). Example: 100000."
          },
          "maxViews": {
            "title": "👁️ Max Views",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only videos with at most this many views (needs Detailed Video Data)."
          },
          "minLikes": {
            "title": "👍 Min Likes",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only videos with at least this many likes (needs Detailed Video Data)."
          },
          "maxLikes": {
            "title": "👍 Max Likes",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only videos with at most this many likes (needs Detailed Video Data)."
          },
          "minComments": {
            "title": "💬 Min Comments",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only videos with at least this many comments (needs Detailed Video Data)."
          },
          "maxComments": {
            "title": "💬 Max Comments",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only videos with at most this many comments (needs Detailed Video Data)."
          },
          "minDuration": {
            "title": "⏱️ Min Duration (seconds)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only videos at least this many seconds long (needs Detailed Video Data)."
          },
          "maxDuration": {
            "title": "⏱️ Max Duration (seconds)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only videos at most this many seconds long (needs Detailed Video Data)."
          },
          "verifiedOnly": {
            "title": "✅ Verified Authors Only",
            "type": "boolean",
            "description": "Keep only videos from verified authors (needs Detailed Video Data). Default is false.",
            "default": false
          },
          "publishedAfter": {
            "title": "📅 Published After",
            "type": "string",
            "description": "Keep only videos published on/after this date (needs Detailed Video Data). Example: 2024-01-01."
          },
          "publishedBefore": {
            "title": "📅 Published Before",
            "type": "string",
            "description": "Keep only videos published on/before this date (needs Detailed Video Data). Example: 2025-12-31."
          },
          "aiEnhancement": {
            "title": "🤖 AI Enrichment",
            "type": "boolean",
            "description": "Analyze each caption with an LLM to add sentiment, topics, keywords and language. Requires an API key (below) or the matching provider env var. Off by default.",
            "default": false
          },
          "aiModel": {
            "title": "🤖 AI Model / Provider",
            "enum": [
              "claude-haiku-4-5",
              "claude-sonnet-5",
              "claude-opus-4-8",
              "claude-fable-5",
              "gpt-4o-mini",
              "gpt-4o",
              "gpt-4.1-mini",
              "gpt-4.1",
              "o3-mini",
              "o1",
              "gemini-2.0-flash-lite",
              "gemini-2.0-flash",
              "gemini-1.5-pro",
              "gemini-2.5-flash",
              "gemini-2.5-pro",
              "grok-2-latest",
              "grok-3-mini",
              "grok-3",
              "grok-beta",
              "deepseek-chat",
              "deepseek-reasoner",
              "sonar",
              "sonar-pro",
              "sonar-reasoning",
              "mistral-small-latest",
              "mistral-large-latest"
            ],
            "type": "string",
            "description": "Provider auto-detected from the name: claude-*=Anthropic, gpt-*/o1/o3=OpenAI, gemini-*=Google, grok-*=xAI, deepseek-*=DeepSeek, sonar*=Perplexity, mistral-*=Mistral. Cheaper mini/flash/haiku models are recommended for classification.",
            "default": "claude-haiku-4-5"
          },
          "aiApiKey": {
            "title": "🔑 AI API Key",
            "type": "string",
            "description": "API key for the selected provider. Falls back to env vars (ANTHROPIC_API_KEY / OPENAI_API_KEY / GEMINI_API_KEY / XAI_API_KEY / DEEPSEEK_API_KEY / PERPLEXITY_API_KEY / MISTRAL_API_KEY). Leave blank to skip AI enrichment."
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy Configuration",
            "type": "object",
            "description": "Proxy used for ALL requests (browser + HTTP). Apify Proxy recommended for TikTok. Example: { \"useApifyProxy\": true }.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}