{
  "openapi": "3.0.1",
  "info": {
    "title": "TikTok Creative Center Top Ads — CTR, MP4 & Funnel | $2/1K",
    "description": "Scrape top-performing TikTok Creative Center ads by country, industry, CTR, and 2s/6s hook retention. Extracts MP4 video URLs, landing pages & Shopify/pixel stacks.",
    "version": "1.0",
    "x-build-id": "CqpPKQuF959ki9hUl"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/devoted_helix~tiktok-creative-center-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-devoted_helix-tiktok-creative-center-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/devoted_helix~tiktok-creative-center-scraper/runs": {
      "post": {
        "operationId": "runs-sync-devoted_helix-tiktok-creative-center-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/devoted_helix~tiktok-creative-center-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-devoted_helix-tiktok-creative-center-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": "Target Countries (ISO-2)",
            "type": "array",
            "description": "Two-letter country codes to pull winning TikTok ads from (e.g. US, GB, DE, FR, CA, AU, TR, BR, JP, AE).",
            "items": {
              "type": "string"
            }
          },
          "period": {
            "title": "Time Period (Days)",
            "enum": [
              "7",
              "30",
              "180"
            ],
            "type": "string",
            "description": "Lookback window on TikTok Creative Center (7, 30, or 180 days).",
            "default": "30"
          },
          "sortBy": {
            "title": "Sort / Ranking Metric",
            "enum": [
              "ctr",
              "for_you",
              "reach",
              "play_2s_rate",
              "play_6s_rate",
              "like"
            ],
            "type": "string",
            "description": "Rank top TikTok ads by CTR, 2-second hook rate, 6-second retention, reach, likes, or TikTok For You score.",
            "default": "ctr"
          },
          "industry": {
            "title": "Industry Filter",
            "enum": [
              "ALL",
              "14000000000",
              "22000000000",
              "16000000000",
              "12000000000",
              "24000000000",
              "30000000000",
              "29000000000",
              "25000000000",
              "18000000000",
              "27000000000"
            ],
            "type": "string",
            "description": "Optional TikTok vertical filter.",
            "default": "ALL"
          },
          "objective": {
            "title": "Campaign Objective",
            "enum": [
              "ALL",
              "3",
              "14",
              "1",
              "2",
              "4",
              "5",
              "8"
            ],
            "type": "string",
            "description": "Filter ads by TikTok campaign optimization goal.",
            "default": "ALL"
          },
          "searchKeyword": {
            "title": "Keyword / Brand Filter (Optional)",
            "type": "string",
            "description": "Filter ads containing a keyword in caption, brand, or landing page. Without tiktokCookie this only filters the anonymously visible top ads (often few or no matches); server-side keyword search activates when tiktokCookie is provided.",
            "default": ""
          },
          "maxAdsPerCountry": {
            "title": "Max Ads per Country",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum unique top ads to extract per country. Without tiktokCookie, TikTok only serves the first page (20 ads) of each ranking, so values above 20 are filled by merging the first pages of the other sort metrics and periods (8 rankings x 20 = at most 160 ads before de-duplication; the unique count is lower because rankings overlap). Full pagination up to 500 requires tiktokCookie.",
            "default": 20
          },
          "includeAdDetails": {
            "title": "Fetch Full Ad Analytics, Video MP4 & Exact Landing Page",
            "type": "boolean",
            "description": "Enriches every ad via Creative Radar Detail API to extract the exact destination landing_page URL, MP4 video link, voice-over flag, engagement counts, and pattern tags.",
            "default": true
          },
          "analyzeLandingPage": {
            "title": "Analyze Advertiser Landing Page, Offer & Pixels",
            "type": "boolean",
            "description": "Optional paid add-on ($0.01 per unique landing page). Visits each advertiser's landing page to detect Shopify/WooCommerce stack, H1 hooks, discount/bundle offers, and tracking pixels (TikTok, Meta, Google Ads, GTM, Clarity, Hotjar, Pinterest, Snapchat). Charged only when the page loads successfully; blocked or failed pages are never charged.",
            "default": false
          },
          "tiktokCookie": {
            "title": "TikTok Creative Center Cookie Header (Optional)",
            "type": "string",
            "description": "Optional raw Cookie header from a logged-in ads.tiktok.com session. Not needed for standard top-ads discovery, but unlocks deep multi-page keyword search."
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}