{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Ads Transparency Scraper - Competitor Ads",
    "description": "Google Ads Transparency Center API alternative: scrape competitor ads to CSV/JSON. Impressions, spend & regions export, no login or API key.",
    "version": "0.0",
    "x-build-id": "YnwUJuvIIWPhzIMoR"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/logiover~google-ads-transparency-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-logiover-google-ads-transparency-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/logiover~google-ads-transparency-scraper/runs": {
      "post": {
        "operationId": "runs-sync-logiover-google-ads-transparency-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/logiover~google-ads-transparency-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-logiover-google-ads-transparency-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "mode": {
            "title": "Search Mode",
            "enum": [
              "domain",
              "advertiser-id",
              "advertiser-name"
            ],
            "type": "string",
            "description": "How to identify the advertiser(s) to scrape. 'domain' = look up by website domain (most common). 'advertiser-id' = direct AR-prefixed ID input. 'advertiser-name' = text search resolved to ID via Google's autocomplete.",
            "default": "domain"
          },
          "domains": {
            "title": "Advertiser Domains",
            "type": "array",
            "description": "For mode='domain'. List of advertiser website domains. The scraper supports BATCH input — pass 1 to 50+ domains in a single run. Example: ['nike.com', 'adidas.com', 'puma.com']. No www. or https://. Leave empty and the run defaults to nike.com so you always get sample data.",
            "default": [
              "nike.com"
            ],
            "items": {
              "type": "string"
            }
          },
          "advertiserIds": {
            "title": "Advertiser IDs",
            "type": "array",
            "description": "For mode='advertiser-id'. List of Google advertiser IDs (AR-prefixed). Find them in advertiser detail page URLs: adstransparency.google.com/advertiser/AR12345...",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "advertiserNames": {
            "title": "Advertiser Names",
            "type": "array",
            "description": "For mode='advertiser-name'. List of brand/company names. The scraper resolves each name to its top-matching advertiser ID via Google's autocomplete, then scrapes that advertiser's ads. Useful when you don't know the exact AR ID or domain.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "title": "Regions",
            "uniqueItems": true,
            "type": "array",
            "description": "Country/region to filter ads by. Choose 'Anywhere (global)' to skip the regional filter. Multiple selections act as an OR filter. ~120 countries supported.",
            "items": {
              "type": "string",
              "enum": [
                "anywhere",
                "US",
                "GB",
                "CA",
                "AU",
                "DE",
                "FR",
                "ES",
                "IT",
                "NL",
                "BE",
                "CH",
                "AT",
                "IE",
                "PT",
                "SE",
                "NO",
                "DK",
                "FI",
                "PL",
                "CZ",
                "SK",
                "HU",
                "RO",
                "BG",
                "GR",
                "HR",
                "SI",
                "RS",
                "UA",
                "TR",
                "RU",
                "BR",
                "MX",
                "AR",
                "CL",
                "CO",
                "PE",
                "VE",
                "EC",
                "UY",
                "BO",
                "PY",
                "CR",
                "PA",
                "DO",
                "GT",
                "SV",
                "HN",
                "NI",
                "IN",
                "JP",
                "KR",
                "CN",
                "HK",
                "TW",
                "SG",
                "MY",
                "TH",
                "VN",
                "ID",
                "PH",
                "PK",
                "BD",
                "LK",
                "NP",
                "KH",
                "MM",
                "AE",
                "SA",
                "IL",
                "QA",
                "KW",
                "BH",
                "OM",
                "JO",
                "LB",
                "IQ",
                "IR",
                "EG",
                "MA",
                "DZ",
                "TN",
                "LY",
                "ZA",
                "NG",
                "KE",
                "GH",
                "CI",
                "SN",
                "CM",
                "UG",
                "TZ",
                "ET",
                "AO",
                "MZ",
                "ZM",
                "ZW",
                "BW",
                "NA",
                "RW",
                "NZ",
                "IS",
                "LU",
                "LV",
                "LT",
                "EE",
                "CY",
                "MT",
                "AL",
                "MK",
                "ME",
                "BA",
                "MD",
                "GE",
                "AM",
                "AZ",
                "KZ",
                "KG",
                "TM",
                "MN"
              ],
              "enumTitles": [
                "Anywhere (global)",
                "United States",
                "United Kingdom",
                "Canada",
                "Australia",
                "Germany",
                "France",
                "Spain",
                "Italy",
                "Netherlands",
                "Belgium",
                "Switzerland",
                "Austria",
                "Ireland",
                "Portugal",
                "Sweden",
                "Norway",
                "Denmark",
                "Finland",
                "Poland",
                "Czechia",
                "Slovakia",
                "Hungary",
                "Romania",
                "Bulgaria",
                "Greece",
                "Croatia",
                "Slovenia",
                "Serbia",
                "Ukraine",
                "Turkey",
                "Russia",
                "Brazil",
                "Mexico",
                "Argentina",
                "Chile",
                "Colombia",
                "Peru",
                "Venezuela",
                "Ecuador",
                "Uruguay",
                "Bolivia",
                "Paraguay",
                "Costa Rica",
                "Panama",
                "Dominican Republic",
                "Guatemala",
                "El Salvador",
                "Honduras",
                "Nicaragua",
                "India",
                "Japan",
                "South Korea",
                "China",
                "Hong Kong",
                "Taiwan",
                "Singapore",
                "Malaysia",
                "Thailand",
                "Vietnam",
                "Indonesia",
                "Philippines",
                "Pakistan",
                "Bangladesh",
                "Sri Lanka",
                "Nepal",
                "Cambodia",
                "Myanmar",
                "United Arab Emirates",
                "Saudi Arabia",
                "Israel",
                "Qatar",
                "Kuwait",
                "Bahrain",
                "Oman",
                "Jordan",
                "Lebanon",
                "Iraq",
                "Iran",
                "Egypt",
                "Morocco",
                "Algeria",
                "Tunisia",
                "Libya",
                "South Africa",
                "Nigeria",
                "Kenya",
                "Ghana",
                "Ivory Coast",
                "Senegal",
                "Cameroon",
                "Uganda",
                "Tanzania",
                "Ethiopia",
                "Angola",
                "Mozambique",
                "Zambia",
                "Zimbabwe",
                "Botswana",
                "Namibia",
                "Rwanda",
                "New Zealand",
                "Iceland",
                "Luxembourg",
                "Latvia",
                "Lithuania",
                "Estonia",
                "Cyprus",
                "Malta",
                "Albania",
                "North Macedonia",
                "Montenegro",
                "Bosnia & Herzegovina",
                "Moldova",
                "Georgia",
                "Armenia",
                "Azerbaijan",
                "Kazakhstan",
                "Kyrgyzstan",
                "Turkmenistan",
                "Mongolia"
              ]
            },
            "default": [
              "anywhere"
            ]
          },
          "creativeFormats": {
            "title": "Ad Formats",
            "uniqueItems": true,
            "type": "array",
            "description": "Filter by ad creative format. Empty = all formats. Pass any combination of TEXT, IMAGE, VIDEO. When multiple formats are specified, the scraper runs separate searches per format and merges results.",
            "items": {
              "type": "string",
              "enum": [
                "TEXT",
                "IMAGE",
                "VIDEO"
              ],
              "enumTitles": [
                "Text",
                "Image",
                "Video"
              ]
            },
            "default": []
          },
          "maxAdsPerTarget": {
            "title": "Max Ads Per Target",
            "minimum": 0,
            "type": "integer",
            "description": "Cap how many ads to return PER advertiser/domain. Useful when batch-scraping many competitors — keeps cost predictable. Set to 0 for unlimited per target.",
            "default": 100
          },
          "maxAds": {
            "title": "Max Ads (Global)",
            "minimum": 0,
            "type": "integer",
            "description": "Total ad count cap across ALL targets. Hard ceiling — when reached, the run stops regardless of remaining targets. Set to 0 for unlimited.",
            "default": 100
          },
          "enrichDetails": {
            "title": "Enrich With Detail Data",
            "type": "boolean",
            "description": "When enabled, fetches each ad's detail page for richer fields: impressions range (min-max), regional impression breakdown, targeting category (e.g., 'Clothing & Accessories'), spend tier, A/B variant URLs, payer info (for political ads). Doubles cost and run time but unlocks the most valuable competitive intelligence data.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy (AUTO) is enabled by default and rotates IPs automatically; the scraper falls back to a direct connection on the final retry. Google's Transparency API is public, so AUTO is usually enough. Switch to the RESIDENTIAL group only if you hit persistent HTTP 429/403 on very large runs.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}