{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Ads Transparency Center Scraper - Competitor Ads Checker",
    "description": "Google Ads checker: does a company run Google Ads? Check a list of domains from $0.002 each: one row per domain (has ads or not, Google's ad count range, the advertisers behind it). Also a Google Ads scraper for competitor ads in the Google ad library: ad creatives with format, preview and dates.",
    "version": "0.1",
    "x-build-id": "C8ZpHNvck3GHGbTSQ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/orbots~google-ads-transparency-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-orbots-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/orbots~google-ads-transparency-scraper/runs": {
      "post": {
        "operationId": "runs-sync-orbots-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/orbots~google-ads-transparency-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-orbots-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 to look up",
            "type": "array",
            "description": "One entry per line: a brand name (Nike), a domain (nike.com) or a Google advertiser ID (AR18378488041124659201). A Transparency Center URL also works. Names are resolved to the best-matching advertiser; domains return every advertiser using that domain. Optional when datasetId is set (integration mode): both lists are combined.",
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "title": "Regions",
            "type": "array",
            "description": "Country codes (ISO 3166-1 alpha-2: US, GB, BR, DE...). Only ads shown in these countries are returned. Leave empty for ads shown anywhere. Case does not matter; UK, USA and common country names (Brazil, Germany) are understood; an unknown code is skipped with a warning when at least one valid code remains.",
            "default": [
              "US"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxAdsPerQuery": {
            "title": "Max ads per query",
            "minimum": 1,
            "type": "integer",
            "description": "Creatives mode only. Hard cap per advertiser, domain or name. The Actor stops at exactly this number and never charges beyond it. Default 100; raise it for large advertisers (tens of thousands of creatives).",
            "default": 100
          },
          "formats": {
            "title": "Ad formats",
            "type": "array",
            "description": "Creatives mode only. Keep only these formats. Rows filtered out are not charged.",
            "items": {
              "type": "string",
              "enum": [
                "image",
                "text",
                "video"
              ],
              "enumTitles": [
                "Image ads",
                "Text and responsive ads",
                "Video ads"
              ]
            },
            "default": [
              "image",
              "text",
              "video"
            ]
          },
          "includeDetails": {
            "title": "Include creative details (per-country dates, preview variants)",
            "type": "boolean",
            "description": "Creatives mode only. Fetches the detail record of every creative: first and last shown date per country and all preview variations. One extra request per ad, charged as an ad-detail event.",
            "default": false
          },
          "outputMode": {
            "title": "Output",
            "enum": [
              "creatives",
              "advertisers"
            ],
            "type": "string",
            "description": "Creatives = one row per ad. Advertiser check = one row per query saying whether the advertiser runs Google ads, with Google's estimated ad count range; ideal for screening a list of domains.",
            "default": "creatives"
          },
          "profile": {
            "title": "Add an advertiser profile to each check",
            "type": "boolean",
            "description": "Advertiser check mode only. Adds to each row, from the same page the check already reads (no extra request): ads sampled, ads by format, oldest and newest first shown dates, latest last shown date, whether any ad was shown in the last 30 days, the longest running ad in days and up to 3 sample previews. Charged as an advertiser-profile event only when the check found ads.",
            "default": false
          },
          "onlyNew": {
            "title": "Only ads not delivered in earlier runs",
            "type": "boolean",
            "description": "Creatives mode only. Built for schedules. The Actor remembers which creatives it already delivered for each query and region set, and returns only the ones it has not sent you before, so a daily run reports new campaigns instead of repeating the whole list and charging for it again. History is kept for 180 days in your own account.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Not required: the Transparency Center answers Apify servers directly, and a query refused on the direct connection is retried once through Apify Proxy (datacenter) on its own (see autoProxyFallback). Configure a proxy here only if you want every request to go through it from the start.",
            "default": {
              "useApifyProxy": false
            }
          },
          "autoProxyFallback": {
            "title": "Retry a refused query through Apify Proxy",
            "type": "boolean",
            "description": "On by default. When the Transparency Center refuses a query on the direct connection even after retries, the Actor retries that query once through Apify Proxy (datacenter) before giving up on it. Turn off to fail fast instead.",
            "default": true
          },
          "datasetId": {
            "title": "Read the queries from a dataset (integration mode)",
            "type": "string",
            "description": "Optional. A dataset whose rows carry the domains, brand names or advertiser IDs to look up, one per row, in the field named in datasetField. Made for running this Actor as an integration of another Actor (its Integrations tab, Add integration, Actor): set it to {{resource.defaultDatasetId}} there and every row of the finished run becomes one query. Any dataset of your account works too. queries is optional when datasetId is set; both are combined."
          },
          "datasetField": {
            "title": "Dataset field that holds the query",
            "type": "string",
            "description": "Integration mode only. The field of each dataset row that holds the domain, brand name or advertiser ID: website (Google Maps scrapers), domain, url, company_domain. A nested field works with dots (contact.website). A website URL is reduced to its domain, an e-mail address to its domain, duplicates are looked up once, and rows without a usable value are skipped and counted in the log.",
            "default": "website"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}