{
  "data": {
    "id": "prhya8gN9RuRfH4g7",
    "actId": "9wEoeBWrpFtgDeTGz",
    "userId": "IYgBDiXtHOijAaUel",
    "startedAt": "2026-10-25T07:48:35.091Z",
    "finishedAt": "2026-10-25T07:48:39.851Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 4696,
      "runTimeSecs": 4.696,
      "computeUnits": 0.005217777777777778,
      "imageSizeBytes": 358176256
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "QYo53EZkJk0prePWY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Google Ads Transparency Scraper Input\",\n  \"description\": \"Scrape Google Ads Transparency Center ads by advertiser URL or ID, domain, brand or keyword search, or a single creative.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"description\": \"Which kind of lookup to run.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"advertiser\",\n        \"domain\",\n        \"search\",\n        \"creative\"\n      ],\n      \"enumTitles\": [\n        \"Advertiser (URL or AR... ID)\",\n        \"Domain (all advertisers linked to a domain)\",\n        \"Search (brand or keyword)\",\n        \"Creative (single ad URL or ID)\"\n      ],\n      \"default\": \"advertiser\",\n      \"prefill\": \"advertiser\"\n    },\n    \"advertiserUrl\": {\n      \"title\": \"Advertiser URL\",\n      \"type\": \"string\",\n      \"description\": \"Advertiser or creative URL from adstransparency.google.com (mode=advertiser or creative).\",\n      \"editor\": \"textfield\",\n      \"prefill\": \"https://adstransparency.google.com/advertiser/AR16735076323512287233\"\n    },\n    \"advertiserId\": {\n      \"title\": \"Advertiser ID\",\n      \"type\": \"string\",\n      \"description\": \"Google advertiser ID starting with AR (mode=advertiser or creative).\",\n      \"editor\": \"textfield\"\n    },\n    \"domain\": {\n      \"title\": \"Domain\",\n      \"type\": \"string\",\n      \"description\": \"Domain to search across every advertiser Google links to it (mode=domain), e.g. nike.com.\",\n      \"editor\": \"textfield\"\n    },\n    \"searchQuery\": {\n      \"title\": \"Search query\",\n      \"type\": \"string\",\n      \"description\": \"Brand name or keyword resolved through Google's advertiser suggestions (mode=search).\",\n      \"editor\": \"textfield\"\n    },\n    \"startUrls\": {\n      \"title\": \"Start URLs\",\n      \"type\": \"array\",\n      \"description\": \"Additional advertiser or creative URLs (mode=advertiser or creative), as {url} request-list objects.\",\n      \"editor\": \"requestListSources\",\n      \"default\": [],\n      \"prefill\": [],\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"url\": {\n            \"title\": \"URL\",\n            \"description\": \"Advertiser or creative URL from adstransparency.google.com.\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"url\"\n        ]\n      }\n    },\n    \"creativeId\": {\n      \"title\": \"Creative ID\",\n      \"type\": \"string\",\n      \"description\": \"Google creative ID starting with CR (mode=creative). Also provide advertiserId or advertiserUrl.\",\n      \"editor\": \"textfield\"\n    },\n    \"region\": {\n      \"title\": \"Region\",\n      \"type\": \"string\",\n      \"description\": \"Only return ads shown in this country. 'anywhere' applies no region filter. Required when political is enabled.\",\n      \"default\": \"anywhere\",\n      \"prefill\": \"anywhere\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"anywhere\",\n        \"AL\",\n        \"DZ\",\n        \"AS\",\n        \"AD\",\n        \"AO\",\n        \"AQ\",\n        \"AG\",\n        \"AR\",\n        \"AM\",\n        \"AU\",\n        \"AT\",\n        \"AZ\",\n        \"BH\",\n        \"BD\",\n        \"BB\",\n        \"BY\",\n        \"BE\",\n        \"BZ\",\n        \"BJ\",\n        \"BT\",\n        \"BO\",\n        \"BA\",\n        \"BW\",\n        \"BR\",\n        \"BN\",\n        \"BG\",\n        \"BF\",\n        \"BI\",\n        \"KH\",\n        \"CM\",\n        \"CA\",\n        \"CV\",\n        \"BQ\",\n        \"CF\",\n        \"TD\",\n        \"CL\",\n        \"CN\",\n        \"CX\",\n        \"CC\",\n        \"CO\",\n        \"KM\",\n        \"CK\",\n        \"CR\",\n        \"CI\",\n        \"HR\",\n        \"CW\",\n        \"CY\",\n        \"CZ\",\n        \"CD\",\n        \"DK\",\n        \"DJ\",\n        \"DM\",\n        \"DO\",\n        \"EC\",\n        \"EG\",\n        \"SV\",\n        \"GQ\",\n        \"ER\",\n        \"EE\",\n        \"SZ\",\n        \"ET\",\n        \"FM\",\n        \"FJ\",\n        \"FI\",\n        \"FR\",\n        \"PF\",\n        \"TF\",\n        \"GA\",\n        \"GE\",\n        \"DE\",\n        \"GH\",\n        \"GR\",\n        \"GD\",\n        \"GU\",\n        \"GT\",\n        \"GG\",\n        \"GN\",\n        \"GW\",\n        \"GY\",\n        \"HT\",\n        \"HM\",\n        \"HN\",\n        \"HU\",\n        \"IS\",\n        \"IN\",\n        \"ID\",\n        \"IQ\",\n        \"IE\",\n        \"IL\",\n        \"IT\",\n        \"JM\",\n        \"JP\",\n        \"JE\",\n        \"JO\",\n        \"KZ\",\n        \"KE\",\n        \"KI\",\n        \"KW\",\n        \"KG\",\n        \"LA\",\n        \"LV\",\n        \"LB\",\n        \"LS\",\n        \"LR\",\n        \"LY\",\n        \"LI\",\n        \"LT\",\n        \"LU\",\n        \"MG\",\n        \"MW\",\n        \"MY\",\n        \"MV\",\n        \"MT\",\n        \"ML\",\n        \"MH\",\n        \"MR\",\n        \"MU\",\n        \"MX\",\n        \"MD\",\n        \"MC\",\n        \"MN\",\n        \"ME\",\n        \"MA\",\n        \"MZ\",\n        \"MM\",\n        \"NA\",\n        \"NR\",\n        \"NP\",\n        \"NL\",\n        \"NC\",\n        \"NZ\",\n        \"NI\",\n        \"NE\",\n        \"NG\",\n        \"NU\",\n        \"NF\",\n        \"MK\",\n        \"MP\",\n        \"NO\",\n        \"OM\",\n        \"PK\",\n        \"PW\",\n        \"PA\",\n        \"PG\",\n        \"PY\",\n        \"PE\",\n        \"PH\",\n        \"PN\",\n        \"PL\",\n        \"PT\",\n        \"QA\",\n        \"CG\",\n        \"RO\",\n        \"RW\",\n        \"SH\",\n        \"KN\",\n        \"LC\",\n        \"PM\",\n        \"VC\",\n        \"WS\",\n        \"SM\",\n        \"ST\",\n        \"SA\",\n        \"SN\",\n        \"SC\",\n        \"SL\",\n        \"SG\",\n        \"SX\",\n        \"SK\",\n        \"SI\",\n        \"SB\",\n        \"SO\",\n        \"ZA\",\n        \"GS\",\n        \"KR\",\n        \"ES\",\n        \"LK\",\n        \"SR\",\n        \"CH\",\n        \"SE\",\n        \"TJ\",\n        \"TZ\",\n        \"TH\",\n        \"BS\",\n        \"GM\",\n        \"TL\",\n        \"TG\",\n        \"TK\",\n        \"TO\",\n        \"TT\",\n        \"TN\",\n        \"TR\",\n        \"TM\",\n        \"TV\",\n        \"UG\",\n        \"UA\",\n        \"AE\",\n        \"GB\",\n        \"US\",\n        \"UY\",\n        \"UZ\",\n        \"VU\",\n        \"VA\",\n        \"VE\",\n        \"VN\",\n        \"YE\",\n        \"ZM\",\n        \"ZW\",\n        \"BM\",\n        \"BV\",\n        \"IO\",\n        \"VG\",\n        \"KY\",\n        \"TW\",\n        \"YT\",\n        \"FO\",\n        \"FK\",\n        \"GF\",\n        \"PS\",\n        \"GI\",\n        \"GL\",\n        \"GP\",\n        \"HK\",\n        \"IM\",\n        \"MO\",\n        \"MQ\",\n        \"MS\",\n        \"AW\",\n        \"PR\",\n        \"RE\",\n        \"AI\",\n        \"EH\",\n        \"SJ\",\n        \"TC\",\n        \"UM\",\n        \"VI\",\n        \"WF\"\n      ],\n      \"enumTitles\": [\n        \"Anywhere (no filter)\",\n        \"Albania (AL)\",\n        \"Algeria (DZ)\",\n        \"American Samoa (AS)\",\n        \"Andorra (AD)\",\n        \"Angola (AO)\",\n        \"Antarctica (AQ)\",\n        \"Antigua and Barbuda (AG)\",\n        \"Argentina (AR)\",\n        \"Armenia (AM)\",\n        \"Australia (AU)\",\n        \"Austria (AT)\",\n        \"Azerbaijan (AZ)\",\n        \"Bahrain (BH)\",\n        \"Bangladesh (BD)\",\n        \"Barbados (BB)\",\n        \"Belarus (BY)\",\n        \"Belgium (BE)\",\n        \"Belize (BZ)\",\n        \"Benin (BJ)\",\n        \"Bhutan (BT)\",\n        \"Bolivia (BO)\",\n        \"Bosnia and Herzegovina (BA)\",\n        \"Botswana (BW)\",\n        \"Brazil (BR)\",\n        \"Brunei (BN)\",\n        \"Bulgaria (BG)\",\n        \"Burkina Faso (BF)\",\n        \"Burundi (BI)\",\n        \"Cambodia (KH)\",\n        \"Cameroon (CM)\",\n        \"Canada (CA)\",\n        \"Cape Verde (CV)\",\n        \"Caribbean Netherlands (BQ)\",\n        \"Central African Republic (CF)\",\n        \"Chad (TD)\",\n        \"Chile (CL)\",\n        \"China (CN)\",\n        \"Christmas Island (CX)\",\n        \"Cocos Islands (CC)\",\n        \"Colombia (CO)\",\n        \"Comoros (KM)\",\n        \"Cook Islands (CK)\",\n        \"Costa Rica (CR)\",\n        \"Ivory Coast (CI)\",\n        \"Croatia (HR)\",\n        \"Curacao (CW)\",\n        \"Cyprus (CY)\",\n        \"Czech Republic (CZ)\",\n        \"DR Congo (CD)\",\n        \"Denmark (DK)\",\n        \"Djibouti (DJ)\",\n        \"Dominica (DM)\",\n        \"Dominican Republic (DO)\",\n        \"Ecuador (EC)\",\n        \"Egypt (EG)\",\n        \"El Salvador (SV)\",\n        \"Equatorial Guinea (GQ)\",\n        \"Eritrea (ER)\",\n        \"Estonia (EE)\",\n        \"Eswatini (SZ)\",\n        \"Ethiopia (ET)\",\n        \"Micronesia (FM)\",\n        \"Fiji (FJ)\",\n        \"Finland (FI)\",\n        \"France (FR)\",\n        \"French Polynesia (PF)\",\n        \"French Southern Territories (TF)\",\n        \"Gabon (GA)\",\n        \"Georgia (GE)\",\n        \"Germany (DE)\",\n        \"Ghana (GH)\",\n        \"Greece (GR)\",\n        \"Grenada (GD)\",\n        \"Guam (GU)\",\n        \"Guatemala (GT)\",\n        \"Guernsey (GG)\",\n        \"Guinea (GN)\",\n        \"Guinea-Bissau (GW)\",\n        \"Guyana (GY)\",\n        \"Haiti (HT)\",\n        \"Heard Island (HM)\",\n        \"Honduras (HN)\",\n        \"Hungary (HU)\",\n        \"Iceland (IS)\",\n        \"India (IN)\",\n        \"Indonesia (ID)\",\n        \"Iraq (IQ)\",\n        \"Ireland (IE)\",\n        \"Israel (IL)\",\n        \"Italy (IT)\",\n        \"Jamaica (JM)\",\n        \"Japan (JP)\",\n        \"Jersey (JE)\",\n        \"Jordan (JO)\",\n        \"Kazakhstan (KZ)\",\n        \"Kenya (KE)\",\n        \"Kiribati (KI)\",\n        \"Kuwait (KW)\",\n        \"Kyrgyzstan (KG)\",\n        \"Laos (LA)\",\n        \"Latvia (LV)\",\n        \"Lebanon (LB)\",\n        \"Lesotho (LS)\",\n        \"Liberia (LR)\",\n        \"Libya (LY)\",\n        \"Liechtenstein (LI)\",\n        \"Lithuania (LT)\",\n        \"Luxembourg (LU)\",\n        \"Madagascar (MG)\",\n        \"Malawi (MW)\",\n        \"Malaysia (MY)\",\n        \"Maldives (MV)\",\n        \"Malta (MT)\",\n        \"Mali (ML)\",\n        \"Marshall Islands (MH)\",\n        \"Mauritania (MR)\",\n        \"Mauritius (MU)\",\n        \"Mexico (MX)\",\n        \"Moldova (MD)\",\n        \"Monaco (MC)\",\n        \"Mongolia (MN)\",\n        \"Montenegro (ME)\",\n        \"Morocco (MA)\",\n        \"Mozambique (MZ)\",\n        \"Myanmar (MM)\",\n        \"Namibia (NA)\",\n        \"Nauru (NR)\",\n        \"Nepal (NP)\",\n        \"Netherlands (NL)\",\n        \"New Caledonia (NC)\",\n        \"New Zealand (NZ)\",\n        \"Nicaragua (NI)\",\n        \"Niger (NE)\",\n        \"Nigeria (NG)\",\n        \"Niue (NU)\",\n        \"Norfolk Island (NF)\",\n        \"North Macedonia (MK)\",\n        \"Northern Mariana Islands (MP)\",\n        \"Norway (NO)\",\n        \"Oman (OM)\",\n        \"Pakistan (PK)\",\n        \"Palau (PW)\",\n        \"Panama (PA)\",\n        \"Papua New Guinea (PG)\",\n        \"Paraguay (PY)\",\n        \"Peru (PE)\",\n        \"Philippines (PH)\",\n        \"Pitcairn Islands (PN)\",\n        \"Poland (PL)\",\n        \"Portugal (PT)\",\n        \"Qatar (QA)\",\n        \"Republic of the Congo (CG)\",\n        \"Romania (RO)\",\n        \"Rwanda (RW)\",\n        \"Saint Helena (SH)\",\n        \"Saint Kitts and Nevis (KN)\",\n        \"Saint Lucia (LC)\",\n        \"Saint Pierre and Miquelon (PM)\",\n        \"Saint Vincent (VC)\",\n        \"Samoa (WS)\",\n        \"San Marino (SM)\",\n        \"Sao Tome and Principe (ST)\",\n        \"Saudi Arabia (SA)\",\n        \"Senegal (SN)\",\n        \"Seychelles (SC)\",\n        \"Sierra Leone (SL)\",\n        \"Singapore (SG)\",\n        \"Sint Maarten (SX)\",\n        \"Slovakia (SK)\",\n        \"Slovenia (SI)\",\n        \"Solomon Islands (SB)\",\n        \"Somalia (SO)\",\n        \"South Africa (ZA)\",\n        \"South Georgia (GS)\",\n        \"South Korea (KR)\",\n        \"Spain (ES)\",\n        \"Sri Lanka (LK)\",\n        \"Suriname (SR)\",\n        \"Switzerland (CH)\",\n        \"Sweden (SE)\",\n        \"Tajikistan (TJ)\",\n        \"Tanzania (TZ)\",\n        \"Thailand (TH)\",\n        \"Bahamas (BS)\",\n        \"Gambia (GM)\",\n        \"Timor-Leste (TL)\",\n        \"Togo (TG)\",\n        \"Tokelau (TK)\",\n        \"Tonga (TO)\",\n        \"Trinidad and Tobago (TT)\",\n        \"Tunisia (TN)\",\n        \"Turkey (TR)\",\n        \"Turkmenistan (TM)\",\n        \"Tuvalu (TV)\",\n        \"Uganda (UG)\",\n        \"Ukraine (UA)\",\n        \"United Arab Emirates (AE)\",\n        \"United Kingdom (GB)\",\n        \"United States (US)\",\n        \"Uruguay (UY)\",\n        \"Uzbekistan (UZ)\",\n        \"Vanuatu (VU)\",\n        \"Vatican City (VA)\",\n        \"Venezuela (VE)\",\n        \"Vietnam (VN)\",\n        \"Yemen (YE)\",\n        \"Zambia (ZM)\",\n        \"Zimbabwe (ZW)\",\n        \"Bermuda (BM)\",\n        \"Bouvet Island (BV)\",\n        \"British Indian Ocean Territory (IO)\",\n        \"British Virgin Islands (VG)\",\n        \"Cayman Islands (KY)\",\n        \"Taiwan (TW)\",\n        \"Mayotte (YT)\",\n        \"Faroe Islands (FO)\",\n        \"Falkland Islands (FK)\",\n        \"French Guiana (GF)\",\n        \"Palestine (PS)\",\n        \"Gibraltar (GI)\",\n        \"Greenland (GL)\",\n        \"Guadeloupe (GP)\",\n        \"Hong Kong (HK)\",\n        \"Isle of Man (IM)\",\n        \"Macau (MO)\",\n        \"Martinique (MQ)\",\n        \"Montserrat (MS)\",\n        \"Aruba (AW)\",\n        \"Puerto Rico (PR)\",\n        \"Reunion (RE)\",\n        \"Anguilla (AI)\",\n        \"Western Sahara (EH)\",\n        \"Svalbard and Jan Mayen (SJ)\",\n        \"Turks and Caicos (TC)\",\n        \"US Minor Outlying Islands (UM)\",\n        \"US Virgin Islands (VI)\",\n        \"Wallis and Futuna (WF)\"\n      ]\n    },\n    \"format\": {\n      \"title\": \"Ad format\",\n      \"type\": \"string\",\n      \"description\": \"Restrict to one creative format. Leave empty for all formats.\",\n      \"editor\": \"select\",\n      \"nullable\": true,\n      \"enum\": [\n        \"TEXT\",\n        \"IMAGE\",\n        \"VIDEO\"\n      ],\n      \"enumTitles\": [\n        \"Text\",\n        \"Image\",\n        \"Video\"\n      ]\n    },\n    \"platform\": {\n      \"title\": \"Platform\",\n      \"type\": \"string\",\n      \"description\": \"Restrict to one Google surface. Leave empty for all platforms.\",\n      \"editor\": \"select\",\n      \"nullable\": true,\n      \"enum\": [\n        \"PLAY\",\n        \"MAPS\",\n        \"SEARCH\",\n        \"SHOPPING\",\n        \"YOUTUBE\"\n      ],\n      \"enumTitles\": [\n        \"Google Play\",\n        \"Google Maps\",\n        \"Google Search\",\n        \"Google Shopping\",\n        \"YouTube\"\n      ]\n    },\n    \"political\": {\n      \"title\": \"Political and issue ads only\",\n      \"type\": \"boolean\",\n      \"description\": \"Return only political or issue ads. Google requires a country region for this filter.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"startDate\": {\n      \"title\": \"Shown on or after (YYYY-MM-DD)\",\n      \"type\": \"string\",\n      \"description\": \"Client-side date filter applied to the fetched slice. Leave empty for no lower bound.\",\n      \"editor\": \"textfield\",\n      \"nullable\": true\n    },\n    \"endDate\": {\n      \"title\": \"Shown on or before (YYYY-MM-DD)\",\n      \"type\": \"string\",\n      \"description\": \"Client-side date filter applied to the fetched slice. Leave empty for no upper bound.\",\n      \"editor\": \"textfield\",\n      \"nullable\": true\n    },\n    \"maxAdsPerAdvertiser\": {\n      \"title\": \"Max ads per advertiser\",\n      \"type\": \"integer\",\n      \"description\": \"Per-advertiser cap (1-1000). The run also stops at maxItems.\",\n      \"minimum\": 1,\n      \"maximum\": 1000,\n      \"default\": 20,\n      \"prefill\": 1\n    },\n    \"maxItems\": {\n      \"title\": \"Max items\",\n      \"type\": \"integer\",\n      \"description\": \"Total ads to emit across all targets (1-1000).\",\n      \"minimum\": 1,\n      \"maximum\": 1000,\n      \"default\": 50,\n      \"prefill\": 1\n    },\n    \"includeDetails\": {\n      \"title\": \"Include creative details\",\n      \"type\": \"boolean\",\n      \"description\": \"Fetch per-creative detail and preview content for copy, media and region stats. Disable for a faster list-only run.\",\n      \"default\": true,\n      \"prefill\": true\n    },\n    \"proxyConfiguration\": {\n      \"title\": \"Proxy configuration\",\n      \"type\": \"object\",\n      \"description\": \"Optional proxy override. The actor uses an Apify automatic proxy by default.\",\n      \"editor\": \"proxy\",\n      \"default\": {\n        \"useApifyProxy\": true\n      },\n      \"prefill\": {\n        \"useApifyProxy\": true\n      }\n    }\n  },\n  \"required\": [\n    \"mode\"\n  ]\n}",
    "readme": "# Google Ads Transparency Advertiser & Creative Scraper\r\n\r\nScrape **Google Ads Transparency Center** ad creatives for a single advertiser, every advertiser linked to a domain, a brand or keyword search, or one specific creative. Each record carries the advertiser identity, ad format, first and last shown dates, ad copy or product details, media previews, region stats, and impression ranges when Google exposes them. The data is public: no Google account, cookies, or login are required.\r\n\r\n## What this actor does\r\n\r\n- **Four lookup modes:** `advertiser` (URL or `AR...` ID), `domain` (all advertisers linked to a domain), `search` (brand name or keyword), and `creative` (one ad URL or `CR...` ID).\r\n- **Server-side filters:** country `region`, ad `format` (text, image, video), `platform` (Play, Maps, Search, Shopping, YouTube), and a `political` toggle for political and issue ads.\r\n- **Complete creative history:** cursor pagination at 100 ads per page, up to 1,000 unique ads per run.\r\n- **Rich per-ad detail:** headline, description, display domain, Shopping product title and brand, preview image, video poster, YouTube link, region stats, and impression bounds when available.\r\n- **Client-side date filtering:** `startDate` and `endDate` narrow the fetched slice; Google exposes no date-range parameter for anonymous searches.\r\n- **Clean records:** fields that Google does not expose are omitted rather than returned as `null`, empty strings, or empty arrays.\r\n\r\n## Output per ad\r\n\r\n- `advertiserId`, `advertiserName` - Google's advertiser ID and display name.\r\n- `advertiserCountry`, `advertiserLegalName`, `advertiserVerified` - advertiser metadata when Google returns it.\r\n- `advertiserAdCountMin`, `advertiserAdCountMax` - the advertiser's total ad-count range when available.\r\n- `creativeId`, `adId` - Google's unique ID for the creative.\r\n- `format` - `TEXT`, `IMAGE`, or `VIDEO`.\r\n- `firstShown`, `lastShown` - first and last dates Google recorded the ad as active (YYYY-MM-DD).\r\n- `headline`, `description`, `body` - text-ad copy when the creative exposes it.\r\n- `callToAction` - call-to-action text when present.\r\n- `displayDomain`, `landingUrl` - display domain, and a full landing URL only when Google exposes one.\r\n- `productTitle`, `productBrand` - Shopping/image ad product details.\r\n- `imageUrl`, `imageUrls` - image creative or Shopping product image URLs.\r\n- `previewUrl` - a preview or media link for the creative.\r\n- `posterUrl` - video poster image.\r\n- `youtubeUrl` - stable YouTube link when the video exposes a YouTube ID.\r\n- `videoUrl`, `videoUrlExpiresAt` - direct video file when Google exposes one; signed, IP-bound, and short-lived.\r\n- `regions`, `regionStats` - country codes and per-region dates/impressions/platform stats for the creative.\r\n- `impressionsMin`, `impressionsMax` - impression bounds when Google returns them.\r\n- `platforms`, `platform` - Google surfaces reported for the creative.\r\n- `adLibraryUrl`, `sourceUrl` - direct Ads Transparency Center links.\r\n- `source` - data source identifier (`google_ads_transparency`).\r\n- `startUrl`, `searchTerm` - the input URL or search term that produced the record, when applicable.\r\n- `recordType`, `scrapedAt` - record type and fetch timestamp.\r\n\r\n## Input\r\n\r\n| Field | Type | Default | Description |\r\n|---|---|---|---|\r\n| `mode` | string | `advertiser` | `advertiser` / `domain` / `search` / `creative`. |\r\n| `advertiserUrl` | string | - | Advertiser or creative Transparency Center URL (mode=`advertiser` or `creative`). |\r\n| `advertiserId` | string | - | Google advertiser ID beginning with `AR` (mode=`advertiser` or `creative`). |\r\n| `domain` | string | - | Domain to search across all linked advertisers, e.g. `nike.com` (mode=`domain`). |\r\n| `searchQuery` | string | - | Brand name or keyword resolved through Google's advertiser suggestions (mode=`search`). |\r\n| `startUrls` | array | `[]` | Additional advertiser or creative URLs as Apify `{ \"url\": \"...\" }` request-list objects. |\r\n| `creativeId` | string | - | Google creative ID beginning with `CR` (mode=`creative`); also set `advertiserId` or `advertiserUrl`. |\r\n| `region` | string | `anywhere` | Country where the ad was shown; `anywhere` applies no filter. Required when `political` is on. |\r\n| `format` | string | - | `TEXT`, `IMAGE`, or `VIDEO`; leave empty for all formats. |\r\n| `platform` | string | - | `PLAY`, `MAPS`, `SEARCH`, `SHOPPING`, or `YOUTUBE`; leave empty for all platforms. |\r\n| `political` | boolean | `false` | Return only political and issue ads. Requires a country `region`. |\r\n| `startDate` | string | - | Only ads with activity on or after this date (YYYY-MM-DD); applied to the fetched slice. |\r\n| `endDate` | string | - | Only ads with activity on or before this date (YYYY-MM-DD); applied to the fetched slice. |\r\n| `maxAdsPerAdvertiser` | integer | `20` | Per-advertiser cap, 1-1000. In domain mode it applies to each advertiser found. |\r\n| `maxItems` | integer | `50` | Total ads to emit, 1-1000. |\r\n| `includeDetails` | boolean | `true` | Fetch per-creative detail and preview content. Turn off for a faster list-only run. |\r\n| `proxyConfiguration` | object | Apify automatic proxy | Optional proxy override; the actor uses an Apify proxy by default. |\r\n\r\n## Example: scrape one advertiser\r\n\r\n```json\r\n{\r\n  \"mode\": \"advertiser\",\r\n  \"advertiserUrl\": \"https://adstransparency.google.com/advertiser/AR16735076323512287233\",\r\n  \"maxAdsPerAdvertiser\": 50,\r\n  \"maxItems\": 50,\r\n  \"includeDetails\": true\r\n}\r\n```\r\n\r\n## Example: find every advertiser using a domain, US image ads only\r\n\r\n```json\r\n{\r\n  \"mode\": \"domain\",\r\n  \"domain\": \"nike.com\",\r\n  \"region\": \"US\",\r\n  \"format\": \"IMAGE\",\r\n  \"maxAdsPerAdvertiser\": 25,\r\n  \"maxItems\": 100\r\n}\r\n```\r\n\r\n## Example: search a brand, video ads shown in 2024\r\n\r\n```json\r\n{\r\n  \"mode\": \"search\",\r\n  \"searchQuery\": \"Nike\",\r\n  \"region\": \"GB\",\r\n  \"platform\": \"YOUTUBE\",\r\n  \"startDate\": \"2024-01-01\",\r\n  \"endDate\": \"2024-12-31\",\r\n  \"maxItems\": 50\r\n}\r\n```\r\n\r\n## Example: inspect one creative\r\n\r\n```json\r\n{\r\n  \"mode\": \"creative\",\r\n  \"advertiserId\": \"AR16735076323512287233\",\r\n  \"creativeId\": \"CR17471063371053793281\"\r\n}\r\n```\r\n\r\n## Example output\r\n\r\n```json\r\n{\r\n  \"advertiserId\": \"AR16735076323512287233\",\r\n  \"advertiserName\": \"Nike, Inc.\",\r\n  \"advertiserCountry\": \"US\",\r\n  \"creativeId\": \"CR17471063371053793281\",\r\n  \"format\": \"TEXT\",\r\n  \"firstShown\": \"2024-03-09\",\r\n  \"lastShown\": \"2026-10-24\",\r\n  \"headline\": \"Nike Official Site\",\r\n  \"description\": \"Shop the latest Nike styles.\",\r\n  \"body\": \"Shop the latest Nike styles.\",\r\n  \"displayDomain\": \"nike.com\",\r\n  \"regions\": [\"CA\"],\r\n  \"previewUrl\": \"https://tpc.googlesyndication.com/archive/simgad/6265887525695880208\",\r\n  \"adLibraryUrl\": \"https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR17471063371053793281\",\r\n  \"source\": \"google_ads_transparency\",\r\n  \"recordType\": \"ad\",\r\n  \"scrapedAt\": \"2026-10-25T12:00:00+00:00\"\r\n}\r\n```\r\n\r\n```json\r\n{\r\n  \"advertiserId\": \"AR16735076323512287233\",\r\n  \"advertiserName\": \"Nike, Inc.\",\r\n  \"creativeId\": \"CR13237700337168547841\",\r\n  \"format\": \"IMAGE\",\r\n  \"productTitle\": \"Nike Club Fleece Hoodie\",\r\n  \"productBrand\": \"Nike\",\r\n  \"imageUrl\": \"https://encrypted-tbn2.gstatic.com/shopping?q=tbn:ANd9GcExample\",\r\n  \"displayDomain\": \"nike.com\",\r\n  \"regions\": [\"US\"],\r\n  \"impressionsMin\": 1000,\r\n  \"impressionsMax\": 2000,\r\n  \"source\": \"google_ads_transparency\",\r\n  \"recordType\": \"ad\",\r\n  \"scrapedAt\": \"2026-10-25T12:00:00+00:00\"\r\n}\r\n```\r\n\r\n## Use cases\r\n\r\n- **Competitive ad monitoring** - track which creatives a competitor is running and how long they have been live.\r\n- **Creative research** - collect text, image, and video ad examples by brand, country, or platform.\r\n- **Media buying intelligence** - see which surfaces and regions a brand invests in.\r\n- **Compliance review** - check where an advertiser's ads were recorded as shown.\r\n- **Agency reporting** - build a prospect's ad history into an audit or pitch deck.\r\n- **Dataset building** - export normalised ad creatives for analysis or model training.\r\n\r\n## Limits and caveats\r\n\r\n- **1,000-ad cap:** the actor reads 100 ads per page and stops at 1,000 unique ads per run, even if Google reports more for the advertiser or domain.\r\n- **Date filtering is client-side:** Google does not expose an anonymous date-range parameter, so `startDate` and `endDate` only filter the slice the actor fetched. It may miss older ads outside that slice.\r\n- **Impressions are partial:** impression ranges appear for political/issue ads and some display creatives, not for every ad.\r\n- **Regions are partial:** `regions` reflects the per-creative stats Google returns, which is often one country and sometimes a longer subset. It is not a complete targeting list.\r\n- **Video URLs expire:** direct `videoUrl` links are signed, tied to the resolving IP, and expire in about a day. Use `youtubeUrl` or `posterUrl` when you need a stable reference.\r\n- **Copy is conditional:** most text ads expose a headline, description, and display domain; some do not. Image and video creatives usually have no text copy.\r\n- **Anonymous results:** Google may show fewer ads to logged-out visitors than to signed-in users. This is a source limitation, not a missing filter.\r\n- **Domain results span advertisers:** a domain search can return ads from several advertisers (brand owners, regional entities, and agencies). `maxAdsPerAdvertiser` applies to each one separately.\r\n- **Political ads need a country:** Google's political/issue filter requires a concrete `region`; `anywhere` is rejected for that mode.\r\n\r\n## FAQ\r\n\r\n### What is the difference between the four modes?\r\n\r\n`advertiser` takes an advertiser URL or `AR...` ID and returns that advertiser's creatives. `domain` searches all advertisers Google links to a domain. `search` resolves a brand or keyword to the best-matching advertiser and scrapes it. `creative` fetches one specific ad by URL or `CR...` ID.\r\n\r\n### What is the difference between domain mode and search mode?\r\n\r\nDomain mode queries Google by domain and returns ads from every associated advertiser. Search mode uses Google's advertiser suggestions and picks the best match for a name or keyword, which is useful when you do not know the domain.\r\n\r\n### Why are impressions missing on many ads?\r\n\r\nGoogle only publishes impression ranges for some creatives, mainly political/issue ads and certain display ads. When the field is absent, the source did not return a range; the actor does not estimate it.\r\n\r\n### How many ads can I get per advertiser?\r\n\r\nUp to 1,000 unique ads per run, read 100 at a time. Use `maxAdsPerAdvertiser` to cap each advertiser and `maxItems` to cap the whole run.\r\n\r\n### Do the date filters search Google's full history?\r\n\r\nNo. Google does not expose a date-range parameter for anonymous searches. The actor filters the ads it fetched using their first and last shown dates. A narrow date window combined with a low `maxItems` can therefore miss older ads.\r\n\r\n### Why do some records have no headline or description?\r\n\r\nGoogle's preview content only exposes text copy for some text creatives. Image and video ads generally have no text copy. Missing fields are omitted from the record.\r\n\r\n### Why does a video URL stop working?\r\n\r\nDirect video files are signed to the IP that resolved them and expire quickly. Prefer `youtubeUrl` for a stable link, or `posterUrl` for a still image.\r\n\r\n### Do I need a Google account, cookies, or a proxy?\r\n\r\nNo account or cookies are needed. The actor uses an Apify proxy automatically; `proxyConfiguration` is only an optional override.\r\n\r\n### Is this affiliated with Google?\r\n\r\nNo. This is an independent third-party actor that reads the publicly accessible Google Ads Transparency Center. It is not affiliated with or endorsed by Google.\r\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "google-ads-advertiser-creative-history-scraper",
      "title": "Google Ads Advertiser Creative History Scraper",
      "description": "Scrape Google Ads Transparency Center by advertiser URL or AR ID, domain, brand keyword or single creative. Returns ad copy, display domains, formats, media previews, first/last shown dates, regions and impression ranges when Google exposes them.",
      "version": "1.2",
      "meta": {
        "templateId": "python-start"
      },
      "input": {
        "title": "Google Ads Transparency Scraper Input",
        "description": "Scrape Google Ads Transparency Center ads by advertiser URL or ID, domain, brand or keyword search, or a single creative.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "description": "Which kind of lookup to run.",
            "editor": "select",
            "enum": [
              "advertiser",
              "domain",
              "search",
              "creative"
            ],
            "enumTitles": [
              "Advertiser (URL or AR... ID)",
              "Domain (all advertisers linked to a domain)",
              "Search (brand or keyword)",
              "Creative (single ad URL or ID)"
            ],
            "default": "advertiser",
            "prefill": "advertiser"
          },
          "advertiserUrl": {
            "title": "Advertiser URL",
            "type": "string",
            "description": "Advertiser or creative URL from adstransparency.google.com (mode=advertiser or creative).",
            "editor": "textfield",
            "prefill": "https://adstransparency.google.com/advertiser/AR16735076323512287233"
          },
          "advertiserId": {
            "title": "Advertiser ID",
            "type": "string",
            "description": "Google advertiser ID starting with AR (mode=advertiser or creative).",
            "editor": "textfield"
          },
          "domain": {
            "title": "Domain",
            "type": "string",
            "description": "Domain to search across every advertiser Google links to it (mode=domain), e.g. nike.com.",
            "editor": "textfield"
          },
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Brand name or keyword resolved through Google's advertiser suggestions (mode=search).",
            "editor": "textfield"
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Additional advertiser or creative URLs (mode=advertiser or creative), as {url} request-list objects.",
            "editor": "requestListSources",
            "default": [],
            "prefill": [],
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "title": "URL",
                  "description": "Advertiser or creative URL from adstransparency.google.com.",
                  "type": "string"
                }
              },
              "required": [
                "url"
              ]
            }
          },
          "creativeId": {
            "title": "Creative ID",
            "type": "string",
            "description": "Google creative ID starting with CR (mode=creative). Also provide advertiserId or advertiserUrl.",
            "editor": "textfield"
          },
          "region": {
            "title": "Region",
            "type": "string",
            "description": "Only return ads shown in this country. 'anywhere' applies no region filter. Required when political is enabled.",
            "default": "anywhere",
            "prefill": "anywhere",
            "editor": "select",
            "enum": [
              "anywhere",
              "AL",
              "DZ",
              "AS",
              "AD",
              "AO",
              "AQ",
              "AG",
              "AR",
              "AM",
              "AU",
              "AT",
              "AZ",
              "BH",
              "BD",
              "BB",
              "BY",
              "BE",
              "BZ",
              "BJ",
              "BT",
              "BO",
              "BA",
              "BW",
              "BR",
              "BN",
              "BG",
              "BF",
              "BI",
              "KH",
              "CM",
              "CA",
              "CV",
              "BQ",
              "CF",
              "TD",
              "CL",
              "CN",
              "CX",
              "CC",
              "CO",
              "KM",
              "CK",
              "CR",
              "CI",
              "HR",
              "CW",
              "CY",
              "CZ",
              "CD",
              "DK",
              "DJ",
              "DM",
              "DO",
              "EC",
              "EG",
              "SV",
              "GQ",
              "ER",
              "EE",
              "SZ",
              "ET",
              "FM",
              "FJ",
              "FI",
              "FR",
              "PF",
              "TF",
              "GA",
              "GE",
              "DE",
              "GH",
              "GR",
              "GD",
              "GU",
              "GT",
              "GG",
              "GN",
              "GW",
              "GY",
              "HT",
              "HM",
              "HN",
              "HU",
              "IS",
              "IN",
              "ID",
              "IQ",
              "IE",
              "IL",
              "IT",
              "JM",
              "JP",
              "JE",
              "JO",
              "KZ",
              "KE",
              "KI",
              "KW",
              "KG",
              "LA",
              "LV",
              "LB",
              "LS",
              "LR",
              "LY",
              "LI",
              "LT",
              "LU",
              "MG",
              "MW",
              "MY",
              "MV",
              "MT",
              "ML",
              "MH",
              "MR",
              "MU",
              "MX",
              "MD",
              "MC",
              "MN",
              "ME",
              "MA",
              "MZ",
              "MM",
              "NA",
              "NR",
              "NP",
              "NL",
              "NC",
              "NZ",
              "NI",
              "NE",
              "NG",
              "NU",
              "NF",
              "MK",
              "MP",
              "NO",
              "OM",
              "PK",
              "PW",
              "PA",
              "PG",
              "PY",
              "PE",
              "PH",
              "PN",
              "PL",
              "PT",
              "QA",
              "CG",
              "RO",
              "RW",
              "SH",
              "KN",
              "LC",
              "PM",
              "VC",
              "WS",
              "SM",
              "ST",
              "SA",
              "SN",
              "SC",
              "SL",
              "SG",
              "SX",
              "SK",
              "SI",
              "SB",
              "SO",
              "ZA",
              "GS",
              "KR",
              "ES",
              "LK",
              "SR",
              "CH",
              "SE",
              "TJ",
              "TZ",
              "TH",
              "BS",
              "GM",
              "TL",
              "TG",
              "TK",
              "TO",
              "TT",
              "TN",
              "TR",
              "TM",
              "TV",
              "UG",
              "UA",
              "AE",
              "GB",
              "US",
              "UY",
              "UZ",
              "VU",
              "VA",
              "VE",
              "VN",
              "YE",
              "ZM",
              "ZW",
              "BM",
              "BV",
              "IO",
              "VG",
              "KY",
              "TW",
              "YT",
              "FO",
              "FK",
              "GF",
              "PS",
              "GI",
              "GL",
              "GP",
              "HK",
              "IM",
              "MO",
              "MQ",
              "MS",
              "AW",
              "PR",
              "RE",
              "AI",
              "EH",
              "SJ",
              "TC",
              "UM",
              "VI",
              "WF"
            ],
            "enumTitles": [
              "Anywhere (no filter)",
              "Albania (AL)",
              "Algeria (DZ)",
              "American Samoa (AS)",
              "Andorra (AD)",
              "Angola (AO)",
              "Antarctica (AQ)",
              "Antigua and Barbuda (AG)",
              "Argentina (AR)",
              "Armenia (AM)",
              "Australia (AU)",
              "Austria (AT)",
              "Azerbaijan (AZ)",
              "Bahrain (BH)",
              "Bangladesh (BD)",
              "Barbados (BB)",
              "Belarus (BY)",
              "Belgium (BE)",
              "Belize (BZ)",
              "Benin (BJ)",
              "Bhutan (BT)",
              "Bolivia (BO)",
              "Bosnia and Herzegovina (BA)",
              "Botswana (BW)",
              "Brazil (BR)",
              "Brunei (BN)",
              "Bulgaria (BG)",
              "Burkina Faso (BF)",
              "Burundi (BI)",
              "Cambodia (KH)",
              "Cameroon (CM)",
              "Canada (CA)",
              "Cape Verde (CV)",
              "Caribbean Netherlands (BQ)",
              "Central African Republic (CF)",
              "Chad (TD)",
              "Chile (CL)",
              "China (CN)",
              "Christmas Island (CX)",
              "Cocos Islands (CC)",
              "Colombia (CO)",
              "Comoros (KM)",
              "Cook Islands (CK)",
              "Costa Rica (CR)",
              "Ivory Coast (CI)",
              "Croatia (HR)",
              "Curacao (CW)",
              "Cyprus (CY)",
              "Czech Republic (CZ)",
              "DR Congo (CD)",
              "Denmark (DK)",
              "Djibouti (DJ)",
              "Dominica (DM)",
              "Dominican Republic (DO)",
              "Ecuador (EC)",
              "Egypt (EG)",
              "El Salvador (SV)",
              "Equatorial Guinea (GQ)",
              "Eritrea (ER)",
              "Estonia (EE)",
              "Eswatini (SZ)",
              "Ethiopia (ET)",
              "Micronesia (FM)",
              "Fiji (FJ)",
              "Finland (FI)",
              "France (FR)",
              "French Polynesia (PF)",
              "French Southern Territories (TF)",
              "Gabon (GA)",
              "Georgia (GE)",
              "Germany (DE)",
              "Ghana (GH)",
              "Greece (GR)",
              "Grenada (GD)",
              "Guam (GU)",
              "Guatemala (GT)",
              "Guernsey (GG)",
              "Guinea (GN)",
              "Guinea-Bissau (GW)",
              "Guyana (GY)",
              "Haiti (HT)",
              "Heard Island (HM)",
              "Honduras (HN)",
              "Hungary (HU)",
              "Iceland (IS)",
              "India (IN)",
              "Indonesia (ID)",
              "Iraq (IQ)",
              "Ireland (IE)",
              "Israel (IL)",
              "Italy (IT)",
              "Jamaica (JM)",
              "Japan (JP)",
              "Jersey (JE)",
              "Jordan (JO)",
              "Kazakhstan (KZ)",
              "Kenya (KE)",
              "Kiribati (KI)",
              "Kuwait (KW)",
              "Kyrgyzstan (KG)",
              "Laos (LA)",
              "Latvia (LV)",
              "Lebanon (LB)",
              "Lesotho (LS)",
              "Liberia (LR)",
              "Libya (LY)",
              "Liechtenstein (LI)",
              "Lithuania (LT)",
              "Luxembourg (LU)",
              "Madagascar (MG)",
              "Malawi (MW)",
              "Malaysia (MY)",
              "Maldives (MV)",
              "Malta (MT)",
              "Mali (ML)",
              "Marshall Islands (MH)",
              "Mauritania (MR)",
              "Mauritius (MU)",
              "Mexico (MX)",
              "Moldova (MD)",
              "Monaco (MC)",
              "Mongolia (MN)",
              "Montenegro (ME)",
              "Morocco (MA)",
              "Mozambique (MZ)",
              "Myanmar (MM)",
              "Namibia (NA)",
              "Nauru (NR)",
              "Nepal (NP)",
              "Netherlands (NL)",
              "New Caledonia (NC)",
              "New Zealand (NZ)",
              "Nicaragua (NI)",
              "Niger (NE)",
              "Nigeria (NG)",
              "Niue (NU)",
              "Norfolk Island (NF)",
              "North Macedonia (MK)",
              "Northern Mariana Islands (MP)",
              "Norway (NO)",
              "Oman (OM)",
              "Pakistan (PK)",
              "Palau (PW)",
              "Panama (PA)",
              "Papua New Guinea (PG)",
              "Paraguay (PY)",
              "Peru (PE)",
              "Philippines (PH)",
              "Pitcairn Islands (PN)",
              "Poland (PL)",
              "Portugal (PT)",
              "Qatar (QA)",
              "Republic of the Congo (CG)",
              "Romania (RO)",
              "Rwanda (RW)",
              "Saint Helena (SH)",
              "Saint Kitts and Nevis (KN)",
              "Saint Lucia (LC)",
              "Saint Pierre and Miquelon (PM)",
              "Saint Vincent (VC)",
              "Samoa (WS)",
              "San Marino (SM)",
              "Sao Tome and Principe (ST)",
              "Saudi Arabia (SA)",
              "Senegal (SN)",
              "Seychelles (SC)",
              "Sierra Leone (SL)",
              "Singapore (SG)",
              "Sint Maarten (SX)",
              "Slovakia (SK)",
              "Slovenia (SI)",
              "Solomon Islands (SB)",
              "Somalia (SO)",
              "South Africa (ZA)",
              "South Georgia (GS)",
              "South Korea (KR)",
              "Spain (ES)",
              "Sri Lanka (LK)",
              "Suriname (SR)",
              "Switzerland (CH)",
              "Sweden (SE)",
              "Tajikistan (TJ)",
              "Tanzania (TZ)",
              "Thailand (TH)",
              "Bahamas (BS)",
              "Gambia (GM)",
              "Timor-Leste (TL)",
              "Togo (TG)",
              "Tokelau (TK)",
              "Tonga (TO)",
              "Trinidad and Tobago (TT)",
              "Tunisia (TN)",
              "Turkey (TR)",
              "Turkmenistan (TM)",
              "Tuvalu (TV)",
              "Uganda (UG)",
              "Ukraine (UA)",
              "United Arab Emirates (AE)",
              "United Kingdom (GB)",
              "United States (US)",
              "Uruguay (UY)",
              "Uzbekistan (UZ)",
              "Vanuatu (VU)",
              "Vatican City (VA)",
              "Venezuela (VE)",
              "Vietnam (VN)",
              "Yemen (YE)",
              "Zambia (ZM)",
              "Zimbabwe (ZW)",
              "Bermuda (BM)",
              "Bouvet Island (BV)",
              "British Indian Ocean Territory (IO)",
              "British Virgin Islands (VG)",
              "Cayman Islands (KY)",
              "Taiwan (TW)",
              "Mayotte (YT)",
              "Faroe Islands (FO)",
              "Falkland Islands (FK)",
              "French Guiana (GF)",
              "Palestine (PS)",
              "Gibraltar (GI)",
              "Greenland (GL)",
              "Guadeloupe (GP)",
              "Hong Kong (HK)",
              "Isle of Man (IM)",
              "Macau (MO)",
              "Martinique (MQ)",
              "Montserrat (MS)",
              "Aruba (AW)",
              "Puerto Rico (PR)",
              "Reunion (RE)",
              "Anguilla (AI)",
              "Western Sahara (EH)",
              "Svalbard and Jan Mayen (SJ)",
              "Turks and Caicos (TC)",
              "US Minor Outlying Islands (UM)",
              "US Virgin Islands (VI)",
              "Wallis and Futuna (WF)"
            ]
          },
          "format": {
            "title": "Ad format",
            "type": "string",
            "description": "Restrict to one creative format. Leave empty for all formats.",
            "editor": "select",
            "nullable": true,
            "enum": [
              "TEXT",
              "IMAGE",
              "VIDEO"
            ],
            "enumTitles": [
              "Text",
              "Image",
              "Video"
            ]
          },
          "platform": {
            "title": "Platform",
            "type": "string",
            "description": "Restrict to one Google surface. Leave empty for all platforms.",
            "editor": "select",
            "nullable": true,
            "enum": [
              "PLAY",
              "MAPS",
              "SEARCH",
              "SHOPPING",
              "YOUTUBE"
            ],
            "enumTitles": [
              "Google Play",
              "Google Maps",
              "Google Search",
              "Google Shopping",
              "YouTube"
            ]
          },
          "political": {
            "title": "Political and issue ads only",
            "type": "boolean",
            "description": "Return only political or issue ads. Google requires a country region for this filter.",
            "default": false,
            "prefill": false
          },
          "startDate": {
            "title": "Shown on or after (YYYY-MM-DD)",
            "type": "string",
            "description": "Client-side date filter applied to the fetched slice. Leave empty for no lower bound.",
            "editor": "textfield",
            "nullable": true
          },
          "endDate": {
            "title": "Shown on or before (YYYY-MM-DD)",
            "type": "string",
            "description": "Client-side date filter applied to the fetched slice. Leave empty for no upper bound.",
            "editor": "textfield",
            "nullable": true
          },
          "maxAdsPerAdvertiser": {
            "title": "Max ads per advertiser",
            "type": "integer",
            "description": "Per-advertiser cap (1-1000). The run also stops at maxItems.",
            "minimum": 1,
            "maximum": 1000,
            "default": 20,
            "prefill": 1
          },
          "maxItems": {
            "title": "Max items",
            "type": "integer",
            "description": "Total ads to emit across all targets (1-1000).",
            "minimum": 1,
            "maximum": 1000,
            "default": 50,
            "prefill": 1
          },
          "includeDetails": {
            "title": "Include creative details",
            "type": "boolean",
            "description": "Fetch per-creative detail and preview content for copy, media and region stats. Disable for a faster list-only run.",
            "default": true,
            "prefill": true
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional proxy override. The actor uses an Apify automatic proxy by default.",
            "editor": "proxy",
            "default": {
              "useApifyProxy": true
            },
            "prefill": {
              "useApifyProxy": true
            }
          }
        },
        "required": [
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Google Ads Advertiser Creative History Scraper Output",
        "description": "Per-advertiser Google Ads Transparency Center creatives with ad format, preview media, and first/last shown dates.",
        "properties": {
          "ads": {
            "type": "string",
            "title": "Google Ads Data",
            "description": "Dataset containing all scraped Google ads with advertiser info, dates, and preview URLs",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "dockerfile": "../Dockerfile",
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "fields": {
            "type": "object",
            "properties": {
              "advertiserId": {
                "type": "string",
                "description": "Google advertiser ID (AR...)"
              },
              "advertiserName": {
                "type": "string",
                "description": "Advertiser display name"
              },
              "advertiserCountry": {
                "type": "string",
                "nullable": true,
                "description": "Advertiser country code"
              },
              "advertiserLegalName": {
                "type": "string",
                "nullable": true,
                "description": "Advertiser legal name when Google exposes it"
              },
              "advertiserVerified": {
                "type": "boolean",
                "nullable": true,
                "description": "Whether Google marks the advertiser as verified"
              },
              "creativeId": {
                "type": "string",
                "description": "Google creative ID (CR...)"
              },
              "format": {
                "type": "string",
                "description": "TEXT, IMAGE or VIDEO"
              },
              "headline": {
                "type": "string",
                "nullable": true,
                "description": "Text ad headline"
              },
              "description": {
                "type": "string",
                "nullable": true,
                "description": "Text ad description"
              },
              "body": {
                "type": "string",
                "nullable": true,
                "description": "Text ad body (same as description when only one is exposed)"
              },
              "displayDomain": {
                "type": "string",
                "nullable": true,
                "description": "Display domain shown on the ad"
              },
              "callToAction": {
                "type": "string",
                "nullable": true,
                "description": "Call-to-action text when exposed"
              },
              "firstShown": {
                "type": "string",
                "nullable": true,
                "description": "First date the ad was shown (YYYY-MM-DD)"
              },
              "lastShown": {
                "type": "string",
                "nullable": true,
                "description": "Last date the ad was shown (YYYY-MM-DD)"
              },
              "regions": {
                "type": "array",
                "nullable": true,
                "description": "Country codes returned for the creative"
              },
              "impressionsMin": {
                "type": "integer",
                "nullable": true,
                "description": "Lower impression bound when Google exposes it"
              },
              "impressionsMax": {
                "type": "integer",
                "nullable": true,
                "description": "Upper impression bound when Google exposes it"
              },
              "previewUrl": {
                "type": "string",
                "nullable": true,
                "description": "Preview link or media URL for the creative"
              },
              "imageUrl": {
                "type": "string",
                "nullable": true,
                "description": "Image URL for image ads and video posters"
              },
              "posterUrl": {
                "type": "string",
                "nullable": true,
                "description": "Video poster image URL"
              },
              "videoUrl": {
                "type": "string",
                "nullable": true,
                "description": "Direct video URL when Google exposes one; signed and short-lived"
              },
              "youtubeUrl": {
                "type": "string",
                "nullable": true,
                "description": "Stable YouTube link when the creative exposes a video ID"
              },
              "productTitle": {
                "type": "string",
                "nullable": true,
                "description": "Shopping/product title for image creatives"
              },
              "productBrand": {
                "type": "string",
                "nullable": true,
                "description": "Shopping/product brand for image creatives"
              },
              "platforms": {
                "type": "array",
                "nullable": true,
                "description": "Platforms Google reports for the creative"
              },
              "adLibraryUrl": {
                "type": "string",
                "nullable": true,
                "description": "Transparency Center URL for this creative"
              },
              "source": {
                "type": "string",
                "description": "Data source identifier"
              },
              "startUrl": {
                "type": "string",
                "nullable": true,
                "description": "Input URL that produced this record, when applicable"
              },
              "searchTerm": {
                "type": "string",
                "nullable": true,
                "description": "Search term or domain that produced this record"
              },
              "scrapedAt": {
                "type": "string",
                "description": "ISO 8601 timestamp when the record was emitted"
              },
              "adId": {
                "type": "string",
                "description": "adId"
              },
              "landingUrl": {
                "type": "string",
                "description": "landingUrl"
              },
              "imageUrls": {
                "type": "array",
                "description": "imageUrls"
              },
              "regionStats": {
                "type": "array",
                "description": "regionStats"
              },
              "platform": {
                "type": "string",
                "description": "platform"
              },
              "videoUrlExpiresAt": {
                "type": "string",
                "description": "videoUrlExpiresAt"
              },
              "advertiserCategories": {
                "type": "array",
                "description": "advertiserCategories"
              }
            }
          },
          "views": {
            "overview": {
              "title": "Ads",
              "transformation": {
                "fields": [
                  "advertiserId",
                  "advertiserName",
                  "creativeId",
                  "format",
                  "headline",
                  "body",
                  "displayDomain",
                  "firstShown",
                  "lastShown",
                  "regions",
                  "impressionsMin",
                  "impressionsMax",
                  "previewUrl",
                  "imageUrl",
                  "videoUrl",
                  "youtubeUrl",
                  "source",
                  "scrapedAt"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "advertiserId": {
                    "label": "Advertiser ID",
                    "format": "text"
                  },
                  "advertiserName": {
                    "label": "Advertiser",
                    "format": "text"
                  },
                  "creativeId": {
                    "label": "Creative ID",
                    "format": "text"
                  },
                  "format": {
                    "label": "Format",
                    "format": "text"
                  },
                  "headline": {
                    "label": "Headline",
                    "format": "text"
                  },
                  "body": {
                    "label": "Body",
                    "format": "text"
                  },
                  "displayDomain": {
                    "label": "Display domain",
                    "format": "text"
                  },
                  "firstShown": {
                    "label": "First shown",
                    "format": "text"
                  },
                  "lastShown": {
                    "label": "Last shown",
                    "format": "text"
                  },
                  "regions": {
                    "label": "Regions",
                    "format": "array"
                  },
                  "impressionsMin": {
                    "label": "Impressions min",
                    "format": "number"
                  },
                  "impressionsMax": {
                    "label": "Impressions max",
                    "format": "number"
                  },
                  "previewUrl": {
                    "label": "Preview",
                    "format": "link"
                  },
                  "imageUrl": {
                    "label": "Image",
                    "format": "link"
                  },
                  "videoUrl": {
                    "label": "Video",
                    "format": "link"
                  },
                  "youtubeUrl": {
                    "label": "YouTube",
                    "format": "link"
                  },
                  "source": {
                    "label": "Source",
                    "format": "text"
                  },
                  "scrapedAt": {
                    "label": "Scraped at",
                    "format": "text"
                  }
                }
              }
            }
          }
        }
      },
      "readme": "# Google Ads Transparency Advertiser & Creative Scraper\r\n\r\nScrape **Google Ads Transparency Center** ad creatives for a single advertiser, every advertiser linked to a domain, a brand or keyword search, or one specific creative. Each record carries the advertiser identity, ad format, first and last shown dates, ad copy or product details, media previews, region stats, and impression ranges when Google exposes them. The data is public: no Google account, cookies, or login are required.\r\n\r\n## What this actor does\r\n\r\n- **Four lookup modes:** `advertiser` (URL or `AR...` ID), `domain` (all advertisers linked to a domain), `search` (brand name or keyword), and `creative` (one ad URL or `CR...` ID).\r\n- **Server-side filters:** country `region`, ad `format` (text, image, video), `platform` (Play, Maps, Search, Shopping, YouTube), and a `political` toggle for political and issue ads.\r\n- **Complete creative history:** cursor pagination at 100 ads per page, up to 1,000 unique ads per run.\r\n- **Rich per-ad detail:** headline, description, display domain, Shopping product title and brand, preview image, video poster, YouTube link, region stats, and impression bounds when available.\r\n- **Client-side date filtering:** `startDate` and `endDate` narrow the fetched slice; Google exposes no date-range parameter for anonymous searches.\r\n- **Clean records:** fields that Google does not expose are omitted rather than returned as `null`, empty strings, or empty arrays.\r\n\r\n## Output per ad\r\n\r\n- `advertiserId`, `advertiserName` - Google's advertiser ID and display name.\r\n- `advertiserCountry`, `advertiserLegalName`, `advertiserVerified` - advertiser metadata when Google returns it.\r\n- `advertiserAdCountMin`, `advertiserAdCountMax` - the advertiser's total ad-count range when available.\r\n- `creativeId`, `adId` - Google's unique ID for the creative.\r\n- `format` - `TEXT`, `IMAGE`, or `VIDEO`.\r\n- `firstShown`, `lastShown` - first and last dates Google recorded the ad as active (YYYY-MM-DD).\r\n- `headline`, `description`, `body` - text-ad copy when the creative exposes it.\r\n- `callToAction` - call-to-action text when present.\r\n- `displayDomain`, `landingUrl` - display domain, and a full landing URL only when Google exposes one.\r\n- `productTitle`, `productBrand` - Shopping/image ad product details.\r\n- `imageUrl`, `imageUrls` - image creative or Shopping product image URLs.\r\n- `previewUrl` - a preview or media link for the creative.\r\n- `posterUrl` - video poster image.\r\n- `youtubeUrl` - stable YouTube link when the video exposes a YouTube ID.\r\n- `videoUrl`, `videoUrlExpiresAt` - direct video file when Google exposes one; signed, IP-bound, and short-lived.\r\n- `regions`, `regionStats` - country codes and per-region dates/impressions/platform stats for the creative.\r\n- `impressionsMin`, `impressionsMax` - impression bounds when Google returns them.\r\n- `platforms`, `platform` - Google surfaces reported for the creative.\r\n- `adLibraryUrl`, `sourceUrl` - direct Ads Transparency Center links.\r\n- `source` - data source identifier (`google_ads_transparency`).\r\n- `startUrl`, `searchTerm` - the input URL or search term that produced the record, when applicable.\r\n- `recordType`, `scrapedAt` - record type and fetch timestamp.\r\n\r\n## Input\r\n\r\n| Field | Type | Default | Description |\r\n|---|---|---|---|\r\n| `mode` | string | `advertiser` | `advertiser` / `domain` / `search` / `creative`. |\r\n| `advertiserUrl` | string | - | Advertiser or creative Transparency Center URL (mode=`advertiser` or `creative`). |\r\n| `advertiserId` | string | - | Google advertiser ID beginning with `AR` (mode=`advertiser` or `creative`). |\r\n| `domain` | string | - | Domain to search across all linked advertisers, e.g. `nike.com` (mode=`domain`). |\r\n| `searchQuery` | string | - | Brand name or keyword resolved through Google's advertiser suggestions (mode=`search`). |\r\n| `startUrls` | array | `[]` | Additional advertiser or creative URLs as Apify `{ \"url\": \"...\" }` request-list objects. |\r\n| `creativeId` | string | - | Google creative ID beginning with `CR` (mode=`creative`); also set `advertiserId` or `advertiserUrl`. |\r\n| `region` | string | `anywhere` | Country where the ad was shown; `anywhere` applies no filter. Required when `political` is on. |\r\n| `format` | string | - | `TEXT`, `IMAGE`, or `VIDEO`; leave empty for all formats. |\r\n| `platform` | string | - | `PLAY`, `MAPS`, `SEARCH`, `SHOPPING`, or `YOUTUBE`; leave empty for all platforms. |\r\n| `political` | boolean | `false` | Return only political and issue ads. Requires a country `region`. |\r\n| `startDate` | string | - | Only ads with activity on or after this date (YYYY-MM-DD); applied to the fetched slice. |\r\n| `endDate` | string | - | Only ads with activity on or before this date (YYYY-MM-DD); applied to the fetched slice. |\r\n| `maxAdsPerAdvertiser` | integer | `20` | Per-advertiser cap, 1-1000. In domain mode it applies to each advertiser found. |\r\n| `maxItems` | integer | `50` | Total ads to emit, 1-1000. |\r\n| `includeDetails` | boolean | `true` | Fetch per-creative detail and preview content. Turn off for a faster list-only run. |\r\n| `proxyConfiguration` | object | Apify automatic proxy | Optional proxy override; the actor uses an Apify proxy by default. |\r\n\r\n## Example: scrape one advertiser\r\n\r\n```json\r\n{\r\n  \"mode\": \"advertiser\",\r\n  \"advertiserUrl\": \"https://adstransparency.google.com/advertiser/AR16735076323512287233\",\r\n  \"maxAdsPerAdvertiser\": 50,\r\n  \"maxItems\": 50,\r\n  \"includeDetails\": true\r\n}\r\n```\r\n\r\n## Example: find every advertiser using a domain, US image ads only\r\n\r\n```json\r\n{\r\n  \"mode\": \"domain\",\r\n  \"domain\": \"nike.com\",\r\n  \"region\": \"US\",\r\n  \"format\": \"IMAGE\",\r\n  \"maxAdsPerAdvertiser\": 25,\r\n  \"maxItems\": 100\r\n}\r\n```\r\n\r\n## Example: search a brand, video ads shown in 2024\r\n\r\n```json\r\n{\r\n  \"mode\": \"search\",\r\n  \"searchQuery\": \"Nike\",\r\n  \"region\": \"GB\",\r\n  \"platform\": \"YOUTUBE\",\r\n  \"startDate\": \"2024-01-01\",\r\n  \"endDate\": \"2024-12-31\",\r\n  \"maxItems\": 50\r\n}\r\n```\r\n\r\n## Example: inspect one creative\r\n\r\n```json\r\n{\r\n  \"mode\": \"creative\",\r\n  \"advertiserId\": \"AR16735076323512287233\",\r\n  \"creativeId\": \"CR17471063371053793281\"\r\n}\r\n```\r\n\r\n## Example output\r\n\r\n```json\r\n{\r\n  \"advertiserId\": \"AR16735076323512287233\",\r\n  \"advertiserName\": \"Nike, Inc.\",\r\n  \"advertiserCountry\": \"US\",\r\n  \"creativeId\": \"CR17471063371053793281\",\r\n  \"format\": \"TEXT\",\r\n  \"firstShown\": \"2024-03-09\",\r\n  \"lastShown\": \"2026-10-24\",\r\n  \"headline\": \"Nike Official Site\",\r\n  \"description\": \"Shop the latest Nike styles.\",\r\n  \"body\": \"Shop the latest Nike styles.\",\r\n  \"displayDomain\": \"nike.com\",\r\n  \"regions\": [\"CA\"],\r\n  \"previewUrl\": \"https://tpc.googlesyndication.com/archive/simgad/6265887525695880208\",\r\n  \"adLibraryUrl\": \"https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR17471063371053793281\",\r\n  \"source\": \"google_ads_transparency\",\r\n  \"recordType\": \"ad\",\r\n  \"scrapedAt\": \"2026-10-25T12:00:00+00:00\"\r\n}\r\n```\r\n\r\n```json\r\n{\r\n  \"advertiserId\": \"AR16735076323512287233\",\r\n  \"advertiserName\": \"Nike, Inc.\",\r\n  \"creativeId\": \"CR13237700337168547841\",\r\n  \"format\": \"IMAGE\",\r\n  \"productTitle\": \"Nike Club Fleece Hoodie\",\r\n  \"productBrand\": \"Nike\",\r\n  \"imageUrl\": \"https://encrypted-tbn2.gstatic.com/shopping?q=tbn:ANd9GcExample\",\r\n  \"displayDomain\": \"nike.com\",\r\n  \"regions\": [\"US\"],\r\n  \"impressionsMin\": 1000,\r\n  \"impressionsMax\": 2000,\r\n  \"source\": \"google_ads_transparency\",\r\n  \"recordType\": \"ad\",\r\n  \"scrapedAt\": \"2026-10-25T12:00:00+00:00\"\r\n}\r\n```\r\n\r\n## Use cases\r\n\r\n- **Competitive ad monitoring** - track which creatives a competitor is running and how long they have been live.\r\n- **Creative research** - collect text, image, and video ad examples by brand, country, or platform.\r\n- **Media buying intelligence** - see which surfaces and regions a brand invests in.\r\n- **Compliance review** - check where an advertiser's ads were recorded as shown.\r\n- **Agency reporting** - build a prospect's ad history into an audit or pitch deck.\r\n- **Dataset building** - export normalised ad creatives for analysis or model training.\r\n\r\n## Limits and caveats\r\n\r\n- **1,000-ad cap:** the actor reads 100 ads per page and stops at 1,000 unique ads per run, even if Google reports more for the advertiser or domain.\r\n- **Date filtering is client-side:** Google does not expose an anonymous date-range parameter, so `startDate` and `endDate` only filter the slice the actor fetched. It may miss older ads outside that slice.\r\n- **Impressions are partial:** impression ranges appear for political/issue ads and some display creatives, not for every ad.\r\n- **Regions are partial:** `regions` reflects the per-creative stats Google returns, which is often one country and sometimes a longer subset. It is not a complete targeting list.\r\n- **Video URLs expire:** direct `videoUrl` links are signed, tied to the resolving IP, and expire in about a day. Use `youtubeUrl` or `posterUrl` when you need a stable reference.\r\n- **Copy is conditional:** most text ads expose a headline, description, and display domain; some do not. Image and video creatives usually have no text copy.\r\n- **Anonymous results:** Google may show fewer ads to logged-out visitors than to signed-in users. This is a source limitation, not a missing filter.\r\n- **Domain results span advertisers:** a domain search can return ads from several advertisers (brand owners, regional entities, and agencies). `maxAdsPerAdvertiser` applies to each one separately.\r\n- **Political ads need a country:** Google's political/issue filter requires a concrete `region`; `anywhere` is rejected for that mode.\r\n\r\n## FAQ\r\n\r\n### What is the difference between the four modes?\r\n\r\n`advertiser` takes an advertiser URL or `AR...` ID and returns that advertiser's creatives. `domain` searches all advertisers Google links to a domain. `search` resolves a brand or keyword to the best-matching advertiser and scrapes it. `creative` fetches one specific ad by URL or `CR...` ID.\r\n\r\n### What is the difference between domain mode and search mode?\r\n\r\nDomain mode queries Google by domain and returns ads from every associated advertiser. Search mode uses Google's advertiser suggestions and picks the best match for a name or keyword, which is useful when you do not know the domain.\r\n\r\n### Why are impressions missing on many ads?\r\n\r\nGoogle only publishes impression ranges for some creatives, mainly political/issue ads and certain display ads. When the field is absent, the source did not return a range; the actor does not estimate it.\r\n\r\n### How many ads can I get per advertiser?\r\n\r\nUp to 1,000 unique ads per run, read 100 at a time. Use `maxAdsPerAdvertiser` to cap each advertiser and `maxItems` to cap the whole run.\r\n\r\n### Do the date filters search Google's full history?\r\n\r\nNo. Google does not expose a date-range parameter for anonymous searches. The actor filters the ads it fetched using their first and last shown dates. A narrow date window combined with a low `maxItems` can therefore miss older ads.\r\n\r\n### Why do some records have no headline or description?\r\n\r\nGoogle's preview content only exposes text copy for some text creatives. Image and video ads generally have no text copy. Missing fields are omitted from the record.\r\n\r\n### Why does a video URL stop working?\r\n\r\nDirect video files are signed to the IP that resolved them and expire quickly. Prefer `youtubeUrl` for a stable link, or `posterUrl` for a still image.\r\n\r\n### Do I need a Google account, cookies, or a proxy?\r\n\r\nNo account or cookies are needed. The actor uses an Apify proxy automatically; `proxyConfiguration` is only an optional override.\r\n\r\n### Is this affiliated with Google?\r\n\r\nNo. This is an independent third-party actor that reads the publicly accessible Google Ads Transparency Center. It is not affiliated with or endorsed by Google.\r\n"
    },
    "buildNumber": "1.2.1",
    "imageDigest": "1888c8c6c7a343e397e0620db200a98823a366e4ad7702ca82cbf5badff2befa",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.2"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.005217777777777778
    }
  }
}