{
  "openapi": "3.0.1",
  "info": {
    "title": "TikTok Trending Creator Insights Scraper With Market Hashtags",
    "description": "Scrape trending TikTok creators with detailed insights, including follower growth, engagement rates, top videos, hashtags, and performance metrics. This actor delivers clean JSON or CSV for trend research, influencer analysis, campaign planning, and audience intelligence.",
    "version": "0.1",
    "x-build-id": "wDJpq9aRrIWnrtJA1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/api-empire~tiktok-trending-creator-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-api-empire-tiktok-trending-creator-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/api-empire~tiktok-trending-creator-scraper/runs": {
      "post": {
        "operationId": "runs-sync-api-empire-tiktok-trending-creator-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/api-empire~tiktok-trending-creator-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-api-empire-tiktok-trending-creator-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": [
          "countryCode",
          "sortBy"
        ],
        "properties": {
          "marketCountries": {
            "title": "🗺️ Markets to sweep",
            "type": "array",
            "description": "One TikTok hashtag board is fetched per market (up to 9 creators each). Leave this empty and the single-country field below is used instead. 27 markets return real data; RU is resolved by TikTok to the US board and is flagged per row.",
            "items": {
              "type": "string",
              "enum": [
                "AR",
                "AU",
                "BR",
                "CA",
                "CO",
                "EG",
                "FR",
                "DE",
                "ID",
                "IL",
                "IT",
                "JP",
                "MY",
                "MX",
                "PH",
                "RU",
                "SA",
                "SG",
                "ZA",
                "KR",
                "ES",
                "TW",
                "TH",
                "TR",
                "AE",
                "GB",
                "US",
                "VN"
              ],
              "enumTitles": [
                "🇦🇷 Argentina",
                "🇦🇺 Australia",
                "🇧🇷 Brazil",
                "🇨🇦 Canada",
                "🇨🇴 Colombia",
                "🇪🇬 Egypt",
                "🇫🇷 France",
                "🇩🇪 Germany",
                "🇮🇩 Indonesia",
                "🇮🇱 Israel",
                "🇮🇹 Italy",
                "🇯🇵 Japan",
                "🇲🇾 Malaysia",
                "🇲🇽 Mexico",
                "🇵🇭 Philippines",
                "🇷🇺 Russia (resolves to US)",
                "🇸🇦 Saudi Arabia",
                "🇸🇬 Singapore",
                "🇿🇦 South Africa",
                "🇰🇷 South Korea",
                "🇪🇸 Spain",
                "🇹🇼 Taiwan",
                "🇹🇭 Thailand",
                "🇹🇷 Turkey",
                "🇦🇪 United Arab Emirates",
                "🇬🇧 United Kingdom",
                "🇺🇸 United States",
                "🇻🇳 Vietnam"
              ]
            }
          },
          "countryCode": {
            "title": "🌍 Country",
            "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",
              "AR",
              "CO",
              "MX",
              "ZA"
            ],
            "type": "string",
            "description": "Single market to read the trending hashtag board from. Used when 🗺️ Markets to sweep is empty. AR, CO, MX and ZA are supported by TikTok and added here; RU resolves to the US board (flagged as market_country_supported = false).",
            "default": "US"
          },
          "marketPeriodDays": {
            "title": "🗓️ Trending window",
            "enum": [
              "7",
              "30",
              "90"
            ],
            "type": "string",
            "description": "How far back TikTok ranks the hashtag board. Only 7, 30 and 90 are real values upstream.",
            "default": "7"
          },
          "minHashtagViews": {
            "title": "👁️ Minimum hashtag views",
            "minimum": 0,
            "type": "integer",
            "description": "Drop hashtags whose total video views (the board's vv value) are below this. Leave empty to keep all 3."
          },
          "hashtagIndustryIds": {
            "title": "🏭 Hashtag industry IDs",
            "type": "string",
            "description": "Comma-separated numeric industry IDs; a hashtag is kept only if its industryIDs list contains one of them. TikTok publishes these as numbers with no public labels. Valid IDs today: 10000000000, 11000000000, 12000000000, 14000000000, 15000000000, 17000000000, 18000000000, 19000000000, 21000000000, 22000000000, 23000000000, 25000000000, 27000000000, 28000000000, 29000000000. Filtering is done here, not on TikTok's server."
          },
          "followerCount": {
            "title": "👥 Follower Range",
            "enum": [
              "10k-100k",
              "100k-1m",
              "1m-10m",
              ">10m"
            ],
            "type": "string",
            "description": "Keep only creators inside this follower bucket. TikTok has no server-side follower filter on this board, so it is applied here to the <=9 creators each market returns - a narrow bucket can legitimately return zero rows."
          },
          "sortBy": {
            "title": "📊 Sort Results By",
            "enum": [
              "follower",
              "engagement",
              "popularity"
            ],
            "type": "string",
            "description": "TikTok's hashtag board has no sort parameter, so the ordering is applied here after collection. Follower = creator followers. Popularity = the source hashtag's total views. Engagement = summed likes + comments + shares across that creator's fetched videos (needs 🎬 Fetch each creator's videos on; creators with no fetched videos sort last).",
            "default": "follower"
          },
          "maxItems": {
            "title": "🔢 Max Results",
            "minimum": 1,
            "maximum": 252,
            "type": "integer",
            "description": "Maximum creator-to-hashtag rows to keep. The real ceiling is 9 rows per market (3 hashtags x 3 creators, there is no page 2), so all 28 selectable markets together cap at 252 rows.",
            "default": 10
          },
          "fetchCreatorVideos": {
            "title": "🎬 Fetch each creator's videos",
            "type": "boolean",
            "description": "Fills the items array with real video id, cover, link, views, likes and create time, and computes whether the creator actually used the trending hashtag.",
            "default": true
          },
          "videosPerCreator": {
            "title": "🎞️ Videos per creator",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "How many of the creator's 12 most recent public videos to pull full stats for. Each one is a separate request, so keep it low for wide sweeps.",
            "default": 3
          },
          "fetchHashtagDetail": {
            "title": "📈 Fetch lifetime hashtag stats",
            "type": "boolean",
            "description": "One extra request per unique hashtag for its exact lifetime view and video totals. This endpoint is region-gated by TikTok and can return an empty body from some datacenter exits - when that happens the row shows hashtag_detail_fetched = false and null totals rather than a guess.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy Configuration",
            "type": "object",
            "description": "Optional. The hashtag board needs no proxy. Creator and video requests go to tiktok.com and can be rate limited from a shared datacenter IP - a proxy helps there. Your exact group and country selection is used as-is."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}