{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Ads Library - Ad Copy, Landing Pages [NO LOGIN] ✅",
    "description": "Google Ads Library scraper: the full ad copy of every ad an advertiser runs on Google Search, YouTube and Display. Headlines, descriptions, every variation, landing pages, impression ranges and countries per ad, from the Ads Transparency Center. No login or API key. Export CSV, Excel, JSON or API.",
    "version": "0.0",
    "x-build-id": "3qoEA9ez07kfFkdDo"
  },
  "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"
            }
          },
          "brandAccountSelection": {
            "title": "When a brand name maps to multiple advertiser accounts",
            "enum": [
              "all",
              "largest",
              "by_region"
            ],
            "type": "string",
            "description": "Google often lists one advertiser account per country (e.g. a brand can have separate accounts for different countries). Only applies to brand names, not domains or advertiser IDs.\n\n• All accounts (default): scrapes every matching account, up to 5.\n• Largest account only: scrapes just the account with the highest estimated ad count.\n• Match region input: picks the account whose region matches the first entry in Regions below, falling back to Largest if no match.",
            "default": "all"
          },
          "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. 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
          },
          "fetchFullCreative": {
            "title": "Fetch full creative detail (headline, description, landing URL, variations)",
            "type": "boolean",
            "description": "ON (default): returns every creative field - headline, description, destination URL, OCR'd ad text, image URLs, video URL, political-ad spend and targeting, every variation. OFF: returns which ads exist, format, dates and preview image, without headline, description, landing URL or variations.",
            "default": true
          },
          "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. 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'. 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}