{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Ads Transparency Scraper & Ad Library API",
    "description": "Get every ad a competitor runs from the Google Ads Transparency Center: pass one or a list of domains, advertiser IDs or brand names and get format, first and last shown, days live, countries, platforms and EU impressions. Monitor new creatives since the last run. $1.49 per 1,000 ads.",
    "version": "0.1",
    "x-build-id": "zdPbPiLucCEsL07fP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/glasswing~google-ads-transparency-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-glasswing-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/glasswing~google-ads-transparency-scraper/runs": {
      "post": {
        "operationId": "runs-sync-glasswing-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/glasswing~google-ads-transparency-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-glasswing-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": {
          "startUrls": {
            "title": "Advertiser URLs or domains",
            "uniqueItems": true,
            "type": "array",
            "description": "One advertiser per line. Three forms are accepted: a website domain (`nike.com`, `www.booking.com`, or any page URL on that site), an advertiser id (`AR01614014350098432001`), or an Ads Transparency Center advertiser URL (`https://adstransparency.google.com/advertiser/AR01614014350098432001?region=US` - a `?region=` in the URL overrides the Region field for that entry). A domain search returns the ads of every advertiser account that verified that website. Leave it empty when you search by name in the next field.",
            "default": [
              "nike.com",
              "booking.com"
            ],
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Search by keyword or advertiser name",
            "type": "array",
            "description": "Brand or advertiser names, typed the way you would in the Ads Transparency Center search box, for example `Nike`, `HubSpot` or `Booking`. Each name is matched against Google's own advertiser suggestions: the brand's verified website (e.g. `nike.com`) is taken first, then advertiser accounts whose name is the keyword and carries a legal form such as Inc, GmbH or SRL, then such accounts whose name contains every word. Accounts without a legal form are not picked, because a keyword can be a person's name. A domain or advertiser id typed here is searched directly. Every row carries `searchQuery` so you can tell which name it came from. When you use this field, the example domains in the field above are ignored.",
            "items": {
              "type": "string"
            }
          },
          "maxAdvertisersPerQuery": {
            "title": "Advertisers per keyword",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many matching websites / advertiser accounts to take for each keyword (best match first). 1 keeps only the best match; raise it to also cover a brand's country subsidiaries, which often advertise under their own accounts.",
            "default": 3
          },
          "advertiserIds": {
            "title": "Advertiser ids (batch)",
            "type": "array",
            "description": "For API and scheduled runs: a list of advertiser ids (`AR01614014350098432001`), one per line. Read exactly like the advertiser field above, so you can pass a whole competitor list as one JSON array. Combine with Ads per advertiser so every advertiser gets its share of Maximum results.",
            "items": {
              "type": "string"
            }
          },
          "domains": {
            "title": "Website domains (batch)",
            "type": "array",
            "description": "For API and scheduled runs: a list of website domains (`nike.com`), one per line. Each domain returns the ads of every advertiser account that verified that website. Same rules as the advertiser field above.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many rows have been saved to the dataset. Each saved row with status `ok` is one billable result. Start at 20 for a fast preview, then raise it for production runs.",
            "default": 20
          },
          "maxAdsPerAdvertiser": {
            "title": "Ads per advertiser",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Optional cap per advertiser or domain, so in a batch run one large advertiser cannot use up Maximum results. Example: 50 domains, Ads per advertiser 20 and Maximum results 1000 gives up to 20 ads from each. Leave empty for no cap per advertiser (Maximum results still applies to the whole run)."
          },
          "region": {
            "title": "Region",
            "enum": [
              "anywhere",
              "US",
              "GB",
              "CA",
              "AU",
              "IE",
              "NZ",
              "IN",
              "SG",
              "MY",
              "PH",
              "ID",
              "TH",
              "VN",
              "JP",
              "KR",
              "DE",
              "FR",
              "ES",
              "IT",
              "NL",
              "BE",
              "AT",
              "CH",
              "SE",
              "NO",
              "DK",
              "FI",
              "PL",
              "CZ",
              "PT",
              "GR",
              "RO",
              "TR",
              "UA",
              "IL",
              "AE",
              "SA",
              "ZA",
              "NG",
              "EG",
              "BR",
              "MX",
              "AR",
              "CL",
              "CO"
            ],
            "type": "string",
            "description": "Only return ads confirmed to have run in this country. `anywhere` (the default) returns ads from every country the advertiser ran in. The country is sent to Google as a filter, and with Include ad details on the Actor also checks each ad's confirmed country list and drops (and never bills) any ad that is not confirmed for the country you pick, pulling in a replacement automatically when one is available. The region also decides which country's Ads Transparency page the `url` column points at.",
            "default": "anywhere"
          },
          "adFormat": {
            "title": "Ad format",
            "enum": [
              "any",
              "text",
              "image",
              "video"
            ],
            "type": "string",
            "description": "Only return ads of one format. `text` covers search and text ads, `image` covers uploaded display banners, `video` covers video ads. Leave it on `any` to get all three.",
            "default": "any"
          },
          "platform": {
            "title": "Platform",
            "enum": [
              "any",
              "search",
              "youtube",
              "play",
              "maps",
              "shopping"
            ],
            "type": "string",
            "description": "Only return ads shown on one Google platform: Search, YouTube, Google Play, Maps or Shopping. Google applies this filter itself. Leave it on `any` to get ads from every platform.",
            "default": "any"
          },
          "dateFrom": {
            "title": "Shown on or after",
            "type": "string",
            "description": "Only return ads that were shown on or after this date. Use a date (`2026-09-01`) or a relative value (`30 days` = 30 days ago). Google keeps ads for one year after they were last shown, so older dates are moved to the start of that window. Leave empty for no date filter."
          },
          "dateTo": {
            "title": "Shown on or before",
            "type": "string",
            "description": "Only return ads that were shown on or before this date (`2026-10-01`, or `7 days` = a week ago). Leave empty to mean today. Setting only one of the two dates is fine."
          },
          "includeDetails": {
            "title": "Include ad details",
            "type": "boolean",
            "description": "On (the default): one extra lookup per ad adds the confirmed country list (`regions`), the platforms, the impression ranges Google publishes for EU/EEA countries and the audience-selection summary (`targeting`). Off: rows come straight from the search results, about twice as fast, without those columns; the `region` filter is then applied by Google only. The price per ad is the same either way.",
            "default": true
          },
          "onlyNewAds": {
            "title": "Only new ads (monitor mode)",
            "type": "boolean",
            "description": "Return only ads that an earlier run with this option on has not returned yet, so a scheduled run (daily or weekly) gives you just the new creatives of each competitor. Ads already seen are skipped and never charged; a run with nothing new finishes successfully with an empty dataset. The list of seen ads is kept per advertiser in a named key-value store on your own Apify account (see the next field). The first run returns everything, like a normal run.",
            "default": false
          },
          "monitorStoreName": {
            "title": "Monitor store name",
            "type": "string",
            "description": "Name of the key-value store on your account that remembers which ads were already returned. Use a different name per schedule to keep separate watch lists (e.g. `ads-monitor-client-a`). Lowercase letters, digits and hyphens.",
            "default": "google-ads-transparency-monitor"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. The Actor is HTTP-only and works from plain datacenter IPs, so leave this off. Enable Apify Proxy (datacenter group) only if a run reports rate limiting; residential proxies are not needed and not recommended for this Actor.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}