{
  "openapi": "3.0.1",
  "info": {
    "title": "TikTok Creative Center API | Top Ads Scraper, Winning Ads",
    "description": "Scrape TikTok Creative Center Top Ads through an API for $0.90 per 1,000 ads, cheaper per 1,000 than the leading tools, no login: brand, ad caption, CTR, likes, budget level, objective, industry, video and cover links. 28 countries, 7/30/180 days, only-new daily mode for winning ads.",
    "version": "0.1",
    "x-build-id": "WvchAYSUCC3fTmXbG"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/aurelix~tiktok-creative-center-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-aurelix-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/aurelix~tiktok-creative-center-scraper/runs": {
      "post": {
        "operationId": "runs-sync-aurelix-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/aurelix~tiktok-creative-center-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-aurelix-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": "Countries",
            "type": "array",
            "description": "Which country's Top Ads ranking to read; each country is its own search (an ad that ranks in two countries comes back once per country). 'All countries' reads TikTok's combined ranking. Creative Center covers these 28 countries.",
            "items": {
              "type": "string",
              "enum": [
                "ALL",
                "US",
                "GB",
                "CA",
                "AU",
                "DE",
                "FR",
                "IT",
                "ES",
                "NL",
                "SE",
                "RO",
                "TR",
                "BR",
                "MX",
                "AR",
                "CO",
                "JP",
                "KR",
                "ID",
                "MY",
                "PH",
                "SG",
                "TH",
                "VN",
                "PK",
                "SA",
                "AE",
                "ZA"
              ],
              "enumTitles": [
                "All countries (combined ranking)",
                "United States (US)",
                "United Kingdom (GB)",
                "Canada (CA)",
                "Australia (AU)",
                "Germany (DE)",
                "France (FR)",
                "Italy (IT)",
                "Spain (ES)",
                "Netherlands (NL)",
                "Sweden (SE)",
                "Romania (RO)",
                "Turkey (TR)",
                "Brazil (BR)",
                "Mexico (MX)",
                "Argentina (AR)",
                "Colombia (CO)",
                "Japan (JP)",
                "South Korea (KR)",
                "Indonesia (ID)",
                "Malaysia (MY)",
                "Philippines (PH)",
                "Singapore (SG)",
                "Thailand (TH)",
                "Vietnam (VN)",
                "Pakistan (PK)",
                "Saudi Arabia (SA)",
                "United Arab Emirates (AE)",
                "South Africa (ZA)"
              ]
            },
            "default": [
              "US"
            ]
          },
          "period": {
            "title": "Period",
            "enum": [
              "7",
              "30",
              "180"
            ],
            "type": "string",
            "description": "Ads ranked over the last 7, 30 or 180 days.",
            "default": "30"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "for_you",
              "like",
              "ctr",
              "impression",
              "play_2s_rate",
              "play_6s_rate",
              "cvr"
            ],
            "type": "string",
            "description": "The order TikTok ranks the ads in: For you (Creative Center's default), Likes, CTR, Reach, 2-second or 6-second view rate, or conversion rate. 'rank' in the output is the position in this order.",
            "default": "for_you"
          },
          "maxResults": {
            "title": "Max ads per search",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Upper limit of ads returned for each country (and keyword). TikTok shows at most about 125 ads per filter set for the last 7 or 30 days and up to 500 for 180 days. 0 = every ad TikTok lists.",
            "default": 100
          },
          "keywords": {
            "title": "Keywords (optional)",
            "type": "array",
            "description": "Only ads matching a brand or product keyword, as Creative Center's search box does, e.g. 'skincare' or 'protein'. Each keyword is its own search per country. Leave empty for the full ranking. Keyword search on Creative Center is narrow: many keywords match only a few ads.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "industries": {
            "title": "Industries (optional)",
            "type": "array",
            "description": "Only ads in these industries. Empty = every industry.",
            "items": {
              "type": "string",
              "enum": [
                "22000000000",
                "16000000000",
                "20000000000",
                "12000000000",
                "14000000000",
                "24000000000",
                "30000000000",
                "10000000000",
                "13000000000",
                "27000000000",
                "25000000000",
                "29000000000",
                "21000000000",
                "18000000000",
                "26000000000",
                "23000000000",
                "19000000000",
                "28000000000",
                "15000000000",
                "17000000000",
                "11000000000"
              ],
              "enumTitles": [
                "Apparel & Accessories",
                "Appliances",
                "Apps",
                "Baby, Kids & Maternity",
                "Beauty & Personal Care",
                "Business Services",
                "E-Commerce (Non-app)",
                "Education",
                "Financial Services",
                "Food & Beverage",
                "Games",
                "Health",
                "Home Improvement",
                "Household Products",
                "Life Services",
                "News & Entertainment",
                "Pets",
                "Sports & Outdoor",
                "Tech & Electronics",
                "Travel",
                "Vehicle & Transportation"
              ]
            },
            "default": []
          },
          "objectives": {
            "title": "Campaign objectives (optional)",
            "type": "array",
            "description": "Only ads with these campaign objectives. Empty = every objective.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5",
                "8",
                "15",
                "16"
              ],
              "enumTitles": [
                "Traffic",
                "App Installs",
                "Conversions",
                "Video Views",
                "Reach",
                "Lead Generation",
                "Product Sales",
                "App Promotion"
              ]
            },
            "default": []
          },
          "adFormat": {
            "title": "Ad format",
            "enum": [
              "all",
              "spark",
              "non_spark"
            ],
            "type": "string",
            "description": "Spark Ads are boosted organic posts; Non-Spark Ads are regular ads.",
            "default": "all"
          },
          "adLanguages": {
            "title": "Ad languages (optional)",
            "type": "array",
            "description": "Only ads in these languages. Empty = every language.",
            "items": {
              "type": "string",
              "enum": [
                "en",
                "es",
                "pt",
                "fr",
                "de",
                "it",
                "nl",
                "ro",
                "ar",
                "ja",
                "ko",
                "zh-Hant",
                "id",
                "ms",
                "th",
                "vi"
              ],
              "enumTitles": [
                "English",
                "Spanish",
                "Portuguese",
                "French",
                "German",
                "Italian",
                "Dutch",
                "Romanian",
                "Arabic",
                "Japanese",
                "Korean",
                "Chinese (Traditional)",
                "Indonesian",
                "Malay",
                "Thai",
                "Vietnamese"
              ]
            },
            "default": []
          },
          "incremental": {
            "title": "Only new ads since last run",
            "type": "boolean",
            "description": "Return only ads no earlier run with the same filters returned for that country and keyword. Use with a daily schedule to get the ads that newly entered the Top Ads ranking. Ads already returned are skipped and not charged.",
            "default": false
          },
          "stateKey": {
            "title": "Incremental state name (optional)",
            "type": "string",
            "description": "Name for the 'new since last run' memory. Leave empty to derive it from the filters; set it to keep separate feeds apart."
          },
          "slackWebhookUrl": {
            "title": "Slack webhook URL (optional)",
            "type": "string",
            "description": "After each run, post a short digest to Slack: how many results were saved (new ones only when 'Only new ads since last run' is on) and the top 10 with links, e.g. https://hooks.slack.com/services/T000/B000/XXXX. Nothing is posted when the run saved nothing. Leave empty to skip."
          },
          "webhookUrl": {
            "title": "Webhook URL (optional)",
            "type": "string",
            "description": "After each run, POST the same digest as JSON (actor, newOnly, count, items = top 10 results, runUrl, text) to any URL, e.g. a Zapier, Make or n8n webhook. Nothing is sent when the run saved nothing. Leave empty to skip."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}