{
  "openapi": "3.0.1",
  "info": {
    "title": "TikTok Trending Hashtags Scraper — Rank, Views & Creators",
    "description": "Scrape TikTok trending hashtags from Creative Center: rank, views, post count, popularity curve, and top creators. 27 countries and 7/30/90-day windows. No login — export JSON via API, Python, Node.js, or MCP.",
    "version": "0.1",
    "x-build-id": "PgoNj1N268LGpI5vQ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawloop~tiktok-trending-hashtags-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawloop-tiktok-trending-hashtags-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/crawloop~tiktok-trending-hashtags-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawloop-tiktok-trending-hashtags-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/crawloop~tiktok-trending-hashtags-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawloop-tiktok-trending-hashtags-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": {
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Markets whose trending-hashtag board to scrape. TikTok publishes this board for 27 countries only. Ignored when Sweep all countries is on. Default: United States.",
            "items": {
              "type": "string",
              "enum": [
                "US",
                "GB",
                "DE",
                "FR",
                "IT",
                "ES",
                "BR",
                "MX",
                "AR",
                "CO",
                "CA",
                "AU",
                "JP",
                "KR",
                "TW",
                "ID",
                "MY",
                "SG",
                "TH",
                "VN",
                "PH",
                "EG",
                "SA",
                "AE",
                "IL",
                "TR",
                "ZA"
              ],
              "enumTitles": [
                "United States",
                "United Kingdom",
                "Germany",
                "France",
                "Italy",
                "Spain",
                "Brazil",
                "Mexico",
                "Argentina",
                "Colombia",
                "Canada",
                "Australia",
                "Japan",
                "South Korea",
                "Taiwan",
                "Indonesia",
                "Malaysia",
                "Singapore",
                "Thailand",
                "Vietnam",
                "Philippines",
                "Egypt",
                "Saudi Arabia",
                "United Arab Emirates",
                "Israel",
                "Türkiye",
                "South Africa"
              ]
            },
            "default": [
              "US"
            ]
          },
          "allCountries": {
            "title": "Sweep all 27 countries",
            "type": "boolean",
            "description": "Fetch every market TikTok publishes on this board (27 countries). Overrides Countries. A full sweep with all three windows is 81 requests and at most 243 rows before maxItems.",
            "default": false
          },
          "period": {
            "title": "Time window (days)",
            "enum": [
              "7",
              "30",
              "90"
            ],
            "type": "string",
            "description": "Look-back window for the ranking. 7 = breaking now, 30 = this month, 90 = staying power. TikTok does not publish 120 here — it silently serves 7 if you send 120 raw; this Actor remaps 120/180 to 90 instead.",
            "default": "7"
          },
          "periods": {
            "title": "Extra windows",
            "type": "array",
            "description": "Optional extra windows to fetch in the same run (merged with Time window). Use this for 7+30+90 in one dataset.",
            "items": {
              "type": "string",
              "enum": [
                "7",
                "30",
                "90"
              ],
              "enumTitles": [
                "7 days",
                "30 days",
                "90 days"
              ]
            },
            "default": []
          },
          "maxItems": {
            "title": "Max hashtags",
            "minimum": 0,
            "type": "integer",
            "description": "Hard cap on dataset rows for the whole run. TikTok serves 3 hashtags per country × window, so 100 covers a full 27-country × 1-window sweep.",
            "default": 100
          },
          "concurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "Parallel country × window requests (1–12). Lower it if you see fingerprint blocks.",
            "default": 6
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify RESIDENTIAL proxy is recommended. Creative Center answers a non-impersonated or datacenter client with HTTP 200 and an empty board.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}