{
  "data": {
    "id": "VN98RbYxVmnD8fOwy",
    "actId": "rwSaNbXr5duaqxZWs",
    "userId": "NL4ThgItAwaoBlffQ",
    "startedAt": "2026-10-26T13:56:37.006Z",
    "finishedAt": "2026-10-26T13:57:09.258Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 32175,
      "runTimeSecs": 32.175,
      "computeUnits": 0.03575,
      "imageSizeBytes": 3103118336
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "zifX0mkAFMHe8CatY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"TikTok DSA Ads Transparency Library Input\",\n  \"description\": \"Search the TikTok DSA ad library in 33 European markets and/or the global Creative Center Top Ads. No login, cookies or proxy setup needed.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Data source\",\n      \"type\": \"string\",\n      \"description\": \"`library` = TikTok DSA Commercial Content Library (EU/EEA/UK/CH/TR). `creativeCenter` = global Top Ads inspiration feed. `both` = run both and label every row with `source`.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"library\",\n        \"creativeCenter\",\n        \"both\"\n      ],\n      \"enumTitles\": [\n        \"DSA ad library\",\n        \"Creative Center Top Ads\",\n        \"Both sources\"\n      ],\n      \"default\": \"library\",\n      \"prefill\": \"library\"\n    },\n    \"keyword\": {\n      \"title\": \"Keyword\",\n      \"type\": \"string\",\n      \"description\": \"Search ads by keyword or advertiser name. Leave empty to browse recent ads in the selected region. (mode=library)\",\n      \"editor\": \"textfield\",\n      \"default\": \"\",\n      \"prefill\": \"Nike\"\n    },\n    \"advertiserName\": {\n      \"title\": \"Exact advertiser name\",\n      \"type\": \"string\",\n      \"description\": \"Exact advertiser name as shown in the library, e.g. `NIKE Retail B.V.`. If the exact search finds nothing, the actor retries it as a keyword. (mode=library)\",\n      \"editor\": \"textfield\"\n    },\n    \"advertiserId\": {\n      \"title\": \"Advertiser business ID\",\n      \"type\": \"string\",\n      \"description\": \"Optional TikTok business ID (`adv_biz_ids`) to disambiguate an advertiser search. Use it with the exact advertiser name. (mode=library)\",\n      \"editor\": \"textfield\"\n    },\n    \"adIds\": {\n      \"title\": \"Ad IDs\",\n      \"type\": \"array\",\n      \"description\": \"Direct list of TikTok ad IDs. Skips search and opens each ad's detail page. (mode=library)\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"startUrls\": {\n      \"title\": \"TikTok library URLs\",\n      \"type\": \"array\",\n      \"description\": \"Paste TikTok library search or ad-detail URLs. Search URLs carry their own region, keyword/advertiser, dates and filters; detail URLs are read as ad IDs. (mode=library)\",\n      \"editor\": \"requestListSources\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"region\": {\n      \"title\": \"Ad target country\",\n      \"type\": \"string\",\n      \"description\": \"TikTok DSA library covers EU/EEA countries plus the UK, Switzerland and Turkey. `all` searches the union (capped by TikTok), so split regions for deeper runs. (mode=library)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"AT\",\n        \"BE\",\n        \"BG\",\n        \"CH\",\n        \"CY\",\n        \"CZ\",\n        \"DE\",\n        \"DK\",\n        \"EE\",\n        \"ES\",\n        \"FI\",\n        \"FR\",\n        \"GB\",\n        \"GR\",\n        \"HR\",\n        \"HU\",\n        \"IE\",\n        \"IS\",\n        \"IT\",\n        \"LI\",\n        \"LT\",\n        \"LU\",\n        \"LV\",\n        \"MT\",\n        \"NL\",\n        \"NO\",\n        \"PL\",\n        \"PT\",\n        \"RO\",\n        \"SE\",\n        \"SI\",\n        \"SK\",\n        \"TR\"\n      ],\n      \"enumTitles\": [\n        \"All supported countries\",\n        \"Austria\",\n        \"Belgium\",\n        \"Bulgaria\",\n        \"Switzerland\",\n        \"Cyprus\",\n        \"Czech Republic\",\n        \"Germany\",\n        \"Denmark\",\n        \"Estonia\",\n        \"Spain\",\n        \"Finland\",\n        \"France\",\n        \"United Kingdom\",\n        \"Greece\",\n        \"Croatia\",\n        \"Hungary\",\n        \"Ireland\",\n        \"Iceland\",\n        \"Italy\",\n        \"Liechtenstein\",\n        \"Lithuania\",\n        \"Luxembourg\",\n        \"Latvia\",\n        \"Malta\",\n        \"Netherlands\",\n        \"Norway\",\n        \"Poland\",\n        \"Portugal\",\n        \"Romania\",\n        \"Sweden\",\n        \"Slovenia\",\n        \"Slovakia\",\n        \"Turkey\"\n      ],\n      \"default\": \"all\",\n      \"prefill\": \"DE\"\n    },\n    \"startDate\": {\n      \"title\": \"Last shown from\",\n      \"type\": \"string\",\n      \"description\": \"Earliest last-shown date (`YYYY-MM-DD`). Default: one year ago. (mode=library)\",\n      \"editor\": \"textfield\"\n    },\n    \"endDate\": {\n      \"title\": \"Last shown to\",\n      \"type\": \"string\",\n      \"description\": \"Latest last-shown date (`YYYY-MM-DD`). Default: today. (mode=library)\",\n      \"editor\": \"textfield\"\n    },\n    \"sortBy\": {\n      \"title\": \"Sort by\",\n      \"type\": \"string\",\n      \"description\": \"Result order. (mode=library)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"last_shown_date,desc\",\n        \"last_shown_date,asc\",\n        \"create_time,desc\",\n        \"create_time,asc\",\n        \"impression,desc\",\n        \"impression,asc\"\n      ],\n      \"enumTitles\": [\n        \"Last shown — newest first\",\n        \"Last shown — oldest first\",\n        \"Created — newest first\",\n        \"Created — oldest first\",\n        \"Audience size — high to low\",\n        \"Audience size — low to high\"\n      ],\n      \"default\": \"last_shown_date,desc\",\n      \"prefill\": \"last_shown_date,desc\"\n    },\n    \"adType\": {\n      \"title\": \"Ad type\",\n      \"type\": \"string\",\n      \"description\": \"Filter by creative type. (mode=library)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"video\",\n        \"image\",\n        \"text\"\n      ],\n      \"enumTitles\": [\n        \"All ad types\",\n        \"Video\",\n        \"Image\",\n        \"Text\"\n      ],\n      \"default\": \"all\",\n      \"prefill\": \"all\"\n    },\n    \"adStatus\": {\n      \"title\": \"Ad status\",\n      \"type\": \"string\",\n      \"description\": \"Active ads are still being shown; inactive ads have stopped. (mode=library)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"active\",\n        \"inactive\"\n      ],\n      \"enumTitles\": [\n        \"All statuses\",\n        \"Active\",\n        \"Inactive\"\n      ],\n      \"default\": \"active\",\n      \"prefill\": \"active\"\n    },\n    \"age\": {\n      \"title\": \"Audience age\",\n      \"type\": \"array\",\n      \"description\": \"Only ads targeted at any of these age groups: `13-17`, `18-24`, `25-34`, `35-44`, `45-54`, `55+`. Leave empty for all ages. (mode=library)\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"gender\": {\n      \"title\": \"Audience gender\",\n      \"type\": \"string\",\n      \"description\": \"Only ads targeted at this gender. (mode=library)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"female\",\n        \"male\"\n      ],\n      \"enumTitles\": [\n        \"All genders\",\n        \"Female\",\n        \"Male\"\n      ],\n      \"default\": \"all\",\n      \"prefill\": \"all\"\n    },\n    \"uniqueReach\": {\n      \"title\": \"Unique reach\",\n      \"type\": \"string\",\n      \"description\": \"Filter by TikTok's unique-users-seen band. (mode=library)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"under10k\",\n        \"10k-100k\",\n        \"over100k\"\n      ],\n      \"enumTitles\": [\n        \"All reach bands\",\n        \"Under 10K\",\n        \"10K–100K\",\n        \"Over 100K\"\n      ],\n      \"default\": \"all\",\n      \"prefill\": \"all\"\n    },\n    \"exactPhrase\": {\n      \"title\": \"Exact phrase\",\n      \"type\": \"boolean\",\n      \"description\": \"Treat the keyword as an exact phrase instead of individual words. (mode=library)\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeDetails\": {\n      \"title\": \"Fetch ad details\",\n      \"type\": \"boolean\",\n      \"description\": \"Open each ad's detail page for caption, CTA, landing page, advertiser identity and age/gender reach breakdown. Slower; recommended for smaller runs. (mode=library)\",\n      \"default\": true,\n      \"prefill\": false\n    },\n    \"countOnly\": {\n      \"title\": \"Count only\",\n      \"type\": \"boolean\",\n      \"description\": \"Return one summary row with the number of matching ads instead of collecting ads. (mode=library)\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"maxItems\": {\n      \"title\": \"Max items\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum records to collect per source (1–5,000). TikTok caps a single library search at about 5,000 results.\",\n      \"minimum\": 1,\n      \"maximum\": 5000,\n      \"default\": 50,\n      \"prefill\": 3\n    },\n    \"ccCountry\": {\n      \"title\": \"Top Ads country\",\n      \"type\": \"string\",\n      \"description\": \"Creative Center market. (mode=creativeCenter or both)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"AR\",\n        \"AU\",\n        \"BR\",\n        \"CA\",\n        \"CO\",\n        \"FR\",\n        \"DE\",\n        \"ID\",\n        \"IT\",\n        \"JP\",\n        \"MY\",\n        \"MX\",\n        \"NL\",\n        \"PK\",\n        \"PH\",\n        \"RO\",\n        \"SA\",\n        \"SG\",\n        \"ZA\",\n        \"KR\",\n        \"ES\",\n        \"SE\",\n        \"TH\",\n        \"TR\",\n        \"AE\",\n        \"GB\",\n        \"US\",\n        \"VN\"\n      ],\n      \"enumTitles\": [\n        \"Argentina\",\n        \"Australia\",\n        \"Brazil\",\n        \"Canada\",\n        \"Colombia\",\n        \"France\",\n        \"Germany\",\n        \"Indonesia\",\n        \"Italy\",\n        \"Japan\",\n        \"Malaysia\",\n        \"Mexico\",\n        \"Netherlands\",\n        \"Pakistan\",\n        \"Philippines\",\n        \"Romania\",\n        \"Saudi Arabia\",\n        \"Singapore\",\n        \"South Africa\",\n        \"South Korea\",\n        \"Spain\",\n        \"Sweden\",\n        \"Thailand\",\n        \"Turkey\",\n        \"United Arab Emirates\",\n        \"United Kingdom\",\n        \"United States\",\n        \"Vietnam\"\n      ],\n      \"default\": \"US\",\n      \"prefill\": \"US\"\n    },\n    \"ccPeriod\": {\n      \"title\": \"Top Ads period\",\n      \"type\": \"string\",\n      \"description\": \"Performance window for Creative Center. (mode=creativeCenter or both)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"7\",\n        \"30\",\n        \"180\"\n      ],\n      \"enumTitles\": [\n        \"Last 7 days\",\n        \"Last 30 days\",\n        \"Last 180 days\"\n      ],\n      \"default\": \"30\",\n      \"prefill\": \"30\"\n    },\n    \"ccOrderBy\": {\n      \"title\": \"Top Ads ranking\",\n      \"type\": \"string\",\n      \"description\": \"How Creative Center ranks ads. (mode=creativeCenter or both)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"for_you\",\n        \"ctr\",\n        \"like\"\n      ],\n      \"enumTitles\": [\n        \"For You\",\n        \"Click-through rate\",\n        \"Likes\"\n      ],\n      \"default\": \"for_you\",\n      \"prefill\": \"for_you\"\n    },\n    \"ccObjective\": {\n      \"title\": \"Top Ads objective\",\n      \"type\": \"string\",\n      \"description\": \"Campaign objective filter. (mode=creativeCenter or both)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"1\",\n        \"2\",\n        \"3\",\n        \"4\",\n        \"5\",\n        \"8\",\n        \"15\",\n        \"16\"\n      ],\n      \"enumTitles\": [\n        \"All objectives\",\n        \"Traffic\",\n        \"App Installs\",\n        \"Conversions\",\n        \"Video Views\",\n        \"Reach\",\n        \"Lead Generation\",\n        \"Product sales\",\n        \"App Promotion\"\n      ],\n      \"default\": \"all\",\n      \"prefill\": \"all\"\n    },\n    \"ccIndustry\": {\n      \"title\": \"Top Ads industry\",\n      \"type\": \"string\",\n      \"description\": \"Creative Center industry filter. 258 industries are available; leave `all` to sweep without an industry. (mode=creativeCenter or both)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"label_11105000000\",\n        \"label_18110000000\",\n        \"label_25300000000\",\n        \"label_22000000000\",\n        \"label_24118000000\",\n        \"label_23113000000\",\n        \"label_23124000000\",\n        \"label_20112000000\",\n        \"label_24112000000\",\n        \"label_18101000000\",\n        \"label_19105000000\",\n        \"label_14105000000\",\n        \"label_20104000000\",\n        \"label_27104000000\",\n        \"label_25302000000\",\n        \"label_12104000000\",\n        \"label_15101000000\",\n        \"label_24113000000\",\n        \"label_18107000000\",\n        \"label_23130000000\",\n        \"label_26000000000\",\n        \"label_15000000000\",\n        \"label_17106000000\",\n        \"label_19100000000\",\n        \"label_23102000000\",\n        \"label_25303000000\",\n        \"label_19102000000\",\n        \"label_23127000000\",\n        \"label_13111000000\",\n        \"label_14101000000\",\n        \"label_24100000000\",\n        \"label_26107000000\",\n        \"label_23128000000\",\n        \"label_20109000000\",\n        \"label_24103000000\",\n        \"label_20101000000\",\n        \"label_13110000000\",\n        \"label_25308000000\",\n        \"label_21999000000\",\n        \"label_22109000000\",\n        \"label_20999000000\",\n        \"label_27101000000\",\n        \"label_28101000000\",\n        \"label_13108000000\",\n        \"label_23107000000\",\n        \"label_11999000000\",\n        \"label_23133000000\",\n        \"label_21104000000\",\n        \"label_11107000000\",\n        \"label_16102000000\",\n        \"label_15106000000\",\n        \"label_24119000000\",\n        \"label_18100000000\",\n        \"label_13101000000\",\n        \"label_11110000000\",\n        \"label_22112000000\",\n        \"label_24117000000\",\n        \"label_26100000000\",\n        \"label_28000000000\",\n        \"label_23112000000\",\n        \"label_10000000000\",\n        \"label_10100000000\",\n        \"label_12101000000\",\n        \"label_23100000000\",\n        \"label_25304000000\",\n        \"label_23132000000\",\n        \"label_30000000000\",\n        \"label_11109000000\",\n        \"label_14100000000\",\n        \"label_18000000000\",\n        \"label_11104000000\",\n        \"label_11106000000\",\n        \"label_23122000000\",\n        \"label_10104000000\",\n        \"label_12109000000\",\n        \"label_20108000000\",\n        \"label_26113000000\",\n        \"label_15107000000\",\n        \"label_16105000000\",\n        \"label_21102000000\",\n        \"label_26109000000\",\n        \"label_23125000000\",\n        \"label_27000000000\",\n        \"label_19101000000\",\n        \"label_24110000000\",\n        \"label_30102000000\",\n        \"label_25311000000\",\n        \"label_11100000000\",\n        \"label_17103000000\",\n        \"label_17105000000\",\n        \"label_22101000000\",\n        \"label_23117000000\",\n        \"label_10101000000\",\n        \"label_20100000000\",\n        \"label_13114000000\",\n        \"label_23000000000\",\n        \"label_29999000000\",\n        \"label_10105000000\",\n        \"label_13100000000\",\n        \"label_20000000000\",\n        \"label_24102000000\",\n        \"label_10106000000\",\n        \"label_16100000000\",\n        \"label_24101000000\",\n        \"label_23103000000\",\n        \"label_12106000000\",\n        \"label_25310000000\",\n        \"label_16000000000\",\n        \"label_23126000000\",\n        \"label_26101000000\",\n        \"label_14999000000\",\n        \"label_15105000000\",\n        \"label_20102000000\",\n        \"label_23110000000\",\n        \"label_26102000000\",\n        \"label_10999000000\",\n        \"label_15100000000\",\n        \"label_23116000000\",\n        \"label_23118000000\",\n        \"label_24109000000\",\n        \"label_25313000000\",\n        \"label_23123000000\",\n        \"label_13999000000\",\n        \"label_25312000000\",\n        \"label_24116000000\",\n        \"label_26104000000\",\n        \"label_25305000000\",\n        \"label_17000000000\",\n        \"label_26105000000\",\n        \"label_14106000000\",\n        \"label_11101000000\",\n        \"label_19000000000\",\n        \"label_25999000000\",\n        \"label_25306000000\",\n        \"label_27103000000\",\n        \"label_12108000000\",\n        \"label_13113000000\",\n        \"label_25000000000\",\n        \"label_13117000000\",\n        \"label_22107000000\",\n        \"label_26114000000\",\n        \"label_23101000000\",\n        \"label_16999000000\",\n        \"label_20106000000\",\n        \"label_14104000000\",\n        \"label_21100000000\",\n        \"label_11112000000\",\n        \"label_21103000000\",\n        \"label_11102000000\",\n        \"label_23114000000\",\n        \"label_12107000000\",\n        \"label_30101000000\",\n        \"label_23134000000\",\n        \"label_26106000000\",\n        \"label_11111000000\",\n        \"label_18106000000\",\n        \"label_25309000000\",\n        \"label_18111000000\",\n        \"label_13104000000\",\n        \"label_13109000000\",\n        \"label_22106000000\",\n        \"label_18112000000\",\n        \"label_20107000000\",\n        \"label_10103000000\",\n        \"label_29101000000\",\n        \"label_15102000000\",\n        \"label_13102000000\",\n        \"label_21105000000\",\n        \"label_23131000000\",\n        \"label_24114000000\",\n        \"label_11000000000\",\n        \"label_21101000000\",\n        \"label_23108000000\",\n        \"label_26108000000\",\n        \"label_19104000000\",\n        \"label_11108000000\",\n        \"label_14102000000\",\n        \"label_18104000000\",\n        \"label_28100000000\",\n        \"label_23115000000\",\n        \"label_12103000000\",\n        \"label_13116000000\",\n        \"label_16104000000\",\n        \"label_25301000000\",\n        \"label_24108000000\",\n        \"label_24120000000\",\n        \"label_22111000000\",\n        \"label_13103000000\",\n        \"label_18108000000\",\n        \"label_23105000000\",\n        \"label_26103000000\",\n        \"label_12999000000\",\n        \"label_22113000000\",\n        \"label_27999000000\",\n        \"label_24999000000\",\n        \"label_13112000000\",\n        \"label_29102000000\",\n        \"label_19106000000\",\n        \"label_24104000000\",\n        \"label_24107000000\",\n        \"label_23104000000\",\n        \"label_14107000000\",\n        \"label_23119000000\",\n        \"label_27102000000\",\n        \"label_12102000000\",\n        \"label_20103000000\",\n        \"label_20111000000\",\n        \"label_16101000000\",\n        \"label_13000000000\",\n        \"label_22102000000\",\n        \"label_26111000000\",\n        \"label_26999000000\",\n        \"label_12000000000\",\n        \"label_20110000000\",\n        \"label_13107000000\",\n        \"label_23109000000\",\n        \"label_19103000000\",\n        \"label_18102000000\",\n        \"label_24106000000\",\n        \"label_27100000000\",\n        \"label_12105000000\",\n        \"label_23111000000\",\n        \"label_23106000000\",\n        \"label_24000000000\",\n        \"label_18103000000\",\n        \"label_18109000000\",\n        \"label_19999000000\",\n        \"label_15104000000\",\n        \"label_18999000000\",\n        \"label_26112000000\",\n        \"label_13105000000\",\n        \"label_13115000000\",\n        \"label_18105000000\",\n        \"label_22105000000\",\n        \"label_22108000000\",\n        \"label_11103000000\",\n        \"label_24115000000\",\n        \"label_29103000000\",\n        \"label_12100000000\",\n        \"label_17999000000\",\n        \"label_14000000000\",\n        \"label_21000000000\",\n        \"label_22999000000\",\n        \"label_15999000000\",\n        \"label_23129000000\",\n        \"label_24111000000\",\n        \"label_20105000000\",\n        \"label_25307000000\",\n        \"label_23999000000\",\n        \"label_24105000000\",\n        \"label_12110000000\",\n        \"label_10102000000\",\n        \"label_15103000000\",\n        \"label_30100000000\",\n        \"label_14103000000\",\n        \"label_29000000000\",\n        \"label_29100000000\",\n        \"label_22110000000\"\n      ],\n      \"enumTitles\": [\n        \"All industries\",\n        \"Used Cars\",\n        \"Cleaning Supplies\",\n        \"Hyper-Casual\",\n        \"Apparel & Accessories\",\n        \"Auction Services\",\n        \"Anime\",\n        \"Food & Cooking\",\n        \"Utilities\",\n        \"Marketing & Advertising\",\n        \"Daily Essentials\",\n        \"Pet Toys\",\n        \"Aesthetic Medicine\",\n        \"Education\",\n        \"Cooking & Recipes\",\n        \"Casino\",\n        \"Baby Bedding\",\n        \"Computers\",\n        \"Professional Consultation\",\n        \"Tissues & Wet Wipes\",\n        \"Real Estate Information\",\n        \"Life Services\",\n        \"Tech & Electronics\",\n        \"Travel Agencies & Services\",\n        \"Petfood\",\n        \"Business & Economy\",\n        \"Match\",\n        \"Pet Household Products\",\n        \"General Information\",\n        \"Loan Services\",\n        \"Haircare\",\n        \"Real Estate & Home Rentals\",\n        \"Used Good Sales Platforms\",\n        \"E-commerce Information\",\n        \"Health & Fitness\",\n        \"Constructional Engineering\",\n        \"Audio & Video Players\",\n        \"Investment Advisory\",\n        \"Simulation\",\n        \"Other Home Improvement\",\n        \"Men's Shoes\",\n        \"Other Apps\",\n        \"Food & Fresh Produce\",\n        \"Sports & Equipment\",\n        \"Credit Bureaus\",\n        \"Environmental Protection\",\n        \"Other Vehicle & Transportation\",\n        \"Tourist Information\",\n        \"Home Decor\",\n        \"Bicycles\",\n        \"Large Appliances\",\n        \"Network Products\",\n        \"Investment Planning & Management\",\n        \"Storage Products\",\n        \"Securities\",\n        \"Airplanes\",\n        \"Traditional & Ceremonial Clothing\",\n        \"Legal Services\",\n        \"Wedding Photography\",\n        \"Sports & Outdoor\",\n        \"TV Drama & Series\",\n        \"Education\",\n        \"Early Childhood & Preschool Education\",\n        \"Strollers & Cribs\",\n        \"Military\",\n        \"Puzzle\",\n        \"Streaming Site\",\n        \"E-Commerce (Non-app)\",\n        \"Water Vehicles\",\n        \"Oral Care\",\n        \"Household Products\",\n        \"Car Rentals\",\n        \"Motorcycles\",\n        \"Beauty & Personal Care\",\n        \"Vocational Training\",\n        \"Children's Apparel\",\n        \"Travel\",\n        \"Exercise & Fitness\",\n        \"Office Equipment\",\n        \"Digital Devices\",\n        \"Construction Materials & Lighting\",\n        \"Utilities Payments\",\n        \"Games & Utility Software\",\n        \"Food & Beverage\",\n        \"Pet Healthcare\",\n        \"Safety & Security\",\n        \"Large E-commerce Platforms\",\n        \"Party\",\n        \"Automobiles\",\n        \"Hotels & Accommodation\",\n        \"Tours & Attractions\",\n        \"Clothing Accessories\",\n        \"TV Variety Shows\",\n        \"Primary & Secondary Education & K-12\",\n        \"Social\",\n        \"Third-Party Payments\",\n        \"News & Entertainment\",\n        \"Other Health\",\n        \"Language Training\",\n        \"Commercial Banks\",\n        \"Apps\",\n        \"Recruitment & Job Searching\",\n        \"Non-academic Training (Hobbies)\",\n        \"Personal Care Appliances\",\n        \"Office Equipment & Supplies\",\n        \"Science & Technology\",\n        \"Toys for Kids\",\n        \"Strategy\",\n        \"Appliances\",\n        \"Car Information\",\n        \"Photography\",\n        \"Other Beauty & Personal Care\",\n        \"Computer Accessories\",\n        \"News & Reading\",\n        \"Live Events\",\n        \"Dating & Matchmaking Services\",\n        \"Other Education\",\n        \"Cell Phones\",\n        \"Culture & Art\",\n        \"Reading\",\n        \"Energy Conservation & Environmental Protection\",\n        \"Kids\",\n        \"Sports & Fitness\",\n        \"Other Financial Services\",\n        \"Tabletop\",\n        \"IT Services\",\n        \"Gifts & Flowers\",\n        \"Racing\",\n        \"Travel\",\n        \"Housekeeping\",\n        \"Fragrances & Perfumes\",\n        \"Auto Accessories\",\n        \"Pets\",\n        \"Other\",\n        \"RPG\",\n        \"Alcoholic Beverages\",\n        \"Baby Feeding Supplies\",\n        \"Precious Metals\",\n        \"Games\",\n        \"Credit Cards\",\n        \"High-end Jewelry\",\n        \"Beauty & Personal Care\",\n        \"Politics\",\n        \"Other Appliances\",\n        \"Financial Services\",\n        \"Cosmetics\",\n        \"Interior Design & Decorating Services\",\n        \"Car Dealerships\",\n        \"Hardware & Electrical\",\n        \"Auto Services\",\n        \"Astrology\",\n        \"Child Car Seats\",\n        \"Small & Medium-sized E-commerce Platforms\",\n        \"Social Media Account Promotion\",\n        \"Shopping Services\",\n        \"Accessories for 2/3-Wheeled Vehicles\",\n        \"Cleaning Appliances\",\n        \"Sports\",\n        \"Toys\",\n        \"Guarantees\",\n        \"Microfinance Companies\",\n        \"Ordinary Jewelry\",\n        \"Pest Control\",\n        \"Life & Leisure\",\n        \"Overseas Education\",\n        \"Medical Information\",\n        \"Computers Components\",\n        \"Insurance\",\n        \"Power Strips & Socket\",\n        \"Relationship Information\",\n        \"Exhibition Services\",\n        \"Vehicle & Transportation\",\n        \"Furniture\",\n        \"Celebrities & Gossip\",\n        \"Gardening\",\n        \"Pet Treats\",\n        \"Electric Scooters\",\n        \"Wig & Hair Styling\",\n        \"Coffee Accessories\",\n        \"Outdoor Equipment\",\n        \"Humor\",\n        \"Diapers & Baby Wipes\",\n        \"Cryptocurrencies\",\n        \"Home Appliances\",\n        \"Action\",\n        \"Agriculture, Forestry, Animal Husbandry & Fishing\",\n        \"Individual Entrepreneurship\",\n        \"Women's Shoes\",\n        \"Trusts\",\n        \"Laundry\",\n        \"Charity & Public Welfare\",\n        \"Wedding Celebrations\",\n        \"Other Baby, Kids & Maternity\",\n        \"Wearable Tech Devices\",\n        \"Other Food & Beverage\",\n        \"Other Business Services\",\n        \"Foreign Exchange Transactions\",\n        \"Dietary Supplements\",\n        \"Pet Travel Accessories\",\n        \"Electronics & Electrical\",\n        \"Franchising\",\n        \"Culture & History\",\n        \"Feminine Care\",\n        \"Movies\",\n        \"Non-alcoholic Beverages\",\n        \"Baby Formula\",\n        \"Photography\",\n        \"Parenting\",\n        \"Kitchen & Bathroom Appliances\",\n        \"Financial Services\",\n        \"Bags\",\n        \"Internet Services\",\n        \"Other Life Services\",\n        \"Baby, Kids & Maternity\",\n        \"Business & Productivity\",\n        \"Funds\",\n        \"Lifestyle News\",\n        \"Pet Grooming\",\n        \"Glasses & Drinkware\",\n        \"Machinery & Equipment\",\n        \"Cuisine\",\n        \"Baby Shoes\",\n        \"Collectables & Antiques\",\n        \"Law\",\n        \"Business Services\",\n        \"Tea Sets\",\n        \"Leather Care\",\n        \"Other Pets\",\n        \"Gaming Devices\",\n        \"Other Household Products\",\n        \"Consumer Services\",\n        \"Pawn Shops\",\n        \"Crowd Funding\",\n        \"Kitchen Accessories\",\n        \"Watches\",\n        \"Men's Clothing\",\n        \"Auto Parts\",\n        \"Service Outsourcing\",\n        \"Medicine\",\n        \"Baby Food\",\n        \"Other Travel\",\n        \"Beauty & Personal Care\",\n        \"Home Improvement\",\n        \"Other Apparel & Accessories\",\n        \"Other Tech & Electronics\",\n        \"Pet Information\",\n        \"Logistics\",\n        \"Online Shopping\",\n        \"Shooting\",\n        \"Other News & Entertainment\",\n        \"Chemical Materials\",\n        \"Baby Hygiene Products\",\n        \"Higher Education\",\n        \"Computer Repair\",\n        \"Big Box Retailers\",\n        \"Skincare\",\n        \"Health\",\n        \"Medical Services\",\n        \"Women's Clothing\"\n      ],\n      \"default\": \"all\",\n      \"prefill\": \"all\"\n    },\n    \"ccLanguage\": {\n      \"title\": \"Top Ads language\",\n      \"type\": \"string\",\n      \"description\": \"Ad language filter. (mode=creativeCenter or both)\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"en\",\n        \"es\",\n        \"ar\",\n        \"vi\",\n        \"th\",\n        \"de\",\n        \"id\",\n        \"pt\",\n        \"fr\",\n        \"ms\",\n        \"nl\",\n        \"ja\",\n        \"it\",\n        \"ro\",\n        \"zh-Hant\",\n        \"ko\"\n      ],\n      \"enumTitles\": [\n        \"All languages\",\n        \"English\",\n        \"Spanish\",\n        \"Arabic\",\n        \"Vietnamese\",\n        \"Thai\",\n        \"German\",\n        \"Indonesian\",\n        \"Portuguese\",\n        \"French\",\n        \"Malay\",\n        \"Dutch\",\n        \"Japanese\",\n        \"Italian\",\n        \"Romanian\",\n        \"Chinese (Traditional)\",\n        \"Korean\"\n      ],\n      \"default\": \"all\",\n      \"prefill\": \"all\"\n    },\n    \"ccSweep\": {\n      \"title\": \"Sweep Top Ads filters\",\n      \"type\": \"boolean\",\n      \"description\": \"Anonymous visitors see only 20 ads per filter combination. Sweeping periods, rankings, objectives and formats collects many more unique ads. (mode=creativeCenter or both)\",\n      \"default\": true,\n      \"prefill\": false\n    },\n    \"ccIncludeDetails\": {\n      \"title\": \"Fetch Top Ads details\",\n      \"type\": \"boolean\",\n      \"description\": \"Fetch each ad's landing page, comment and share counts. (mode=creativeCenter or both)\",\n      \"default\": true,\n      \"prefill\": false\n    }\n  },\n  \"required\": []\n}",
    "readme": "# TikTok DSA Ads Transparency Library Scraper\n\nSearch **TikTok's DSA ad transparency library** across 33 European markets and the global **Creative Center Top Ads** from one actor. Get ad creatives, advertiser identity, first/last shown dates, unique-user reach, age/gender targeting, CTAs, landing pages and Creative Center performance signals — with no TikTok account, cookies, API key or proxy setup.\n\n## What this actor does\n\n- **DSA library search** by keyword, exact advertiser name (optionally with its business ID), ad ID or a pasted library URL — in 33 EU/EEA/UK/CH/TR markets or all of them.\n- **Server-side filters** for ad type, active/inactive status, age, gender, unique reach and six sort orders, plus an exact-phrase option.\n- **Full ad detail** (optional): caption, CTA, landing page, advertising objective, registered advertiser, sponsor, linked TikTok account, per-country reach and age × gender breakdowns.\n- **Creative Center Top Ads** (optional): global markets, 7/30/180-day windows, ranking by For You/CTR/likes, objective/industry/language filters, video renditions, CTR, likes, cost tier and optional landing pages/comments/shares.\n- **Both sources in one run**, with a `source` field on every row.\n- **Count-only mode** for a quick number of matching DSA ads.\n- Fields a source does not disclose are omitted, never left as null or placeholders.\n\n## Output per ad\n\n**DSA library rows (`recordType: \"ad\"`, `source: \"tiktokAdsLibrary\"`)**\n\n- `adId`, `adUrl` — TikTok ad ID and its library detail page\n- `advertiserName`, `advertiserId`, `advertiserBusinessName`, `advertiserBusinessId`, `advertiserCountry`, `advertiserSponsor`\n- `advertiserTikTokUser` — linked TikTok account: `id`, `username`, `displayName`, `followers`, `accountType`, `avatarUrl`, `profileUrl`\n- `adTitle`, `adType`, `adFormat`, `showMode`, `adStartDate`, `adEndDate`, `daysActive`\n- `adImpressions`, `adImpressionsMin`, `adImpressionsMax`, `avgImpressionsPerDay`\n- `adVideoUrl`, `adVideoCover`, `adVideos`, `adImages` — working media URLs\n- `ctaText`, `advertisingObjective`, `landingPageUrl`\n- `auditStatus`, `auditStatusLabel`, `sorAuditStatus`, `rejectionInfo`, `auditReasons`\n- `targetingByLocation`, `adReachByCountry`, `targetingByAge`, `targetingByGender`, `targetAudienceSize`, `targetAudienceSizeMin`, `targetAudienceSizeMax`\n- `targetingCountries`, `targetingCities`, `targetingProvinces`, `targetingLanguages`, `targetingDeviceModels`, `targetingOperatingSystems`, `targetingHighSpendingPower`, `audienceTargeting`, `audienceExclude`\n- `interestTargeting`, `videoInteractionsTargeting`, `creatorInteractionsTargeting`, `displayMode`\n- `searchTotal`, `searchRegion`, `searchQueryType`, `detailsFetched`, `detailUnavailable`\n- `source: \"tiktokAdsLibrary\"`, `recordType: \"ad\"`, `scrapedAt`\n\n**Creative Center rows (`recordType: \"topAd\"`, `source: \"creativeCenter\"`)**\n\n- `adId`, `adUrl`, `adTitle`, `advertiserName`, `adType: \"video\"`\n- `adVideoUrl`, `adVideoCover`, `videoRenditions`, `videoDuration`, `videoWidth`, `videoHeight`\n- `ctr`, `likeCount`, `costTier`, `industryKey`, `industryName`, `objectiveKey`, `objectiveName`\n- `landingPageUrl`, `commentCount`, `shareCount`, `advertiserCountries`, `isSearchAd`, `ccSource`\n- `observedCountry`, `observedPeriod`, `source: \"creativeCenter\"`, `recordType: \"topAd\"`, `scrapedAt`\n\n**Count-only runs** emit one row with `recordType: \"summary\"` and `searchTotal`.\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `library` | `library`, `creativeCenter` or `both` |\n| `keyword` | string | `\"\"` | Keyword/advertiser text for a DSA search; empty = browse. |\n| `advertiserName` | string | – | Exact advertiser name; retried as a keyword if the exact search is empty. |\n| `advertiserId` | string | – | Optional business ID to disambiguate an advertiser search. |\n| `adIds` | array | `[]` | Direct ad IDs to open. |\n| `startUrls` | array | `[]` | TikTok library search or ad-detail URLs. Search URLs contribute their region, keyword/advertiser and date window. |\n| `region` | string | `all` | One of 33 country codes or `all`. |\n| `startDate` | string | – | Last-shown date from (`YYYY-MM-DD`); default one year ago. |\n| `endDate` | string | – | Last-shown date to (`YYYY-MM-DD`); default today. |\n| `sortBy` | string | `last_shown_date,desc` | One of six sort orders. |\n| `adType` | string | `all` | `all`, `video`, `image`, `text`. |\n| `adStatus` | string | `active` | `all`, `active`, `inactive`. |\n| `age` | array | `[]` | Any of `13-17`, `18-24`, `25-34`, `35-44`, `45-54`, `55+`. |\n| `gender` | string | `all` | `all`, `female`, `male`. |\n| `uniqueReach` | string | `all` | `all`, `under10k`, `10k-100k`, `over100k`. |\n| `exactPhrase` | boolean | `false` | Treat the keyword as an exact phrase. |\n| `includeDetails` | boolean | `true` | Enrich DSA ads from their detail pages. |\n| `countOnly` | boolean | `false` | Return one summary row with the matching total. |\n| `maxItems` | integer | `50` | Records per source (1–5,000). |\n| `ccCountry` | string | `US` | Creative Center market (28 options). |\n| `ccPeriod` | string | `30` | `7`, `30` or `180` days. |\n| `ccOrderBy` | string | `for_you` | `for_you`, `ctr` or `like`. |\n| `ccObjective` | string | `all` | `all` or one of eight campaign objectives. |\n| `ccIndustry` | string | `all` | `all` or one of 258 industries. |\n| `ccLanguage` | string | `all` | `all` or one of 16 languages. |\n| `ccSweep` | boolean | `true` | Sweep filter combinations to collect more than 20 unique top ads. |\n| `ccIncludeDetails` | boolean | `true` | Add landing pages, comments and shares. |\n\n### Example: keyword search in Germany with details\n\n```json\n{\n  \"mode\": \"library\",\n  \"keyword\": \"Nike\",\n  \"region\": \"DE\",\n  \"includeDetails\": true,\n  \"maxItems\": 25\n}\n```\n\n### Example: exact advertiser, all markets, image ads\n\n```json\n{\n  \"mode\": \"library\",\n  \"advertiserName\": \"NIKE Retail B.V.\",\n  \"region\": \"all\",\n  \"adType\": \"image\",\n  \"includeDetails\": true,\n  \"maxItems\": 100\n}\n```\n\n### Example: Creative Center top ads in the US\n\n```json\n{\n  \"mode\": \"creativeCenter\",\n  \"ccCountry\": \"US\",\n  \"ccPeriod\": \"180\",\n  \"ccOrderBy\": \"ctr\",\n  \"ccSweep\": true,\n  \"maxItems\": 100\n}\n```\n\n### Example: both sources\n\n```json\n{\n  \"mode\": \"both\",\n  \"keyword\": \"skincare\",\n  \"region\": \"FR\",\n  \"ccCountry\": \"FR\",\n  \"maxItems\": 50\n}\n```\n\n## Use cases\n\n- **Competitive intelligence** — see every ad a brand runs in Europe, with dates, reach and targeting.\n- **Creative research** — collect working video/image creatives and CTAs across markets.\n- **Compliance monitoring** — pull audit status, rejection details and advertiser identity.\n- **Market sizing** — compare unique-user bands and per-country reach for a category.\n- **Global trend spotting** — use Creative Center to find high-performing ads outside the EU.\n- **Advertiser due diligence** — check the registered business, sponsor and linked TikTok account.\n\n## FAQ\n\n**Do I need a TikTok account or cookies?**\nNo. Both sources are public. The actor opens TikTok's public pages once to establish an anonymous session; no login, cookie file or API key is involved.\n\n**How many DSA ads can one search return?**\nTikTok serves 12 ads per page and caps a single search at roughly 5,000 results. Split by country, date range or keyword to go deeper. The actor warns when it reaches the cap.\n\n**Why are some ads missing details?**\nTikTok marks some ads as unavailable or shows no detail data. Those rows keep their listing data and carry `detailUnavailable: true`. Detail pages are opened for at most 500 DSA ads and 200 Creative Center ads per run; rows beyond those limits keep their listing data.\n\n**Why are my video URLs sometimes expired?**\nTikTok's media URLs are signed and time-limited. The actor converts the library's wrapper URLs into working CDN URLs; download or re-host the files promptly if you need them long-term.\n\n**What is the difference between the DSA library and Creative Center?**\nThe DSA library is the EU transparency database: dates, reach, targeting and advertiser identity. Creative Center is a global showcase of high-performing ads with CTR/likes/video renditions, but no dates or targeting.\n\n**Why does Creative Center return only 20 ads?**\nAnonymous visitors get one page of 20 per filter combination. With `ccSweep` on, the actor sweeps periods, rankings, objectives and formats, deduplicates, and collects many more unique ads.\n\n**Can I search Creative Center by keyword?**\nNot reliably without a TikTok login. The actor does not offer a Creative Center keyword field; it sweeps the public Top Ads surface instead.\n\n**How do exact advertiser searches work?**\nTikTok matches the exact advertiser name (for example `NIKE Retail B.V.`). If that returns nothing, the actor retries the name as a keyword so you still get useful results.\n\n**Why do some fields stay empty?**\nTikTok does not disclose them for every ad — for example spend, exact impressions, cities or device targeting. Empty fields are omitted rather than filled with placeholders.\n\n**Is this affiliated with TikTok?**\nNo. This is an independent third-party actor that reads TikTok's public ad transparency library and Creative Center pages.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "tiktok-dsa-ads-transparency-library-scraper",
      "title": "TikTok DSA Ads Transparency Library Scraper",
      "description": "Search the TikTok DSA ad library in 33 European markets and the global Creative Center Top Ads. Get creatives, advertiser identity, dates, reach and targeting. No login, cookies or proxy setup.",
      "version": "1.0",
      "buildTag": "latest",
      "dockerfile": "./Dockerfile",
      "readme": "# TikTok DSA Ads Transparency Library Scraper\n\nSearch **TikTok's DSA ad transparency library** across 33 European markets and the global **Creative Center Top Ads** from one actor. Get ad creatives, advertiser identity, first/last shown dates, unique-user reach, age/gender targeting, CTAs, landing pages and Creative Center performance signals — with no TikTok account, cookies, API key or proxy setup.\n\n## What this actor does\n\n- **DSA library search** by keyword, exact advertiser name (optionally with its business ID), ad ID or a pasted library URL — in 33 EU/EEA/UK/CH/TR markets or all of them.\n- **Server-side filters** for ad type, active/inactive status, age, gender, unique reach and six sort orders, plus an exact-phrase option.\n- **Full ad detail** (optional): caption, CTA, landing page, advertising objective, registered advertiser, sponsor, linked TikTok account, per-country reach and age × gender breakdowns.\n- **Creative Center Top Ads** (optional): global markets, 7/30/180-day windows, ranking by For You/CTR/likes, objective/industry/language filters, video renditions, CTR, likes, cost tier and optional landing pages/comments/shares.\n- **Both sources in one run**, with a `source` field on every row.\n- **Count-only mode** for a quick number of matching DSA ads.\n- Fields a source does not disclose are omitted, never left as null or placeholders.\n\n## Output per ad\n\n**DSA library rows (`recordType: \"ad\"`, `source: \"tiktokAdsLibrary\"`)**\n\n- `adId`, `adUrl` — TikTok ad ID and its library detail page\n- `advertiserName`, `advertiserId`, `advertiserBusinessName`, `advertiserBusinessId`, `advertiserCountry`, `advertiserSponsor`\n- `advertiserTikTokUser` — linked TikTok account: `id`, `username`, `displayName`, `followers`, `accountType`, `avatarUrl`, `profileUrl`\n- `adTitle`, `adType`, `adFormat`, `showMode`, `adStartDate`, `adEndDate`, `daysActive`\n- `adImpressions`, `adImpressionsMin`, `adImpressionsMax`, `avgImpressionsPerDay`\n- `adVideoUrl`, `adVideoCover`, `adVideos`, `adImages` — working media URLs\n- `ctaText`, `advertisingObjective`, `landingPageUrl`\n- `auditStatus`, `auditStatusLabel`, `sorAuditStatus`, `rejectionInfo`, `auditReasons`\n- `targetingByLocation`, `adReachByCountry`, `targetingByAge`, `targetingByGender`, `targetAudienceSize`, `targetAudienceSizeMin`, `targetAudienceSizeMax`\n- `targetingCountries`, `targetingCities`, `targetingProvinces`, `targetingLanguages`, `targetingDeviceModels`, `targetingOperatingSystems`, `targetingHighSpendingPower`, `audienceTargeting`, `audienceExclude`\n- `interestTargeting`, `videoInteractionsTargeting`, `creatorInteractionsTargeting`, `displayMode`\n- `searchTotal`, `searchRegion`, `searchQueryType`, `detailsFetched`, `detailUnavailable`\n- `source: \"tiktokAdsLibrary\"`, `recordType: \"ad\"`, `scrapedAt`\n\n**Creative Center rows (`recordType: \"topAd\"`, `source: \"creativeCenter\"`)**\n\n- `adId`, `adUrl`, `adTitle`, `advertiserName`, `adType: \"video\"`\n- `adVideoUrl`, `adVideoCover`, `videoRenditions`, `videoDuration`, `videoWidth`, `videoHeight`\n- `ctr`, `likeCount`, `costTier`, `industryKey`, `industryName`, `objectiveKey`, `objectiveName`\n- `landingPageUrl`, `commentCount`, `shareCount`, `advertiserCountries`, `isSearchAd`, `ccSource`\n- `observedCountry`, `observedPeriod`, `source: \"creativeCenter\"`, `recordType: \"topAd\"`, `scrapedAt`\n\n**Count-only runs** emit one row with `recordType: \"summary\"` and `searchTotal`.\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `library` | `library`, `creativeCenter` or `both` |\n| `keyword` | string | `\"\"` | Keyword/advertiser text for a DSA search; empty = browse. |\n| `advertiserName` | string | – | Exact advertiser name; retried as a keyword if the exact search is empty. |\n| `advertiserId` | string | – | Optional business ID to disambiguate an advertiser search. |\n| `adIds` | array | `[]` | Direct ad IDs to open. |\n| `startUrls` | array | `[]` | TikTok library search or ad-detail URLs. Search URLs contribute their region, keyword/advertiser and date window. |\n| `region` | string | `all` | One of 33 country codes or `all`. |\n| `startDate` | string | – | Last-shown date from (`YYYY-MM-DD`); default one year ago. |\n| `endDate` | string | – | Last-shown date to (`YYYY-MM-DD`); default today. |\n| `sortBy` | string | `last_shown_date,desc` | One of six sort orders. |\n| `adType` | string | `all` | `all`, `video`, `image`, `text`. |\n| `adStatus` | string | `active` | `all`, `active`, `inactive`. |\n| `age` | array | `[]` | Any of `13-17`, `18-24`, `25-34`, `35-44`, `45-54`, `55+`. |\n| `gender` | string | `all` | `all`, `female`, `male`. |\n| `uniqueReach` | string | `all` | `all`, `under10k`, `10k-100k`, `over100k`. |\n| `exactPhrase` | boolean | `false` | Treat the keyword as an exact phrase. |\n| `includeDetails` | boolean | `true` | Enrich DSA ads from their detail pages. |\n| `countOnly` | boolean | `false` | Return one summary row with the matching total. |\n| `maxItems` | integer | `50` | Records per source (1–5,000). |\n| `ccCountry` | string | `US` | Creative Center market (28 options). |\n| `ccPeriod` | string | `30` | `7`, `30` or `180` days. |\n| `ccOrderBy` | string | `for_you` | `for_you`, `ctr` or `like`. |\n| `ccObjective` | string | `all` | `all` or one of eight campaign objectives. |\n| `ccIndustry` | string | `all` | `all` or one of 258 industries. |\n| `ccLanguage` | string | `all` | `all` or one of 16 languages. |\n| `ccSweep` | boolean | `true` | Sweep filter combinations to collect more than 20 unique top ads. |\n| `ccIncludeDetails` | boolean | `true` | Add landing pages, comments and shares. |\n\n### Example: keyword search in Germany with details\n\n```json\n{\n  \"mode\": \"library\",\n  \"keyword\": \"Nike\",\n  \"region\": \"DE\",\n  \"includeDetails\": true,\n  \"maxItems\": 25\n}\n```\n\n### Example: exact advertiser, all markets, image ads\n\n```json\n{\n  \"mode\": \"library\",\n  \"advertiserName\": \"NIKE Retail B.V.\",\n  \"region\": \"all\",\n  \"adType\": \"image\",\n  \"includeDetails\": true,\n  \"maxItems\": 100\n}\n```\n\n### Example: Creative Center top ads in the US\n\n```json\n{\n  \"mode\": \"creativeCenter\",\n  \"ccCountry\": \"US\",\n  \"ccPeriod\": \"180\",\n  \"ccOrderBy\": \"ctr\",\n  \"ccSweep\": true,\n  \"maxItems\": 100\n}\n```\n\n### Example: both sources\n\n```json\n{\n  \"mode\": \"both\",\n  \"keyword\": \"skincare\",\n  \"region\": \"FR\",\n  \"ccCountry\": \"FR\",\n  \"maxItems\": 50\n}\n```\n\n## Use cases\n\n- **Competitive intelligence** — see every ad a brand runs in Europe, with dates, reach and targeting.\n- **Creative research** — collect working video/image creatives and CTAs across markets.\n- **Compliance monitoring** — pull audit status, rejection details and advertiser identity.\n- **Market sizing** — compare unique-user bands and per-country reach for a category.\n- **Global trend spotting** — use Creative Center to find high-performing ads outside the EU.\n- **Advertiser due diligence** — check the registered business, sponsor and linked TikTok account.\n\n## FAQ\n\n**Do I need a TikTok account or cookies?**\nNo. Both sources are public. The actor opens TikTok's public pages once to establish an anonymous session; no login, cookie file or API key is involved.\n\n**How many DSA ads can one search return?**\nTikTok serves 12 ads per page and caps a single search at roughly 5,000 results. Split by country, date range or keyword to go deeper. The actor warns when it reaches the cap.\n\n**Why are some ads missing details?**\nTikTok marks some ads as unavailable or shows no detail data. Those rows keep their listing data and carry `detailUnavailable: true`. Detail pages are opened for at most 500 DSA ads and 200 Creative Center ads per run; rows beyond those limits keep their listing data.\n\n**Why are my video URLs sometimes expired?**\nTikTok's media URLs are signed and time-limited. The actor converts the library's wrapper URLs into working CDN URLs; download or re-host the files promptly if you need them long-term.\n\n**What is the difference between the DSA library and Creative Center?**\nThe DSA library is the EU transparency database: dates, reach, targeting and advertiser identity. Creative Center is a global showcase of high-performing ads with CTR/likes/video renditions, but no dates or targeting.\n\n**Why does Creative Center return only 20 ads?**\nAnonymous visitors get one page of 20 per filter combination. With `ccSweep` on, the actor sweeps periods, rankings, objectives and formats, deduplicates, and collects many more unique ads.\n\n**Can I search Creative Center by keyword?**\nNot reliably without a TikTok login. The actor does not offer a Creative Center keyword field; it sweeps the public Top Ads surface instead.\n\n**How do exact advertiser searches work?**\nTikTok matches the exact advertiser name (for example `NIKE Retail B.V.`). If that returns nothing, the actor retries the name as a keyword so you still get useful results.\n\n**Why do some fields stay empty?**\nTikTok does not disclose them for every ad — for example spend, exact impressions, cities or device targeting. Empty fields are omitted rather than filled with placeholders.\n\n**Is this affiliated with TikTok?**\nNo. This is an independent third-party actor that reads TikTok's public ad transparency library and Creative Center pages.\n",
      "input": {
        "title": "TikTok DSA Ads Transparency Library Input",
        "description": "Search the TikTok DSA ad library in 33 European markets and/or the global Creative Center Top Ads. No login, cookies or proxy setup needed.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Data source",
            "type": "string",
            "description": "`library` = TikTok DSA Commercial Content Library (EU/EEA/UK/CH/TR). `creativeCenter` = global Top Ads inspiration feed. `both` = run both and label every row with `source`.",
            "editor": "select",
            "enum": [
              "library",
              "creativeCenter",
              "both"
            ],
            "enumTitles": [
              "DSA ad library",
              "Creative Center Top Ads",
              "Both sources"
            ],
            "default": "library",
            "prefill": "library"
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Search ads by keyword or advertiser name. Leave empty to browse recent ads in the selected region. (mode=library)",
            "editor": "textfield",
            "default": "",
            "prefill": "Nike"
          },
          "advertiserName": {
            "title": "Exact advertiser name",
            "type": "string",
            "description": "Exact advertiser name as shown in the library, e.g. `NIKE Retail B.V.`. If the exact search finds nothing, the actor retries it as a keyword. (mode=library)",
            "editor": "textfield"
          },
          "advertiserId": {
            "title": "Advertiser business ID",
            "type": "string",
            "description": "Optional TikTok business ID (`adv_biz_ids`) to disambiguate an advertiser search. Use it with the exact advertiser name. (mode=library)",
            "editor": "textfield"
          },
          "adIds": {
            "title": "Ad IDs",
            "type": "array",
            "description": "Direct list of TikTok ad IDs. Skips search and opens each ad's detail page. (mode=library)",
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "startUrls": {
            "title": "TikTok library URLs",
            "type": "array",
            "description": "Paste TikTok library search or ad-detail URLs. Search URLs carry their own region, keyword/advertiser, dates and filters; detail URLs are read as ad IDs. (mode=library)",
            "editor": "requestListSources",
            "default": [],
            "prefill": []
          },
          "region": {
            "title": "Ad target country",
            "type": "string",
            "description": "TikTok DSA library covers EU/EEA countries plus the UK, Switzerland and Turkey. `all` searches the union (capped by TikTok), so split regions for deeper runs. (mode=library)",
            "editor": "select",
            "enum": [
              "all",
              "AT",
              "BE",
              "BG",
              "CH",
              "CY",
              "CZ",
              "DE",
              "DK",
              "EE",
              "ES",
              "FI",
              "FR",
              "GB",
              "GR",
              "HR",
              "HU",
              "IE",
              "IS",
              "IT",
              "LI",
              "LT",
              "LU",
              "LV",
              "MT",
              "NL",
              "NO",
              "PL",
              "PT",
              "RO",
              "SE",
              "SI",
              "SK",
              "TR"
            ],
            "enumTitles": [
              "All supported countries",
              "Austria",
              "Belgium",
              "Bulgaria",
              "Switzerland",
              "Cyprus",
              "Czech Republic",
              "Germany",
              "Denmark",
              "Estonia",
              "Spain",
              "Finland",
              "France",
              "United Kingdom",
              "Greece",
              "Croatia",
              "Hungary",
              "Ireland",
              "Iceland",
              "Italy",
              "Liechtenstein",
              "Lithuania",
              "Luxembourg",
              "Latvia",
              "Malta",
              "Netherlands",
              "Norway",
              "Poland",
              "Portugal",
              "Romania",
              "Sweden",
              "Slovenia",
              "Slovakia",
              "Turkey"
            ],
            "default": "all",
            "prefill": "DE"
          },
          "startDate": {
            "title": "Last shown from",
            "type": "string",
            "description": "Earliest last-shown date (`YYYY-MM-DD`). Default: one year ago. (mode=library)",
            "editor": "textfield"
          },
          "endDate": {
            "title": "Last shown to",
            "type": "string",
            "description": "Latest last-shown date (`YYYY-MM-DD`). Default: today. (mode=library)",
            "editor": "textfield"
          },
          "sortBy": {
            "title": "Sort by",
            "type": "string",
            "description": "Result order. (mode=library)",
            "editor": "select",
            "enum": [
              "last_shown_date,desc",
              "last_shown_date,asc",
              "create_time,desc",
              "create_time,asc",
              "impression,desc",
              "impression,asc"
            ],
            "enumTitles": [
              "Last shown — newest first",
              "Last shown — oldest first",
              "Created — newest first",
              "Created — oldest first",
              "Audience size — high to low",
              "Audience size — low to high"
            ],
            "default": "last_shown_date,desc",
            "prefill": "last_shown_date,desc"
          },
          "adType": {
            "title": "Ad type",
            "type": "string",
            "description": "Filter by creative type. (mode=library)",
            "editor": "select",
            "enum": [
              "all",
              "video",
              "image",
              "text"
            ],
            "enumTitles": [
              "All ad types",
              "Video",
              "Image",
              "Text"
            ],
            "default": "all",
            "prefill": "all"
          },
          "adStatus": {
            "title": "Ad status",
            "type": "string",
            "description": "Active ads are still being shown; inactive ads have stopped. (mode=library)",
            "editor": "select",
            "enum": [
              "all",
              "active",
              "inactive"
            ],
            "enumTitles": [
              "All statuses",
              "Active",
              "Inactive"
            ],
            "default": "active",
            "prefill": "active"
          },
          "age": {
            "title": "Audience age",
            "type": "array",
            "description": "Only ads targeted at any of these age groups: `13-17`, `18-24`, `25-34`, `35-44`, `45-54`, `55+`. Leave empty for all ages. (mode=library)",
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "gender": {
            "title": "Audience gender",
            "type": "string",
            "description": "Only ads targeted at this gender. (mode=library)",
            "editor": "select",
            "enum": [
              "all",
              "female",
              "male"
            ],
            "enumTitles": [
              "All genders",
              "Female",
              "Male"
            ],
            "default": "all",
            "prefill": "all"
          },
          "uniqueReach": {
            "title": "Unique reach",
            "type": "string",
            "description": "Filter by TikTok's unique-users-seen band. (mode=library)",
            "editor": "select",
            "enum": [
              "all",
              "under10k",
              "10k-100k",
              "over100k"
            ],
            "enumTitles": [
              "All reach bands",
              "Under 10K",
              "10K–100K",
              "Over 100K"
            ],
            "default": "all",
            "prefill": "all"
          },
          "exactPhrase": {
            "title": "Exact phrase",
            "type": "boolean",
            "description": "Treat the keyword as an exact phrase instead of individual words. (mode=library)",
            "default": false,
            "prefill": false
          },
          "includeDetails": {
            "title": "Fetch ad details",
            "type": "boolean",
            "description": "Open each ad's detail page for caption, CTA, landing page, advertiser identity and age/gender reach breakdown. Slower; recommended for smaller runs. (mode=library)",
            "default": true,
            "prefill": false
          },
          "countOnly": {
            "title": "Count only",
            "type": "boolean",
            "description": "Return one summary row with the number of matching ads instead of collecting ads. (mode=library)",
            "default": false,
            "prefill": false
          },
          "maxItems": {
            "title": "Max items",
            "type": "integer",
            "description": "Maximum records to collect per source (1–5,000). TikTok caps a single library search at about 5,000 results.",
            "minimum": 1,
            "maximum": 5000,
            "default": 50,
            "prefill": 3
          },
          "ccCountry": {
            "title": "Top Ads country",
            "type": "string",
            "description": "Creative Center market. (mode=creativeCenter or both)",
            "editor": "select",
            "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",
            "prefill": "US"
          },
          "ccPeriod": {
            "title": "Top Ads period",
            "type": "string",
            "description": "Performance window for Creative Center. (mode=creativeCenter or both)",
            "editor": "select",
            "enum": [
              "7",
              "30",
              "180"
            ],
            "enumTitles": [
              "Last 7 days",
              "Last 30 days",
              "Last 180 days"
            ],
            "default": "30",
            "prefill": "30"
          },
          "ccOrderBy": {
            "title": "Top Ads ranking",
            "type": "string",
            "description": "How Creative Center ranks ads. (mode=creativeCenter or both)",
            "editor": "select",
            "enum": [
              "for_you",
              "ctr",
              "like"
            ],
            "enumTitles": [
              "For You",
              "Click-through rate",
              "Likes"
            ],
            "default": "for_you",
            "prefill": "for_you"
          },
          "ccObjective": {
            "title": "Top Ads objective",
            "type": "string",
            "description": "Campaign objective filter. (mode=creativeCenter or both)",
            "editor": "select",
            "enum": [
              "all",
              "1",
              "2",
              "3",
              "4",
              "5",
              "8",
              "15",
              "16"
            ],
            "enumTitles": [
              "All objectives",
              "Traffic",
              "App Installs",
              "Conversions",
              "Video Views",
              "Reach",
              "Lead Generation",
              "Product sales",
              "App Promotion"
            ],
            "default": "all",
            "prefill": "all"
          },
          "ccIndustry": {
            "title": "Top Ads industry",
            "type": "string",
            "description": "Creative Center industry filter. 258 industries are available; leave `all` to sweep without an industry. (mode=creativeCenter or both)",
            "editor": "select",
            "enum": [
              "all",
              "label_11105000000",
              "label_18110000000",
              "label_25300000000",
              "label_22000000000",
              "label_24118000000",
              "label_23113000000",
              "label_23124000000",
              "label_20112000000",
              "label_24112000000",
              "label_18101000000",
              "label_19105000000",
              "label_14105000000",
              "label_20104000000",
              "label_27104000000",
              "label_25302000000",
              "label_12104000000",
              "label_15101000000",
              "label_24113000000",
              "label_18107000000",
              "label_23130000000",
              "label_26000000000",
              "label_15000000000",
              "label_17106000000",
              "label_19100000000",
              "label_23102000000",
              "label_25303000000",
              "label_19102000000",
              "label_23127000000",
              "label_13111000000",
              "label_14101000000",
              "label_24100000000",
              "label_26107000000",
              "label_23128000000",
              "label_20109000000",
              "label_24103000000",
              "label_20101000000",
              "label_13110000000",
              "label_25308000000",
              "label_21999000000",
              "label_22109000000",
              "label_20999000000",
              "label_27101000000",
              "label_28101000000",
              "label_13108000000",
              "label_23107000000",
              "label_11999000000",
              "label_23133000000",
              "label_21104000000",
              "label_11107000000",
              "label_16102000000",
              "label_15106000000",
              "label_24119000000",
              "label_18100000000",
              "label_13101000000",
              "label_11110000000",
              "label_22112000000",
              "label_24117000000",
              "label_26100000000",
              "label_28000000000",
              "label_23112000000",
              "label_10000000000",
              "label_10100000000",
              "label_12101000000",
              "label_23100000000",
              "label_25304000000",
              "label_23132000000",
              "label_30000000000",
              "label_11109000000",
              "label_14100000000",
              "label_18000000000",
              "label_11104000000",
              "label_11106000000",
              "label_23122000000",
              "label_10104000000",
              "label_12109000000",
              "label_20108000000",
              "label_26113000000",
              "label_15107000000",
              "label_16105000000",
              "label_21102000000",
              "label_26109000000",
              "label_23125000000",
              "label_27000000000",
              "label_19101000000",
              "label_24110000000",
              "label_30102000000",
              "label_25311000000",
              "label_11100000000",
              "label_17103000000",
              "label_17105000000",
              "label_22101000000",
              "label_23117000000",
              "label_10101000000",
              "label_20100000000",
              "label_13114000000",
              "label_23000000000",
              "label_29999000000",
              "label_10105000000",
              "label_13100000000",
              "label_20000000000",
              "label_24102000000",
              "label_10106000000",
              "label_16100000000",
              "label_24101000000",
              "label_23103000000",
              "label_12106000000",
              "label_25310000000",
              "label_16000000000",
              "label_23126000000",
              "label_26101000000",
              "label_14999000000",
              "label_15105000000",
              "label_20102000000",
              "label_23110000000",
              "label_26102000000",
              "label_10999000000",
              "label_15100000000",
              "label_23116000000",
              "label_23118000000",
              "label_24109000000",
              "label_25313000000",
              "label_23123000000",
              "label_13999000000",
              "label_25312000000",
              "label_24116000000",
              "label_26104000000",
              "label_25305000000",
              "label_17000000000",
              "label_26105000000",
              "label_14106000000",
              "label_11101000000",
              "label_19000000000",
              "label_25999000000",
              "label_25306000000",
              "label_27103000000",
              "label_12108000000",
              "label_13113000000",
              "label_25000000000",
              "label_13117000000",
              "label_22107000000",
              "label_26114000000",
              "label_23101000000",
              "label_16999000000",
              "label_20106000000",
              "label_14104000000",
              "label_21100000000",
              "label_11112000000",
              "label_21103000000",
              "label_11102000000",
              "label_23114000000",
              "label_12107000000",
              "label_30101000000",
              "label_23134000000",
              "label_26106000000",
              "label_11111000000",
              "label_18106000000",
              "label_25309000000",
              "label_18111000000",
              "label_13104000000",
              "label_13109000000",
              "label_22106000000",
              "label_18112000000",
              "label_20107000000",
              "label_10103000000",
              "label_29101000000",
              "label_15102000000",
              "label_13102000000",
              "label_21105000000",
              "label_23131000000",
              "label_24114000000",
              "label_11000000000",
              "label_21101000000",
              "label_23108000000",
              "label_26108000000",
              "label_19104000000",
              "label_11108000000",
              "label_14102000000",
              "label_18104000000",
              "label_28100000000",
              "label_23115000000",
              "label_12103000000",
              "label_13116000000",
              "label_16104000000",
              "label_25301000000",
              "label_24108000000",
              "label_24120000000",
              "label_22111000000",
              "label_13103000000",
              "label_18108000000",
              "label_23105000000",
              "label_26103000000",
              "label_12999000000",
              "label_22113000000",
              "label_27999000000",
              "label_24999000000",
              "label_13112000000",
              "label_29102000000",
              "label_19106000000",
              "label_24104000000",
              "label_24107000000",
              "label_23104000000",
              "label_14107000000",
              "label_23119000000",
              "label_27102000000",
              "label_12102000000",
              "label_20103000000",
              "label_20111000000",
              "label_16101000000",
              "label_13000000000",
              "label_22102000000",
              "label_26111000000",
              "label_26999000000",
              "label_12000000000",
              "label_20110000000",
              "label_13107000000",
              "label_23109000000",
              "label_19103000000",
              "label_18102000000",
              "label_24106000000",
              "label_27100000000",
              "label_12105000000",
              "label_23111000000",
              "label_23106000000",
              "label_24000000000",
              "label_18103000000",
              "label_18109000000",
              "label_19999000000",
              "label_15104000000",
              "label_18999000000",
              "label_26112000000",
              "label_13105000000",
              "label_13115000000",
              "label_18105000000",
              "label_22105000000",
              "label_22108000000",
              "label_11103000000",
              "label_24115000000",
              "label_29103000000",
              "label_12100000000",
              "label_17999000000",
              "label_14000000000",
              "label_21000000000",
              "label_22999000000",
              "label_15999000000",
              "label_23129000000",
              "label_24111000000",
              "label_20105000000",
              "label_25307000000",
              "label_23999000000",
              "label_24105000000",
              "label_12110000000",
              "label_10102000000",
              "label_15103000000",
              "label_30100000000",
              "label_14103000000",
              "label_29000000000",
              "label_29100000000",
              "label_22110000000"
            ],
            "enumTitles": [
              "All industries",
              "Used Cars",
              "Cleaning Supplies",
              "Hyper-Casual",
              "Apparel & Accessories",
              "Auction Services",
              "Anime",
              "Food & Cooking",
              "Utilities",
              "Marketing & Advertising",
              "Daily Essentials",
              "Pet Toys",
              "Aesthetic Medicine",
              "Education",
              "Cooking & Recipes",
              "Casino",
              "Baby Bedding",
              "Computers",
              "Professional Consultation",
              "Tissues & Wet Wipes",
              "Real Estate Information",
              "Life Services",
              "Tech & Electronics",
              "Travel Agencies & Services",
              "Petfood",
              "Business & Economy",
              "Match",
              "Pet Household Products",
              "General Information",
              "Loan Services",
              "Haircare",
              "Real Estate & Home Rentals",
              "Used Good Sales Platforms",
              "E-commerce Information",
              "Health & Fitness",
              "Constructional Engineering",
              "Audio & Video Players",
              "Investment Advisory",
              "Simulation",
              "Other Home Improvement",
              "Men's Shoes",
              "Other Apps",
              "Food & Fresh Produce",
              "Sports & Equipment",
              "Credit Bureaus",
              "Environmental Protection",
              "Other Vehicle & Transportation",
              "Tourist Information",
              "Home Decor",
              "Bicycles",
              "Large Appliances",
              "Network Products",
              "Investment Planning & Management",
              "Storage Products",
              "Securities",
              "Airplanes",
              "Traditional & Ceremonial Clothing",
              "Legal Services",
              "Wedding Photography",
              "Sports & Outdoor",
              "TV Drama & Series",
              "Education",
              "Early Childhood & Preschool Education",
              "Strollers & Cribs",
              "Military",
              "Puzzle",
              "Streaming Site",
              "E-Commerce (Non-app)",
              "Water Vehicles",
              "Oral Care",
              "Household Products",
              "Car Rentals",
              "Motorcycles",
              "Beauty & Personal Care",
              "Vocational Training",
              "Children's Apparel",
              "Travel",
              "Exercise & Fitness",
              "Office Equipment",
              "Digital Devices",
              "Construction Materials & Lighting",
              "Utilities Payments",
              "Games & Utility Software",
              "Food & Beverage",
              "Pet Healthcare",
              "Safety & Security",
              "Large E-commerce Platforms",
              "Party",
              "Automobiles",
              "Hotels & Accommodation",
              "Tours & Attractions",
              "Clothing Accessories",
              "TV Variety Shows",
              "Primary & Secondary Education & K-12",
              "Social",
              "Third-Party Payments",
              "News & Entertainment",
              "Other Health",
              "Language Training",
              "Commercial Banks",
              "Apps",
              "Recruitment & Job Searching",
              "Non-academic Training (Hobbies)",
              "Personal Care Appliances",
              "Office Equipment & Supplies",
              "Science & Technology",
              "Toys for Kids",
              "Strategy",
              "Appliances",
              "Car Information",
              "Photography",
              "Other Beauty & Personal Care",
              "Computer Accessories",
              "News & Reading",
              "Live Events",
              "Dating & Matchmaking Services",
              "Other Education",
              "Cell Phones",
              "Culture & Art",
              "Reading",
              "Energy Conservation & Environmental Protection",
              "Kids",
              "Sports & Fitness",
              "Other Financial Services",
              "Tabletop",
              "IT Services",
              "Gifts & Flowers",
              "Racing",
              "Travel",
              "Housekeeping",
              "Fragrances & Perfumes",
              "Auto Accessories",
              "Pets",
              "Other",
              "RPG",
              "Alcoholic Beverages",
              "Baby Feeding Supplies",
              "Precious Metals",
              "Games",
              "Credit Cards",
              "High-end Jewelry",
              "Beauty & Personal Care",
              "Politics",
              "Other Appliances",
              "Financial Services",
              "Cosmetics",
              "Interior Design & Decorating Services",
              "Car Dealerships",
              "Hardware & Electrical",
              "Auto Services",
              "Astrology",
              "Child Car Seats",
              "Small & Medium-sized E-commerce Platforms",
              "Social Media Account Promotion",
              "Shopping Services",
              "Accessories for 2/3-Wheeled Vehicles",
              "Cleaning Appliances",
              "Sports",
              "Toys",
              "Guarantees",
              "Microfinance Companies",
              "Ordinary Jewelry",
              "Pest Control",
              "Life & Leisure",
              "Overseas Education",
              "Medical Information",
              "Computers Components",
              "Insurance",
              "Power Strips & Socket",
              "Relationship Information",
              "Exhibition Services",
              "Vehicle & Transportation",
              "Furniture",
              "Celebrities & Gossip",
              "Gardening",
              "Pet Treats",
              "Electric Scooters",
              "Wig & Hair Styling",
              "Coffee Accessories",
              "Outdoor Equipment",
              "Humor",
              "Diapers & Baby Wipes",
              "Cryptocurrencies",
              "Home Appliances",
              "Action",
              "Agriculture, Forestry, Animal Husbandry & Fishing",
              "Individual Entrepreneurship",
              "Women's Shoes",
              "Trusts",
              "Laundry",
              "Charity & Public Welfare",
              "Wedding Celebrations",
              "Other Baby, Kids & Maternity",
              "Wearable Tech Devices",
              "Other Food & Beverage",
              "Other Business Services",
              "Foreign Exchange Transactions",
              "Dietary Supplements",
              "Pet Travel Accessories",
              "Electronics & Electrical",
              "Franchising",
              "Culture & History",
              "Feminine Care",
              "Movies",
              "Non-alcoholic Beverages",
              "Baby Formula",
              "Photography",
              "Parenting",
              "Kitchen & Bathroom Appliances",
              "Financial Services",
              "Bags",
              "Internet Services",
              "Other Life Services",
              "Baby, Kids & Maternity",
              "Business & Productivity",
              "Funds",
              "Lifestyle News",
              "Pet Grooming",
              "Glasses & Drinkware",
              "Machinery & Equipment",
              "Cuisine",
              "Baby Shoes",
              "Collectables & Antiques",
              "Law",
              "Business Services",
              "Tea Sets",
              "Leather Care",
              "Other Pets",
              "Gaming Devices",
              "Other Household Products",
              "Consumer Services",
              "Pawn Shops",
              "Crowd Funding",
              "Kitchen Accessories",
              "Watches",
              "Men's Clothing",
              "Auto Parts",
              "Service Outsourcing",
              "Medicine",
              "Baby Food",
              "Other Travel",
              "Beauty & Personal Care",
              "Home Improvement",
              "Other Apparel & Accessories",
              "Other Tech & Electronics",
              "Pet Information",
              "Logistics",
              "Online Shopping",
              "Shooting",
              "Other News & Entertainment",
              "Chemical Materials",
              "Baby Hygiene Products",
              "Higher Education",
              "Computer Repair",
              "Big Box Retailers",
              "Skincare",
              "Health",
              "Medical Services",
              "Women's Clothing"
            ],
            "default": "all",
            "prefill": "all"
          },
          "ccLanguage": {
            "title": "Top Ads language",
            "type": "string",
            "description": "Ad language filter. (mode=creativeCenter or both)",
            "editor": "select",
            "enum": [
              "all",
              "en",
              "es",
              "ar",
              "vi",
              "th",
              "de",
              "id",
              "pt",
              "fr",
              "ms",
              "nl",
              "ja",
              "it",
              "ro",
              "zh-Hant",
              "ko"
            ],
            "enumTitles": [
              "All languages",
              "English",
              "Spanish",
              "Arabic",
              "Vietnamese",
              "Thai",
              "German",
              "Indonesian",
              "Portuguese",
              "French",
              "Malay",
              "Dutch",
              "Japanese",
              "Italian",
              "Romanian",
              "Chinese (Traditional)",
              "Korean"
            ],
            "default": "all",
            "prefill": "all"
          },
          "ccSweep": {
            "title": "Sweep Top Ads filters",
            "type": "boolean",
            "description": "Anonymous visitors see only 20 ads per filter combination. Sweeping periods, rankings, objectives and formats collects many more unique ads. (mode=creativeCenter or both)",
            "default": true,
            "prefill": false
          },
          "ccIncludeDetails": {
            "title": "Fetch Top Ads details",
            "type": "boolean",
            "description": "Fetch each ad's landing page, comment and share counts. (mode=creativeCenter or both)",
            "default": true,
            "prefill": false
          }
        },
        "required": []
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "TikTok Ads Library + Creative Center Output",
        "description": "One row per TikTok DSA ad or Creative Center top ad, with creatives, advertiser identity, dates, reach, targeting and performance signals.",
        "properties": {
          "ads": {
            "type": "string",
            "title": "TikTok ads",
            "description": "Dataset containing all scraped TikTok DSA ads and Creative Center top ads.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "categories": [
        "SOCIAL_MEDIA"
      ],
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "title": "TikTok Ads",
          "views": {
            "overview": {
              "title": "TikTok Ads",
              "transformation": {
                "fields": [
                  "adId",
                  "source",
                  "advertiserName",
                  "adTitle",
                  "adType",
                  "adImpressions",
                  "adStartDate",
                  "adEndDate",
                  "ctr",
                  "likeCount",
                  "adUrl"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "adId": {
                    "label": "Ad ID",
                    "format": "text"
                  },
                  "source": {
                    "label": "Source",
                    "format": "text"
                  },
                  "advertiserName": {
                    "label": "Advertiser",
                    "format": "text"
                  },
                  "adTitle": {
                    "label": "Ad caption/title",
                    "format": "text"
                  },
                  "adType": {
                    "label": "Ad type",
                    "format": "text"
                  },
                  "adImpressions": {
                    "label": "Unique users seen",
                    "format": "text"
                  },
                  "adStartDate": {
                    "label": "First shown",
                    "format": "text"
                  },
                  "adEndDate": {
                    "label": "Last shown",
                    "format": "text"
                  },
                  "ctr": {
                    "label": "CTR",
                    "format": "number"
                  },
                  "likeCount": {
                    "label": "Likes",
                    "format": "number"
                  },
                  "adUrl": {
                    "label": "Ad URL",
                    "format": "link"
                  }
                }
              }
            },
            "detailed": {
              "title": "Detailed ads",
              "transformation": {
                "fields": [
                  "adId",
                  "source",
                  "recordType",
                  "advertiserName",
                  "adTitle",
                  "adType",
                  "adFormat",
                  "adStartDate",
                  "adEndDate",
                  "daysActive",
                  "adImpressions",
                  "adImpressionsMin",
                  "adImpressionsMax",
                  "auditStatusLabel",
                  "ctaText",
                  "advertisingObjective",
                  "landingPageUrl",
                  "advertiserBusinessName",
                  "advertiserCountry",
                  "advertiserSponsor",
                  "targetAudienceSize",
                  "targetingCountries",
                  "adUrl"
                ]
              }
            },
            "creativeCenter": {
              "title": "Creative Center Top Ads",
              "transformation": {
                "fields": [
                  "adId",
                  "advertiserName",
                  "adTitle",
                  "ctr",
                  "likeCount",
                  "costTier",
                  "industryName",
                  "objectiveName",
                  "observedCountry",
                  "observedPeriod",
                  "adVideoUrl",
                  "adUrl"
                ]
              }
            }
          },
          "fields": {
            "recordType": {
              "type": "string",
              "title": "Record Type",
              "description": "`ad` for a DSA library ad, `topAd` for a Creative Center top ad, `summary` for count-only runs."
            },
            "source": {
              "type": "string",
              "title": "Source",
              "description": "`tiktokAdsLibrary` or `creativeCenter`."
            },
            "adId": {
              "type": "string",
              "title": "Ad ID",
              "description": "TikTok ad ID."
            },
            "adUrl": {
              "type": "string",
              "title": "Ad URL",
              "description": "Link to the ad's TikTok page."
            },
            "advertiserName": {
              "type": "string",
              "title": "Advertiser",
              "description": "Advertiser or brand name."
            },
            "advertiserId": {
              "type": "string",
              "title": "Advertiser ID",
              "description": "TikTok business ID when disclosed."
            },
            "adTitle": {
              "type": "string",
              "title": "Ad caption/title",
              "description": "Ad caption or headline."
            },
            "adType": {
              "type": "string",
              "title": "Ad type",
              "description": "`video`, `image` or `text`."
            },
            "adFormat": {
              "type": "string",
              "title": "Ad format",
              "description": "`single_video`, `image`, `carousel` or `spark_ad` when TikTok discloses it."
            },
            "showMode": {
              "type": "integer",
              "title": "Show mode",
              "description": "Raw TikTok show_mode code."
            },
            "adVideoUrl": {
              "type": "string",
              "title": "Video URL",
              "description": "Working video CDN URL (decoded from TikTok's library wrapper)."
            },
            "adVideoUrlOriginal": {
              "type": "string",
              "title": "Original video URL",
              "description": "TikTok's original library video URL, kept for traceability."
            },
            "adVideoCover": {
              "type": "string",
              "title": "Video cover",
              "description": "Cover image URL."
            },
            "adVideos": {
              "type": "array",
              "title": "Ad videos",
              "description": "All video renditions for carousel ads, each with `videoUrl`, optional `coverImage` and `videoUrlOriginal`."
            },
            "videoRenditions": {
              "type": "object",
              "title": "Video renditions",
              "description": "Creative Center video URLs keyed by resolution (360p–1080p)."
            },
            "videoDuration": {
              "type": "number",
              "title": "Video duration",
              "description": "Creative Center video length in seconds."
            },
            "videoWidth": {
              "type": "integer",
              "title": "Video width",
              "description": "Creative Center video width in pixels."
            },
            "videoHeight": {
              "type": "integer",
              "title": "Video height",
              "description": "Creative Center video height in pixels."
            },
            "adImages": {
              "type": "array",
              "title": "Ad images",
              "description": "Image creative URLs."
            },
            "adStartDate": {
              "type": "string",
              "title": "First shown",
              "description": "First date the ad was shown (YYYY-MM-DD)."
            },
            "adEndDate": {
              "type": "string",
              "title": "Last shown",
              "description": "Last date the ad was shown (YYYY-MM-DD)."
            },
            "daysActive": {
              "type": "integer",
              "title": "Days active",
              "description": "Inclusive days between first and last shown dates."
            },
            "adImpressions": {
              "type": "string",
              "title": "Unique users seen",
              "description": "TikTok's estimate bucket (e.g. `10K-100K`)."
            },
            "adImpressionsMin": {
              "type": "integer",
              "title": "Impressions lower bound",
              "description": "Numeric lower bound of the bucket."
            },
            "adImpressionsMax": {
              "type": "integer",
              "title": "Impressions upper bound",
              "description": "Numeric upper bound of the bucket."
            },
            "avgImpressionsPerDay": {
              "type": "integer",
              "title": "Avg impressions/day",
              "description": "Lower-bound bucket divided by daysActive."
            },
            "adImpressionsExact": {
              "type": "integer",
              "title": "Exact impressions",
              "description": "Exact count when TikTok discloses it (normally empty)."
            },
            "adSpent": {
              "type": "string",
              "title": "Spend",
              "description": "Disclosed spend when TikTok publishes it (normally empty)."
            },
            "auditStatus": {
              "type": "string",
              "title": "Audit status",
              "description": "Raw TikTok audit code."
            },
            "auditStatusLabel": {
              "type": "string",
              "title": "Audit status label",
              "description": "`approved`, `rejected`, `in_review` or `removed`."
            },
            "sorAuditStatus": {
              "type": "string",
              "title": "SOR audit status",
              "description": "TikTok's statement-of-reasons audit code."
            },
            "rejectionInfo": {
              "type": "object",
              "title": "Rejection info",
              "description": "Rejection details when the ad was rejected."
            },
            "auditReasons": {
              "type": "array",
              "title": "Audit reasons",
              "description": "Additional audit reason codes/text."
            },
            "advertiserBusinessName": {
              "type": "string",
              "title": "Registered advertiser",
              "description": "Registered business name."
            },
            "advertiserBusinessId": {
              "type": "string",
              "title": "Business ID",
              "description": "Registered business ID."
            },
            "advertiserCountry": {
              "type": "string",
              "title": "Registry country",
              "description": "Advertiser's registered country."
            },
            "advertiserSponsor": {
              "type": "string",
              "title": "Paid for by",
              "description": "Sponsor/payer name when different from the advertiser."
            },
            "advertiserTikTokUser": {
              "type": "object",
              "title": "TikTok account",
              "description": "Linked TikTok account: id/username/displayName/followers/accountType/avatar/profile."
            },
            "advertiserIndustry": {
              "type": "string",
              "title": "Advertiser industry",
              "description": "Industry when the source provides it."
            },
            "advertiserCountries": {
              "type": "array",
              "title": "Creative Center countries",
              "description": "Countries returned by the Creative Center detail endpoint."
            },
            "adLanguages": {
              "type": "array",
              "title": "Ad languages",
              "description": "Languages carried by the search listing, when present."
            },
            "ctaText": {
              "type": "string",
              "title": "Call to action",
              "description": "CTA button text."
            },
            "advertisingObjective": {
              "type": "string",
              "title": "Advertising objective",
              "description": "Campaign objective (e.g. Traffic, Sales)."
            },
            "landingPageUrl": {
              "type": "string",
              "title": "Landing page",
              "description": "External website linked from the ad."
            },
            "adPlatforms": {
              "type": "array",
              "title": "Platforms",
              "description": "Platforms the ad ran on, when listed."
            },
            "creativeId": {
              "type": "string",
              "title": "Creative ID",
              "description": "Creative identifier when present."
            },
            "creativeName": {
              "type": "string",
              "title": "Creative name",
              "description": "Creative name when present."
            },
            "dataSource": {
              "type": "string",
              "title": "Data source label",
              "description": "Source-provided data label when present."
            },
            "commercialContentIndicator": {
              "type": "boolean",
              "title": "Commercial content",
              "description": "Commercial-content indicator when present."
            },
            "targetingByLocation": {
              "type": "array",
              "title": "Targeting by location",
              "description": "Rows of `{region, impressions}`."
            },
            "adReachByCountry": {
              "type": "array",
              "title": "Reach by country",
              "description": "Per-country reach with age × gender breakdowns."
            },
            "targetingTotalRegions": {
              "type": "integer",
              "title": "Targeted regions",
              "description": "Number of targeted regions."
            },
            "targetingTotalImpressions": {
              "type": "string",
              "title": "Total reach",
              "description": "Total unique-users-seen bucket."
            },
            "targetingByAge": {
              "type": "array",
              "title": "Targeting by age",
              "description": "Per-region targeted age buckets."
            },
            "targetingByGender": {
              "type": "array",
              "title": "Targeting by gender",
              "description": "Per-region targeted genders."
            },
            "targetAudienceSize": {
              "type": "string",
              "title": "Target audience size",
              "description": "Estimated audience size bucket."
            },
            "targetAudienceSizeMin": {
              "type": "integer",
              "title": "Audience size lower",
              "description": "Numeric lower bound."
            },
            "targetAudienceSizeMax": {
              "type": "integer",
              "title": "Audience size upper",
              "description": "Numeric upper bound."
            },
            "audienceTargeting": {
              "type": "string",
              "title": "Audience targeting",
              "description": "TikTok's audience include/exclude flag."
            },
            "audienceExclude": {
              "type": "string",
              "title": "Audience exclude",
              "description": "Whether the audience is excluded."
            },
            "interestTargeting": {
              "type": "string",
              "title": "Interest targeting",
              "description": "Interest categories when disclosed."
            },
            "videoInteractionsTargeting": {
              "type": "string",
              "title": "Video interactions",
              "description": "Video-interaction targeting when disclosed."
            },
            "creatorInteractionsTargeting": {
              "type": "string",
              "title": "Creator interactions",
              "description": "Creator-interaction targeting when disclosed."
            },
            "targetingCountries": {
              "type": "array",
              "title": "Targeted countries",
              "description": "Country codes explicitly targeted."
            },
            "targetingCities": {
              "type": "array",
              "title": "Targeted cities",
              "description": "Cities explicitly targeted."
            },
            "targetingProvinces": {
              "type": "array",
              "title": "Targeted provinces",
              "description": "Provinces/regions explicitly targeted."
            },
            "targetingLanguages": {
              "type": "array",
              "title": "Targeted languages",
              "description": "Languages explicitly targeted."
            },
            "targetingDeviceModels": {
              "type": "array",
              "title": "Targeted devices",
              "description": "Device models explicitly targeted."
            },
            "targetingOperatingSystems": {
              "type": "array",
              "title": "Targeted operating systems",
              "description": "Operating systems explicitly targeted."
            },
            "targetingHighSpendingPower": {
              "type": "string",
              "title": "High spending power",
              "description": "TikTok's high-spending-power flag."
            },
            "displayMode": {
              "type": "string",
              "title": "Display mode",
              "description": "TikTok detail page display mode."
            },
            "searchTotal": {
              "type": "integer",
              "title": "Search total",
              "description": "TikTok's reported total for the search."
            },
            "searchRegion": {
              "type": "string",
              "title": "Search region",
              "description": "Region used for this row."
            },
            "searchQueryType": {
              "type": "string",
              "title": "Search type",
              "description": "`keyword`, `advertiser` or `browse`."
            },
            "detailsFetched": {
              "type": "boolean",
              "title": "Details fetched",
              "description": "True when the detail record was merged."
            },
            "detailUnavailable": {
              "type": "boolean",
              "title": "Detail unavailable",
              "description": "True when TikTok had no detail data for the ad."
            },
            "ctr": {
              "type": "number",
              "title": "CTR",
              "description": "Creative Center click-through rate (0–1)."
            },
            "likeCount": {
              "type": "integer",
              "title": "Likes",
              "description": "Creative Center like count."
            },
            "costTier": {
              "type": "integer",
              "title": "Cost tier",
              "description": "Creative Center budget tier code (0/1)."
            },
            "industryKey": {
              "type": "string",
              "title": "Industry key",
              "description": "Creative Center industry key."
            },
            "industryName": {
              "type": "string",
              "title": "Industry",
              "description": "Creative Center industry name."
            },
            "objectiveKey": {
              "type": "string",
              "title": "Objective key",
              "description": "Creative Center objective key."
            },
            "objectiveName": {
              "type": "string",
              "title": "Objective",
              "description": "Creative Center objective name."
            },
            "commentCount": {
              "type": "integer",
              "title": "Comments",
              "description": "Creative Center comment count."
            },
            "shareCount": {
              "type": "integer",
              "title": "Shares",
              "description": "Creative Center share count."
            },
            "isSearchAd": {
              "type": "boolean",
              "title": "Search placement",
              "description": "Creative Center `is_search` flag."
            },
            "ccSource": {
              "type": "string",
              "title": "Creative Center source",
              "description": "Source label from the Creative Center detail endpoint."
            },
            "observedCountry": {
              "type": "string",
              "title": "Observed country",
              "description": "Creative Center country used for this row."
            },
            "observedPeriod": {
              "type": "integer",
              "title": "Observed period",
              "description": "Creative Center period in days."
            },
            "scrapedAt": {
              "type": "string",
              "title": "Scraped at",
              "description": "ISO 8601 UTC collection time."
            }
          }
        }
      }
    },
    "buildNumber": "1.0.3",
    "imageDigest": "dee42713067e9244f3518d87b95d9ca9e96adf8af7dbfb660689ad2c53aa21df",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.03575
    }
  }
}