{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Ads Transparency Center Scraper: Ads and Impressions",
    "description": "See every ad a competitor runs on Google. Search by domain or advertiser ID and export image, HTML5, video, search and Shopping ads with dates and impressions per country. Filter by platform, format, date and several countries, and monitor only new ads on a schedule. No login.",
    "version": "0.1",
    "x-build-id": "gGgjeA1KuwGGtmTtI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/oski~google-ads-transparency-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-oski-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/oski~google-ads-transparency-scraper/runs": {
      "post": {
        "operationId": "runs-sync-oski-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/oski~google-ads-transparency-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-oski-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": {
          "searchTerms": {
            "title": "Domains (recommended) or brand names",
            "type": "array",
            "description": "The advertisers to look up, one per line. A website domain such as nike.com works best (it finds every advertiser running ads to that site). Brand names work too, and so do pasted website links.",
            "items": {
              "type": "string"
            }
          },
          "advertiserIds": {
            "title": "Advertiser IDs (most exact)",
            "type": "array",
            "description": "Optional, for an exact match: an advertiser ID (AR02934798844673654785) or the advertiser's link copied from adstransparency.google.com.",
            "items": {
              "type": "string"
            }
          },
          "region": {
            "title": "Country",
            "enum": [
              "anywhere",
              "GB",
              "US",
              "IE",
              "CA",
              "AU",
              "NZ",
              "DE",
              "FR",
              "ES",
              "IT",
              "NL",
              "BE",
              "SE",
              "NO",
              "DK",
              "FI",
              "PT",
              "AT",
              "CH",
              "IN",
              "SG",
              "JP",
              "BR",
              "MX",
              "ZA",
              "AE"
            ],
            "type": "string",
            "description": "Only return creatives shown in this country. 'anywhere' returns creatives from all countries. This genuinely filters results, it is not just a label.",
            "default": "anywhere"
          },
          "regions": {
            "title": "More countries (optional)",
            "type": "array",
            "description": "To cover several countries in one run, list them here, one per line. Names or codes both work: United Kingdom, Ireland, US. Overrides Country above.",
            "items": {
              "type": "string"
            }
          },
          "detailLevel": {
            "title": "Detail level",
            "enum": [
              "basic",
              "full"
            ],
            "type": "string",
            "description": "'basic' returns one row per creative from the listing (fastest). 'full' adds one lookup per creative to attach per-country impression buckets, first/last shown dates per country, all creative variants, and better format detection. Both cost the same per row.",
            "default": "basic"
          },
          "platforms": {
            "title": "Platforms",
            "type": "array",
            "description": "Only ads shown on these Google platforms. Leave empty for all. Filtered by Google itself, so narrow runs are fast. Note: Google only records platform for ads shown since September 2023.",
            "items": {
              "type": "string",
              "enum": [
                "search",
                "youtube",
                "shopping",
                "maps",
                "play"
              ],
              "enumTitles": [
                "Google Search",
                "YouTube",
                "Google Shopping",
                "Google Maps",
                "Google Play"
              ]
            }
          },
          "adFormat": {
            "title": "Ad format",
            "enum": [
              "all",
              "text",
              "image",
              "video"
            ],
            "type": "string",
            "description": "Only ads in this format, filtered by Google before anything is downloaded.",
            "default": "all"
          },
          "datePreset": {
            "title": "Date range",
            "enum": [
              "any",
              "last7",
              "last30",
              "last90",
              "last365",
              "custom"
            ],
            "type": "string",
            "description": "Only ads shown in this window, filtered by Google. Choose Custom to use Date from and Date to.",
            "default": "any"
          },
          "resolveMedia": {
            "title": "Resolve banners, videos and text ads",
            "type": "boolean",
            "description": "Many Google ads have no inline image, only a rendering script. When on, the actor reads that script to return the real creative: HTML5 banner URL and size, YouTube or MP4 video links, and the headline, description, button and images of responsive and search text ads. One small extra request per such ad, made in parallel. Turn off for the fastest raw listing.",
            "default": true
          },
          "maxResults": {
            "title": "Max ads in total",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on rows across all advertisers. You are only charged for rows actually returned. About $1 for 1,000 ads.",
            "default": 1000
          },
          "maxResultsPerAdvertiser": {
            "title": "Max ads per advertiser",
            "minimum": 1,
            "type": "integer",
            "description": "Optional per-advertiser cap, useful when one brand would otherwise use the whole budget."
          },
          "dateFrom": {
            "title": "Shown on or after",
            "type": "string",
            "description": "Only ads shown on or after this date. Pick a date or a relative one such as 30 days. Used when Date range is Custom or Any time."
          },
          "dateTo": {
            "title": "Shown on or before",
            "type": "string",
            "description": "Only ads shown on or before this date. Leave empty for up to today."
          },
          "onlyNewAds": {
            "title": "Only new ads (monitoring)",
            "type": "boolean",
            "description": "Remember every ad this search has returned and skip them on later runs, so a scheduled run returns and charges only ads that are new since last time. Pair it with an Apify schedule to watch competitors.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Optional name for the memory used by Only new ads. Runs with the same name share one memory. Leave empty to derive it from the search terms, countries and filters."
          },
          "writeSummary": {
            "title": "Advertiser summary",
            "type": "boolean",
            "description": "Also save a free per-advertiser summary (ads, active ads, formats, top countries, first and last seen) to the run's key-value store as SUMMARY. Not charged.",
            "default": true
          },
          "maxPagesPerAdvertiser": {
            "title": "Max pages per advertiser",
            "minimum": 1,
            "type": "integer",
            "description": "Safety stop for very large advertisers. Each page returns up to 100 creatives, so the default of 25 allows up to 2,500 ads per advertiser. Raise it for bigger advertisers.",
            "default": 25
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Required for anything beyond a tiny run. Google rate limits hard by IP, so the scraper rotates residential IPs to stay healthy. Residential is the default and strongly recommended; datacenter IPs get blocked quickly.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}