{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Ads Transparency Center Scraper: Competitor Ads",
    "description": "Google ad library scraper for competitor research. Export every ad a brand runs on Search, YouTube, Shopping, Maps and Play from the Google Ads Transparency Center by name, domain or advertiser ID. Dates, days active, countries, EU impressions, creatives. No login.",
    "version": "1.0",
    "x-build-id": "Sa9gR4POO1MZKUsFr"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/pulsedata~google-ads-transparency-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-pulsedata-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/pulsedata~google-ads-transparency-scraper/runs": {
      "post": {
        "operationId": "runs-sync-pulsedata-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/pulsedata~google-ads-transparency-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-pulsedata-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": {
          "queries": {
            "title": "Advertisers, domains, or keywords",
            "type": "array",
            "description": "One entry per line. Accepts advertiser names (`Nike`), domains (`nike.com`), advertiser IDs (`AR16735076323512287233`) or Ads Transparency Center URLs. Names are resolved to advertisers via the official suggestions; domains return ads pointing to that domain. Use the fields below when you already know what each entry is. All four fields can be combined in one run.",
            "items": {
              "type": "string"
            }
          },
          "domains": {
            "title": "Domains",
            "type": "array",
            "description": "Exact website domains, one per line, for example `nike.com`. Returns every ad that points to that domain, from any advertiser account. Full URLs such as `https://www.nike.com/de/` are trimmed to the domain.",
            "items": {
              "type": "string"
            }
          },
          "advertiserIds": {
            "title": "Advertiser IDs",
            "type": "array",
            "description": "Advertiser IDs starting with `AR`, for example `AR16735076323512287233`. You find the ID in the URL of an advertiser page in the Ads Transparency Center. Returns all ads of that advertiser account.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Ads Transparency Center URLs",
            "type": "array",
            "description": "Paste URLs from adstransparency.google.com: advertiser pages (all ads of the advertiser), creative pages (that single ad) or domain search pages (all ads pointing to the domain). The run's region, format, platform and date filters apply to advertiser and domain URLs, not to a single creative.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "resultType": {
            "title": "What to return",
            "enum": [
              "ads",
              "advertisers"
            ],
            "type": "string",
            "description": "`ads` returns every ad of each target. `advertisers` is the ad-check mode: one row per advertiser account behind each name, domain or advertiser ID, with whether it runs Google Ads, Google's approximate ad count, legal name, country and verified badge. A target with no ads still gets a row with `runsGoogleAds: false`. Region, format, platform and date filters apply to the ad counts.",
            "default": "ads"
          },
          "region": {
            "title": "Region",
            "type": "string",
            "description": "Only ads shown in this country. Use `anywhere` for all countries or an ISO 3166-1 alpha-2 code (`US`, `DE`, `GB`, `FR`, …).",
            "default": "anywhere"
          },
          "format": {
            "title": "Ad format",
            "enum": [
              "ALL",
              "TEXT",
              "IMAGE",
              "VIDEO"
            ],
            "type": "string",
            "description": "Filter by creative format.",
            "default": "ALL"
          },
          "platform": {
            "title": "Platform",
            "enum": [
              "ALL",
              "SEARCH",
              "YOUTUBE",
              "MAPS",
              "PLAY",
              "SHOPPING"
            ],
            "type": "string",
            "description": "Filter by the Google surface where the ad was shown.",
            "default": "ALL"
          },
          "startDate": {
            "title": "Shown after (start date)",
            "type": "string",
            "description": "Only ads shown on/after this date, format `YYYY-MM-DD`."
          },
          "endDate": {
            "title": "Shown before (end date)",
            "type": "string",
            "description": "Only ads shown on/before this date, format `YYYY-MM-DD`."
          },
          "maxAdsPerQuery": {
            "title": "Max ads per query",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many ads for each query. Set 0 for no limit (large advertisers can have tens of thousands of ads).",
            "default": 100
          },
          "advertiserMatch": {
            "title": "Advertiser name matching",
            "enum": [
              "best",
              "all"
            ],
            "type": "string",
            "description": "When a query is an advertiser *name*: `best` picks the single most relevant advertiser (largest matching one); `all` scrapes every suggested advertiser that contains the name.",
            "default": "best"
          },
          "maxAdvertisersPerQuery": {
            "title": "Max advertisers per query (advertiser summaries)",
            "minimum": 0,
            "type": "integer",
            "description": "In advertiser summary mode, the most advertiser accounts returned for one domain or one name with `All matching advertisers`. Accounts with the most ads come first. 0 means no limit.",
            "default": 10
          },
          "includeDetails": {
            "title": "Include per-ad details (regions, EU impressions, targeting)",
            "type": "boolean",
            "description": "Fetches the detail page of every ad: per-country first/last shown dates, EU impression ranges per country and platform, targeting flags and creative variations. One extra request per ad.",
            "default": true
          },
          "enrichPreviews": {
            "title": "Extract YouTube video IDs & image URLs from previews",
            "type": "boolean",
            "description": "For image/video ads, fetches the creative preview and extracts the YouTube video ID, thumbnail and image asset URLs. One extra request per image/video ad.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Google blocks shared datacenter IPs quickly – keep Apify residential proxies (default). Only the small JSON API calls go through the proxy; creative previews are fetched directly, so proxy traffic stays tiny (~3 KB per ad).",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "onlyNewAds": {
            "title": "Only new ads (monitor mode)",
            "type": "boolean",
            "description": "Output and charge only ads this monitor has not delivered on an earlier run. The creative IDs are remembered in a named key-value store in your account, so a scheduled daily or weekly run returns just the ads a competitor launched since the last run. The first run returns everything and fills the store.",
            "default": false
          },
          "monitorStoreName": {
            "title": "Monitor store name",
            "type": "string",
            "description": "Name of the key-value store that remembers delivered ads. Leave empty to name it after the run's targets and filters, so each different input keeps its own history. Set a name to share one history between inputs, or to start over by picking a new one. Letters, digits and hyphens."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}