{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Ads Transparency, Bing Ads Library – Advertiser Check",
    "description": "Which companies advertise on Google and Microsoft Bing: domains or company names in, one row per company out from the Google Ads Transparency Center and Microsoft Ad Library – advertising yes/no, ad counts, advertiser accounts, active in last 30 days. Also exports competitor ads, or only new ones.",
    "version": "0.4",
    "x-build-id": "eJIsNZ7aRDMdFQcWY"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/perceptr0n~google-ads-transparency-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-perceptr0n-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/perceptr0n~google-ads-transparency-scraper/runs": {
      "post": {
        "operationId": "runs-sync-perceptr0n-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/perceptr0n~google-ads-transparency-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-perceptr0n-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": "What to do",
            "enum": [
              "companies",
              "ads"
            ],
            "type": "string",
            "description": "`companies` (default) = **Check companies**: one row per company — is it advertising on Google and on Microsoft (Bing), roughly how many ads, which advertiser accounts run them, whether they ran in the last 30 days. `ads` = **Export ads**: one row per ad with platform, format, dates, text or preview, landing page and link — the countries each ad ran in come with `include_details`.",
            "default": "companies"
          },
          "platforms": {
            "title": "Platforms",
            "type": "array",
            "description": "`google` = Google Ads Transparency Center — Search, YouTube, Display, Shopping, worldwide. `microsoft` = Microsoft Ad Library — Bing, MSN and partner sites, ads shown in the EU/EEA only. Default: both. Microsoft answers about one request per second, so it adds roughly 2–10 seconds per company. Google limits automated requests: when it refuses, the run pauses and continues more slowly; companies it could not check get the status `unavailable` and are not charged.",
            "items": {
              "type": "string",
              "enum": [
                "google",
                "microsoft"
              ],
              "enumTitles": [
                "Google",
                "Microsoft (Bing)"
              ]
            },
            "default": [
              "google",
              "microsoft"
            ]
          },
          "domains": {
            "title": "Company websites (domains)",
            "type": "array",
            "description": "Give `domains`, `company_names` or (export ads) `advertiser_ids` — domains are the certain match. Domains or website addresses, e.g. `check24.de`, `https://www.otto.de`; a subdomain is checked on its registrable domain (`shop.otto.de` → `otto.de`). Lines that are no usable domain get a row with status `invalid_input` and are not charged. Google: ads that point to this domain, also by agencies or resellers. Microsoft: advertiser accounts whose own ads land on this domain.",
            "items": {
              "type": "string"
            }
          },
          "company_names": {
            "title": "Company names",
            "type": "array",
            "description": "Verified advertiser names, e.g. `Zalando`, `HORNBACH`. Every word must appear as a whole word in the advertiser's name (`Ford` never matches `Oxford`), or the name without spaces must equal consecutive words (`aboutyou` → `ABOUT YOU SE`). One company is counted; other matching advertisers are listed separately, never added. Name matches are not proven by landing pages: for a certain answer use `domains` or `resolve_names`.",
            "items": {
              "type": "string"
            }
          },
          "resolve_names": {
            "title": "Company names: find the domain first (check companies)",
            "type": "boolean",
            "description": "For company names: first look up the company's domain in Google's Ads Transparency Center, then check that domain. A domain is accepted only when a verified advertiser whose name matches yours runs the ads that point to it (at least a quarter of the most recent ones, or more than any other advertiser). Microsoft (Bing) accounts are then proven by their own landing pages, as for domain inputs. `matchedOn` says how each company was matched: `domain`, `confirmed_domain` (evidence in `domainResolution`) or `name_only` (no domain could be confirmed: checked by name as without this option, not proven by landing pages). Set `region` to try that country's domain first. Needs Google. A name takes 2 Google requests when its first suggested domain is confirmed (as many as without this option), up to 5 otherwise.",
            "default": false
          },
          "advertiser_ids": {
            "title": "Advertiser IDs (export ads)",
            "type": "array",
            "description": "Google IDs such as `AR15589870916631265281` (from the Transparency Center URL) or Microsoft IDs such as `4295010150` (from a previous run). Each ID is searched on its own platform.",
            "items": {
              "type": "string"
            }
          },
          "region": {
            "title": "Region",
            "enum": [
              "anywhere",
              "DE",
              "AT",
              "CH",
              "FR",
              "NL",
              "BE",
              "LU",
              "IT",
              "ES",
              "PT",
              "PL",
              "CZ",
              "SK",
              "HU",
              "RO",
              "BG",
              "HR",
              "SI",
              "GR",
              "IE",
              "DK",
              "SE",
              "FI",
              "NO",
              "EE",
              "LV",
              "LT",
              "GB",
              "US",
              "CA",
              "AU",
              "TR",
              "IN",
              "BR",
              "MX",
              "JP"
            ],
            "type": "string",
            "description": "`anywhere` (default) or a two-letter country code such as `DE`, `AT`, `CH`, `FR`: only count and export ads shown in this country. Microsoft publishes only ads shown in the EU/EEA, so for other countries only Google is checked.",
            "default": "anywhere"
          },
          "region_breakdown": {
            "title": "Ad counts per country (check companies)",
            "type": "array",
            "description": "Optional: two-letter country codes, e.g. `DE`, `AT`, `CH`. Each advertising company gets its ad count per country — one extra lookup per country, up to 10. On Microsoft the count is for the main advertiser account, EU/EEA countries only.",
            "items": {
              "type": "string"
            }
          },
          "list_id": {
            "title": "Change report: list ID (check companies)",
            "type": "string",
            "description": "Optional. Give your company list a short, stable name (e.g. `dach-prospects`) and run it on a schedule. The first run saves every company as the starting point (all rows, `changeStatus: baseline`). Every later run with the same list ID and region returns only the companies that changed: started or stopped advertising on Google or Microsoft (Bing), or a new advertiser account. Advertising means an ad shown in the last 30 days, so a stop shows 30 days after the last ad. Unchanged companies are checked and charged like any company check but left out of the dataset; their evidence is in the record `UNCHANGED` of the run's key-value store. Companies that could not be checked get `changeStatus: not_compared` and keep their saved state. The saved state is kept in a key-value store named `google-ads-transparency-monitor` in your account. At most 2,000 companies per run. Leave empty for a normal check."
          },
          "max_ads": {
            "title": "Maximum ads per company and platform (export ads)",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many ads (1–100,000) per domain, name or advertiser ID on each platform. Google returns the most recently shown ads first. Microsoft returns ads shown in the last 30 days first, then older ones; its public API reaches at most about 1,000 ads per advertiser account and period.",
            "default": 40
          },
          "include_details": {
            "title": "Ad details (export ads)",
            "type": "boolean",
            "description": "Google: the countries each ad ran in, with first and last day shown there. Microsoft: first and last day shown, reach range (e.g. 5K–10K impressions), share of impressions per country, targeting types used (location, age, gender, audiences) and who paid for the ad. One extra lookup per ad, charged as 'ad details'.",
            "default": false
          },
          "only_new_ads": {
            "title": "Only new ads — monitoring (export ads)",
            "type": "boolean",
            "description": "Monitoring: returns only ads you have not received before for the same domain, name or advertiser ID. The first run returns the current ads as a baseline. Schedule the run daily or weekly to get a feed of new competitor ads. Google: ads first shown since the last run. Microsoft: ads not seen in any previous run. The memory is kept in a key-value store named `google-ads-transparency-monitor` in your account.",
            "default": false
          },
          "proxy": {
            "title": "Proxy",
            "type": "object",
            "description": "Not needed — both services answer without a proxy. A proxy does not help against refusals either: the whole run uses one fixed address, and refusals are answered with pauses, never worked around.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}