{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Ads Transparency Scraper — Advertiser Ads & Creatives",
    "description": "Scrape every ad creative an advertiser runs on Google from the Ads Transparency Center. Resolve by advertiser name, ID, or domain; get image and HTML5 creatives with first/last-shown dates, region filtering, and full pagination — no 100-item cap. Cookieless, no login, no CAPTCHA.",
    "version": "0.0",
    "x-build-id": "Gh8ICZOdYn0I8AKGC"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/silentshadow55~google-ads-transparency-actor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-silentshadow55-google-ads-transparency-actor",
        "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/silentshadow55~google-ads-transparency-actor/runs": {
      "post": {
        "operationId": "runs-sync-silentshadow55-google-ads-transparency-actor",
        "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/silentshadow55~google-ads-transparency-actor/run-sync": {
      "post": {
        "operationId": "run-sync-silentshadow55-google-ads-transparency-actor",
        "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": {
          "advertiserName": {
            "title": "Advertiser name",
            "type": "string",
            "description": "Advertiser to look up by name, e.g. 'Verizon' or 'Nike'. The name is resolved to an advertiser ID via the Ads Transparency Center's suggestion service; the single best match is scraped and any other matches are emitted as 'advertiser_candidate' records so you can re-run pinned to a specific advertiserId. Ignored if advertiserId is set. Defaults to 'Verizon' (a stable, large US advertiser) when no target field is provided at all, so a run always returns data."
          },
          "advertiserId": {
            "title": "Advertiser ID (AR...)",
            "type": "string",
            "description": "Exact advertiser ID starting with 'AR' (e.g. AR11385763688137883649). This is the most deterministic input — no name resolution, no ambiguity. You can find an ID from a previous run's 'advertiser' / 'advertiser_candidate' records or from an adstransparency.google.com/advertiser/<AR...> URL. Takes priority over advertiserName and domain."
          },
          "domain": {
            "title": "Domain",
            "type": "string",
            "description": "Look up by website domain, e.g. 'nike.com'. Resolved via the suggestion service. Note: Google's public API exposes domain match counts but NOT a domain->advertiser list, so if a domain has no directly associated advertiser candidate you will get 'domain_candidate' records and a notice asking you to re-run with a specific advertiserId. Lowest priority (used only when advertiserId and advertiserName are both empty)."
          },
          "region": {
            "title": "Region (2-letter country)",
            "type": "string",
            "description": "Optional ISO-3166-1 alpha-2 country code (e.g. US, GB, CA, DE) to filter creatives to those shown in that country. 'UK' and 'USA' are accepted as aliases for GB and US. Leave empty for all regions. Any other unknown code fails fast with a single error record and scrapes nothing — the run never silently falls back to an uncapped all-regions scrape."
          },
          "maxCreativesPerAdvertiser": {
            "title": "Max creatives per advertiser",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Hard cap on creatives returned per advertiser (0 = no cap — follow the pagination token to the end, which is how this actor beats the incumbents' silent 100-item cap). You are billed per result, so set a cap here to bound cost for very large advertisers (some run 500+ creatives).",
            "default": 0
          },
          "enrichCreativeDetail": {
            "title": "Enrich each creative (per-region dates + all variants)",
            "type": "boolean",
            "description": "For every creative, make one extra GetCreativeById call to add its per-region last-shown dates (regions[]) and every render variant (variants[]). This makes ONE additional request per creative — much slower and more likely to be rate-limited on large advertisers — but does not add extra dataset items. Leave off for fast listing.",
            "default": false
          },
          "includeAdvertiserDetail": {
            "title": "Include advertiser detail (legal name, country, verified)",
            "type": "boolean",
            "description": "Make one GetAdvertiserById call per advertiser to enrich the 'advertiser' summary record with legal name, country, and verified status. One cheap call per advertiser; does not add extra dataset items.",
            "default": true
          },
          "downloadAssets": {
            "title": "Download & rehost creative assets",
            "type": "boolean",
            "description": "Download each creative's image/preview bytes and store them in this run's key-value store, setting asset_kvs_key on the creative. The simgad image and preview URLs on Google's servers expire quickly, so enable this if you need the actual creative bytes to persist. Adds one download per creative.",
            "default": false
          },
          "requestDelaySeconds": {
            "title": "Delay between requests (seconds)",
            "minimum": 0.2,
            "maximum": 30,
            "type": "number",
            "description": "Politeness delay between requests to adstransparency.google.com. 1 second is safe for modest volume; raise it (and add a proxy) for large or enrichment-heavy crawls to avoid soft-blocking. This actor never attempts CAPTCHA or WAF evasion.",
            "default": 1
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional proxies for the requests. When enabled, the actor rotates a 4-session proxy pool on every request — retries automatically move to a fresh IP instead of re-hitting Google from a soft-blocked one. The endpoints work cookieless from a datacenter IP at modest volume; for high-volume or enrichment-heavy runs, residential proxies plus a higher requestDelaySeconds reduce soft-blocking.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}