{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Ads Scraper [NO COOKIES] [NO LOGIN] ✅",
    "description": "Extract every ad an advertiser ran on Google - Search, YouTube, Display, Shopping - from Google's official Ads Transparency Center. Get creatives, formats, run dates, and targeting regions. No Google Ads account or API key required. Built for paid media analysts and agencies.",
    "version": "0.0",
    "x-build-id": "o82kTcDxjDe4CBl7x"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/unseenuser~Google-ads/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-unseenuser-Google-ads",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/unseenuser~Google-ads/runs": {
      "post": {
        "operationId": "runs-sync-unseenuser-Google-ads",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/unseenuser~Google-ads/run-sync": {
      "post": {
        "operationId": "run-sync-unseenuser-Google-ads",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "advertisers"
        ],
        "properties": {
          "advertisers": {
            "title": "Advertisers",
            "minItems": 1,
            "type": "array",
            "description": "One per line. Accepts any of:\n• Brand name — e.g. nike\n• Website domain — e.g. lululemon.com\n• Google advertiser ID — e.g. AR01614014350098432001",
            "items": {
              "type": "string"
            }
          },
          "maxAdsPerAdvertiser": {
            "title": "Max ads per advertiser (0 = every ad)",
            "minimum": 0,
            "type": "integer",
            "description": "Cap the number of ads scraped per advertiser. Default is 200 (prefilled here to 4 as a quick-preview value - bump it to 200 or more for a full pull). Set to 0 to fetch every public ad Google has. Ads stream into the dataset live as they are scraped, so the first rows appear within seconds even for large brands.",
            "default": 200
          },
          "startDate": {
            "title": "Start date (blank = no lower bound)",
            "type": "string",
            "description": "Only include ads first shown on or after this date. Leave blank to include ads from any start date."
          },
          "endDate": {
            "title": "End date (blank = no upper bound)",
            "type": "string",
            "description": "Only include ads last shown on or before this date. Leave blank to include ads up to today."
          },
          "regions": {
            "title": "Regions (nothing selected = worldwide)",
            "uniqueItems": true,
            "type": "array",
            "description": "Pick one or more countries to restrict which Google ads are returned. Selecting nothing means worldwide. When multiple countries are selected the actor pulls ads for each and merges results (duplicates removed).",
            "items": {
              "type": "string",
              "enum": [
                "AR",
                "AU",
                "AT",
                "BE",
                "BR",
                "CA",
                "CL",
                "CN",
                "CO",
                "CZ",
                "DK",
                "EG",
                "FI",
                "FR",
                "DE",
                "GR",
                "HK",
                "HU",
                "IN",
                "ID",
                "IE",
                "IL",
                "IT",
                "JP",
                "MY",
                "MX",
                "NL",
                "NZ",
                "NO",
                "PE",
                "PH",
                "PL",
                "PT",
                "RO",
                "RU",
                "SA",
                "SG",
                "ZA",
                "KR",
                "ES",
                "SE",
                "CH",
                "TW",
                "TH",
                "TR",
                "UA",
                "AE",
                "GB",
                "US",
                "VN"
              ],
              "enumTitles": [
                "Argentina",
                "Australia",
                "Austria",
                "Belgium",
                "Brazil",
                "Canada",
                "Chile",
                "China",
                "Colombia",
                "Czech Republic",
                "Denmark",
                "Egypt",
                "Finland",
                "France",
                "Germany",
                "Greece",
                "Hong Kong",
                "Hungary",
                "India",
                "Indonesia",
                "Ireland",
                "Israel",
                "Italy",
                "Japan",
                "Malaysia",
                "Mexico",
                "Netherlands",
                "New Zealand",
                "Norway",
                "Peru",
                "Philippines",
                "Poland",
                "Portugal",
                "Romania",
                "Russia",
                "Saudi Arabia",
                "Singapore",
                "South Africa",
                "South Korea",
                "Spain",
                "Sweden",
                "Switzerland",
                "Taiwan",
                "Thailand",
                "Turkey",
                "Ukraine",
                "United Arab Emirates",
                "United Kingdom",
                "United States",
                "Vietnam"
              ]
            },
            "default": []
          },
          "platform": {
            "title": "Platform (all = every Google surface)",
            "enum": [
              "all",
              "search",
              "display",
              "youtube"
            ],
            "type": "string",
            "description": "Filter to a single Google ad surface. 'All platforms' (default) returns every ad. Platform is classified from ad format: text ads = Search, video ads = YouTube, image ads = Display. Google Shopping product ads currently appear as Display and cannot be reliably separated with the upstream data.",
            "default": "all"
          },
          "politicalOnly": {
            "title": "Political ads only",
            "type": "boolean",
            "description": "Restrict to political ads (region required when enabled).",
            "default": false
          },
          "enableAIAnalysis": {
            "title": "AI ad analysis (angle + keywords)",
            "type": "boolean",
            "description": "Adds a creative-angle label (discount, urgency, social proof, feature, brand awareness, problem-solution, testimonial, seasonal) and a keyword list to each ad. One Claude Haiku call per ad. Requires your own Anthropic API key in the 'Anthropic API key' field below. Off by default.",
            "default": false
          },
          "anthropicApiKey": {
            "title": "Anthropic API key (yours)",
            "type": "string",
            "description": "Your own Anthropic API key. Get one at https://console.anthropic.com. Used only when 'AI ad analysis' or 'AI advertiser positioning summary' is enabled - both call Claude Haiku, and the LLM cost is charged to your Anthropic account (not to the actor). Leave blank if you are not using either AI feature."
          },
          "enableChangeDetection": {
            "title": "New / gone ad detection",
            "type": "boolean",
            "description": "Flags every ad as 'new', 'still-running', or 'disappeared' compared to your previous run for the same advertiser. Ads that disappeared since the previous run are also included as extra rows with changeStatus='disappeared'. Billed as a separate priced event ($0.50 / 1000 ads compared). Off by default. On the very first run for a given advertiser there is no previous state, so every ad shows 'new'.",
            "default": false
          },
          "enableAdvertiserSummary": {
            "title": "AI advertiser positioning summary",
            "type": "boolean",
            "description": "Generates a 2-paragraph strategic summary and 3 key takeaways for each advertiser scraped in the run. One Claude Haiku call per advertiser (not per ad). Result lands in the 'advertiser-summary' sub-dataset. Requires your own Anthropic API key in the 'Anthropic API key' field above. Off by default.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}