{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Ads Transparency Scraper - Competitor Ads & Ad Copy",
    "description": "See every Google ad a competitor runs: Ads Transparency Center by domain, brand or advertiser, with the real ad copy (headlines, descriptions, 13 languages), landing pages, political ads, regions and dates. Search, YouTube, Shopping and Display. No login. From $1 per 1,000 ads.",
    "version": "0.2",
    "x-build-id": "XPTNX2969BdqoeD56"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/alom~google-ads-transparency-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-alom-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/alom~google-ads-transparency-scraper/runs": {
      "post": {
        "operationId": "runs-sync-alom-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/alom~google-ads-transparency-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-alom-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": {
          "searchQueries": {
            "title": "Search (domain, brand name or advertiser id)",
            "type": "array",
            "description": "Anything you would type into the Transparency Center: a domain (nike.com), a brand or advertiser name (Nike), or an advertiser id (AR16735076323512287233). Names are matched to Google's advertiser suggestions (see \"Advertisers per name\").",
            "items": {
              "type": "string"
            }
          },
          "domains": {
            "title": "Domains",
            "type": "array",
            "description": "Exact domains. Returns ads from every advertiser whose ads point at the domain.",
            "items": {
              "type": "string"
            }
          },
          "advertiserIds": {
            "title": "Advertiser ids",
            "type": "array",
            "description": "Advertiser ids (AR…) or advertiser page URLs from adstransparency.google.com.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Transparency Center URLs",
            "type": "array",
            "description": "Advertiser pages (…/advertiser/AR…), single ads (…/advertiser/AR…/creative/CR…) or domain searches (…/?domain=nike.com) copied from adstransparency.google.com.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "resultType": {
            "title": "Output",
            "enum": [
              "ads",
              "advertisers"
            ],
            "type": "string",
            "description": "\"One row per advertiser\" returns a summary per advertiser instead of every ad: Google's ad-count estimate, format and platform mix, first/last shown, country and verification. Cheap and fast - ideal to check which companies advertise on Google. Ad copy, details and landing pages are not fetched in this mode.",
            "default": "ads"
          },
          "maxResults": {
            "title": "Max ads per search",
            "minimum": 0,
            "maximum": 50000,
            "type": "integer",
            "description": "Stop after this many ads for each domain / advertiser. 0 = all (up to 50,000). With \"Only new ads\" on, this is how many of the newest ads are checked per run. In advertiser summary mode, how many ads per input the summary is computed on.",
            "default": 100
          },
          "extractAdCopy": {
            "title": "Extract ad copy (headline, description, sitelinks)",
            "type": "boolean",
            "description": "Reads the text of Search ads (headline, description, display URL, sitelinks), Shopping product titles and YouTube video ids. Search ads are archived as images, so their text is read with OCR. Charged per ad whose copy was extracted - see Pricing.",
            "default": false
          },
          "ocrLanguages": {
            "title": "Ad copy languages (OCR)",
            "type": "array",
            "description": "Leave empty to detect each ad's language automatically (recommended). Pick languages only to force them for every ad, e.g. Japanese for a Japan-only competitor. Several languages are read together (slower).",
            "items": {
              "type": "string",
              "enum": [
                "auto",
                "eng",
                "deu",
                "fra",
                "spa",
                "ita",
                "por",
                "rus",
                "ukr",
                "ara",
                "chi_sim",
                "chi_tra",
                "jpn",
                "kor"
              ],
              "enumTitles": [
                "Detect automatically",
                "English",
                "German",
                "French",
                "Spanish",
                "Italian",
                "Portuguese",
                "Russian",
                "Ukrainian",
                "Arabic",
                "Chinese (simplified)",
                "Chinese (traditional)",
                "Japanese",
                "Korean"
              ]
            },
            "default": []
          },
          "includeDetails": {
            "title": "Include details (regions, variations, payer)",
            "type": "boolean",
            "description": "Adds every region the ad ran in with its last-shown date, all A/B variations, the paying entity, and (EU/EEA ads) targeting types, platforms and impression ranges. One extra request per ad - slower.",
            "default": false
          },
          "includeLandingPage": {
            "title": "Include landing pages",
            "type": "boolean",
            "description": "Opens the page each ad links to and adds its final URL (after redirects), title, meta description, main heading (H1) and primary call-to-action. The same page is fetched once per run. Charged per ad with landing page data - see Pricing.",
            "default": false
          },
          "maxLandingPages": {
            "title": "Max landing pages per run",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Upper limit of distinct landing pages fetched in one run.",
            "default": 1000
          },
          "landingPageTimeoutSecs": {
            "title": "Landing page timeout (seconds)",
            "minimum": 3,
            "maximum": 30,
            "type": "integer",
            "description": "Give up on a landing page that takes longer than this.",
            "default": 10
          },
          "politicalAds": {
            "title": "Political ads only",
            "type": "boolean",
            "description": "Only election ads, with spend and impression ranges and the election regions. With \"Include details\", also age / gender / location targeting and the advertiser's election ids. Leave the search empty to list all political ads of the region (e.g. US).",
            "default": false
          },
          "region": {
            "title": "Region",
            "type": "string",
            "description": "Two-letter country code (US, GB, DE…) or \"anywhere\". Only ads shown in that country.",
            "default": "anywhere"
          },
          "platform": {
            "title": "Platform",
            "enum": [
              "ALL",
              "SEARCH",
              "YOUTUBE",
              "SHOPPING",
              "MAPS",
              "PLAY"
            ],
            "type": "string",
            "description": "Only ads shown on this Google platform. Google filters by one platform at a time.",
            "default": "ALL"
          },
          "adFormat": {
            "title": "Ad format",
            "enum": [
              "ALL",
              "TEXT",
              "IMAGE",
              "VIDEO"
            ],
            "type": "string",
            "description": "Only ads of this format.",
            "default": "ALL"
          },
          "startDate": {
            "title": "Shown on or after",
            "pattern": "^(\\d{4}-\\d{2}-\\d{2})?$",
            "type": "string",
            "description": "YYYY-MM-DD. Google answers date filters for roughly the last 12 months only."
          },
          "endDate": {
            "title": "Shown on or before",
            "pattern": "^(\\d{4}-\\d{2}-\\d{2})?$",
            "type": "string",
            "description": "YYYY-MM-DD."
          },
          "dateRangePreset": {
            "title": "Date range preset",
            "enum": [
              "ANYTIME",
              "TODAY",
              "YESTERDAY",
              "LAST_7_DAYS",
              "LAST_30_DAYS"
            ],
            "type": "string",
            "description": "Shortcut for the dates above (ignored when a date is set).",
            "default": "ANYTIME"
          },
          "maxAdvertisersPerQuery": {
            "title": "Advertisers per name",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "For a brand/advertiser name: how many matching advertisers to scrape (names starting with your text, largest first).",
            "default": 3
          },
          "deltaMode": {
            "title": "Only new ads since my last run",
            "type": "boolean",
            "description": "Monitoring: skip ads that an earlier run with the same monitor name already returned. Schedule the run to get new-ad alerts.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Separate histories per name, e.g. competitor-weekly.",
            "default": "default"
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Searches and detail requests in parallel.",
            "default": 4
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Default: Apify datacenter proxy. Google blocks each IP after a few dozen requests; when the datacenter pool is blocked the run switches to residential proxies automatically (at our cost, logged). If you pick proxy groups yourself, they are used as-is.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}