{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Ads Transparency Scraper: EU Reach & Ads",
    "description": "Google ads by domain, advertiser or Google Maps list, with EU reach per country and audience criteria. Check which companies advertise. Monitor new ads. Not affiliated with Google.",
    "version": "0.1",
    "x-build-id": "lwO7eJCcuzAJKO3Yx"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/olliolli~google-ads-transparency-eu/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-olliolli-google-ads-transparency-eu",
        "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/olliolli~google-ads-transparency-eu/runs": {
      "post": {
        "operationId": "runs-sync-olliolli-google-ads-transparency-eu",
        "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/olliolli~google-ads-transparency-eu/run-sync": {
      "post": {
        "operationId": "run-sync-olliolli-google-ads-transparency-eu",
        "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": "What to return",
            "enum": [
              "ads",
              "advertiserCheck",
              "monitor"
            ],
            "type": "string",
            "description": "Ads: every ad with its EU details. Advertiser check: one cheap row per domain. Monitor: like Ads, but only new ads since the previous run with the same monitor store name.",
            "default": "ads"
          },
          "domains": {
            "title": "Company domains",
            "type": "array",
            "description": "For example coolblue.be. A full URL works too; only the domain is used.",
            "items": {
              "type": "string"
            }
          },
          "advertiserIds": {
            "title": "Advertiser IDs",
            "type": "array",
            "description": "Google advertiser IDs (AR…), from an Ads Transparency Center link.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Ads Transparency Center links",
            "type": "array",
            "description": "Links from adstransparency.google.com (advertiser, ad, or a search by domain). A link to one ad returns all ads of its advertiser.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "datasetId": {
            "title": "Google Maps results (dataset)",
            "type": "string",
            "description": "A dataset with company websites, for example your own Google Maps scraper run. Only the website, name, city, country and place ID of each row are read; rows without an own website are skipped and not charged. Chain it: add an integration on your Maps scraper with {\"datasetId\": \"{{resource.defaultDatasetId}}\"}. You are responsible for how you obtained the listing data."
          },
          "regions": {
            "title": "Countries",
            "type": "array",
            "description": "Countries to search. EU details (times shown, audience) are fetched for the first country in the list.",
            "items": {
              "type": "string",
              "enum": [
                "AT",
                "BE",
                "BG",
                "CH",
                "CY",
                "CZ",
                "DE",
                "DK",
                "EE",
                "ES",
                "FI",
                "FR",
                "GB",
                "GR",
                "HR",
                "HU",
                "IE",
                "IS",
                "IT",
                "LI",
                "LT",
                "LU",
                "LV",
                "MT",
                "NL",
                "NO",
                "PL",
                "PT",
                "RO",
                "SE",
                "SI",
                "SK",
                "TR"
              ]
            },
            "default": [
              "BE",
              "NL",
              "FR",
              "DE",
              "LU",
              "AT"
            ]
          },
          "includeEuDetails": {
            "title": "EU details per ad",
            "type": "boolean",
            "description": "Times shown (range) per country and platform, audience selection and topic. Charged per ad that has details (EU countries).",
            "default": true
          },
          "maxAdsPerTarget": {
            "title": "Max ads per domain or advertiser",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Stops per domain or advertiser after this many ads (in the order Google lists them).",
            "default": 50
          },
          "formats": {
            "title": "Only these formats",
            "type": "array",
            "description": "Leave empty for all. Filtered ads are not charged.",
            "items": {
              "type": "string",
              "enum": [
                "TEXT",
                "IMAGE",
                "VIDEO"
              ]
            }
          },
          "shownAfter": {
            "title": "Shown on or after",
            "type": "string",
            "description": "Only ads last shown on or after this date (YYYY-MM-DD)."
          },
          "shownBefore": {
            "title": "First shown on or before",
            "type": "string",
            "description": "Only ads first shown on or before this date (YYYY-MM-DD)."
          },
          "monitorStoreName": {
            "title": "Monitor store name",
            "type": "string",
            "description": "Monitor mode remembers the ads it returned in a named key-value store in your account. Use one name per watch list.",
            "default": "google-ads-monitor"
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 6,
            "type": "integer",
            "description": "Kept low on purpose: the Actor is polite to Google's servers.",
            "default": 3
          },
          "allowResidentialProxy": {
            "title": "Allow residential proxy (small extra charge)",
            "type": "boolean",
            "description": "Google sometimes shows its \"unusual traffic\" check to cloud servers. The Actor then switches by itself: first to Apify's datacenter proxy, then to Apify's residential proxy. Only rows collected over the residential proxy carry the extra \"Residential proxy\" charge (see Pricing). Switch off to never use it; the run then stops when Google refuses the datacenter proxy too.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Usually not needed: the Actor picks a connection by itself (see above). A proxy you choose here is tried first."
          },
          "failIfEmpty": {
            "title": "Fail when nothing is found",
            "type": "boolean",
            "description": "For a daily health check with domains that always advertise.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}