{
  "openapi": "3.0.1",
  "info": {
    "title": "TikTok Creative Center Top Ads Scraper",
    "description": "TikTok's own top-performing ads from Creative Center by country, keyword, industry and objective: ad copy, brand, CTR rank, likes, budget tier, MP4 links, plus each ad's landing page, comments, shares, markets and AI analysis. No login.",
    "version": "1.0",
    "x-build-id": "qjQOsK6ewnVB3ayTz"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/steadyscrape~tiktok-creative-center-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-steadyscrape-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/steadyscrape~tiktok-creative-center-scraper/runs": {
      "post": {
        "operationId": "runs-sync-steadyscrape-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/steadyscrape~tiktok-creative-center-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-steadyscrape-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": "The markets whose top ads you want; each country is its own search of up to 400 ads. Leave the list empty for one search across all markets together.",
            "items": {
              "type": "string",
              "enum": [
                "AR",
                "AU",
                "BR",
                "CA",
                "CO",
                "FR",
                "DE",
                "ID",
                "IT",
                "JP",
                "MY",
                "MX",
                "NL",
                "PK",
                "PH",
                "RO",
                "SA",
                "SG",
                "ZA",
                "KR",
                "ES",
                "SE",
                "TH",
                "TR",
                "AE",
                "GB",
                "US",
                "VN"
              ],
              "enumTitles": [
                "Argentina",
                "Australia",
                "Brazil",
                "Canada",
                "Colombia",
                "France",
                "Germany",
                "Indonesia",
                "Italy",
                "Japan",
                "Malaysia",
                "Mexico",
                "Netherlands",
                "Pakistan",
                "Philippines",
                "Romania",
                "Saudi Arabia",
                "Singapore",
                "South Africa",
                "South Korea",
                "Spain",
                "Sweden",
                "Thailand",
                "Turkey",
                "United Arab Emirates",
                "United Kingdom",
                "United States",
                "Vietnam"
              ]
            },
            "default": [
              "US"
            ]
          },
          "period": {
            "title": "Period",
            "enum": [
              "7",
              "30",
              "180"
            ],
            "type": "string",
            "description": "Ads that ran in the last 7, 30 or 180 days. 180 days gives the most ads (TikTok shows at most 400 per search).",
            "default": "30"
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Search the ads by product, brand or theme (<code>skincare</code>, <code>running shoes</code>, <code>temu</code>). Each keyword is its own search. Leave empty for the overall ranking.",
            "items": {
              "type": "string"
            }
          },
          "industries": {
            "title": "Industries",
            "type": "array",
            "description": "TikTok's industry names, as in Creative Center: <code>Apparel & Accessories</code>, <code>Beauty & Personal Care</code>, <code>Games</code>, <code>Women's Clothing</code>, <code>Skincare</code>… (any case; \"and\" works for \"&\"), or their numeric ids. Each industry is its own search. An unknown name comes back as a free row with similar names.",
            "items": {
              "type": "string"
            }
          },
          "objectives": {
            "title": "Campaign objectives",
            "type": "array",
            "description": "Keep only ads bought for these objectives. Empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "traffic",
                "app_installs",
                "conversions",
                "video_views",
                "reach",
                "lead_generation",
                "product_sales",
                "app_promotion"
              ],
              "enumTitles": [
                "Traffic",
                "App installs",
                "Conversions",
                "Video views",
                "Reach",
                "Lead generation",
                "Product sales",
                "App promotion"
              ]
            }
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "for_you",
              "reach",
              "ctr",
              "cvr",
              "view_rate_2s",
              "view_rate_6s",
              "likes"
            ],
            "type": "string",
            "description": "The order TikTok ranks the ads in. With a maximum below 400, it decides which ads you get.",
            "default": "for_you"
          },
          "adLanguage": {
            "title": "Ad language",
            "enum": [
              "any",
              "en",
              "es",
              "ar",
              "vi",
              "th",
              "de",
              "id",
              "pt",
              "fr",
              "ms",
              "nl",
              "ja",
              "it",
              "ro",
              "zh-Hant",
              "ko"
            ],
            "type": "string",
            "description": "Keep only ads in this language.",
            "default": "any"
          },
          "adFormat": {
            "title": "Ad format",
            "enum": [
              "any",
              "spark",
              "non_spark"
            ],
            "type": "string",
            "description": "Spark ads are creators' own posts boosted as ads; non-Spark ads are uploaded by the advertiser.",
            "default": "any"
          },
          "maxAdsPerSearch": {
            "title": "Max ads per search",
            "minimum": 1,
            "maximum": 400,
            "type": "integer",
            "description": "In TikTok's order. TikTok ranks at most 400 ads for one search; to get more, add countries, keywords or industries.",
            "default": 100
          },
          "includeDetails": {
            "title": "Add each ad's page (landing page, comments, shares, markets, AI analysis)",
            "type": "boolean",
            "description": "Opens each ad's page in Creative Center: the landing page URL, comments and shares, every country the ad ran in, the campaign objectives, Creative Center's note on why the ad works and, for the ads it has one, its AI analysis of the hook and structure. Charged as <code>ad-with-details</code> instead of <code>ad</code>.",
            "default": false
          },
          "onlyNewAds": {
            "title": "Only ads new since the last run (monitor)",
            "type": "boolean",
            "description": "Turns a scheduled run into a monitor: ads an earlier monitor run of yours already delivered are skipped for free, so each run delivers only the ads that entered the ranking since.",
            "default": 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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}