{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Ads Transparency Scraper: Creatives, Countries & Reach",
    "description": "Scrape the Google Ads Transparency Center: every ad a competitor runs on Search, YouTube, Shopping, Maps & Play: ad image, video, text & landing page when Google has them, countries, EU impressions, audience & political spend. New-ad alerts, no login.",
    "version": "0.1",
    "x-build-id": "Z5jIOvKShGqqrX8C9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/smoldesk~google-ads-transparency-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-smoldesk-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/smoldesk~google-ads-transparency-scraper/runs": {
      "post": {
        "operationId": "runs-sync-smoldesk-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/smoldesk~google-ads-transparency-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-smoldesk-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": {
          "resultType": {
            "title": "Results",
            "enum": [
              "ads",
              "advertisers"
            ],
            "type": "string",
            "description": "Ads = every ad with its copy, dates and landing page. Advertisers = who advertises: one row per advertiser account with legal name, country, verified badge and roughly how many ads it runs. For a domain you get every account whose ads point to it (the brand, its regional accounts, agencies and resellers), busiest first. Charged per advertiser.",
            "default": "ads"
          },
          "domains": {
            "title": "Domains",
            "type": "array",
            "description": "Websites whose ads you want, e.g. nike.com or booking.com. Google returns every advertiser that sends traffic to the domain (the brand itself plus resellers and affiliates).",
            "items": {
              "type": "string"
            }
          },
          "advertisers": {
            "title": "Advertisers",
            "type": "array",
            "description": "Advertiser names (e.g. Shopify), advertiser IDs (AR…) or advertiser page URLs. Google lists advertisers under their legal names, so a name is matched to the biggest account carrying it (Shopify → Shopify Inc.); when no big account has that name (e.g. Temu, Canva), the Actor uses the brand's domain instead and says so in the log. IDs and URLs are used exactly.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Ads Transparency Center URLs",
            "type": "array",
            "description": "Paste any adstransparency.google.com URL: an advertiser page, a domain search, a single ad page, or the political-ads page. Filters in the URL (region, format, platform, dates) are kept.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "urlsFromFile": {
            "title": "URL list (paste or file link)",
            "type": "string",
            "description": "Many targets at once: paste domains, advertiser names, IDs or Transparency Center URLs (one per line or comma-separated), or paste ONE link to a .txt/.csv file, a Google Sheet or a Google Drive file shared as 'anyone with the link can view'. Each entry is sorted into domains, advertisers or URLs automatically."
          },
          "politicalAdsOnly": {
            "title": "Political ads only",
            "type": "boolean",
            "description": "Only election ads (from verified election advertisers), with impression and spend ranges. With no domain or advertiser it lists the latest political ads in the chosen countries (US if none).",
            "default": false
          },
          "regions": {
            "title": "Countries",
            "type": "array",
            "description": "Where the ads were shown: 2-letter country codes like US, GB, DE, MY, or English names like Germany or United Kingdom. Empty = anywhere. Several countries = ads shown in any of them.",
            "items": {
              "type": "string"
            }
          },
          "adFormat": {
            "title": "Ad format",
            "enum": [
              "ALL",
              "TEXT",
              "IMAGE",
              "VIDEO"
            ],
            "type": "string",
            "description": "Text = Search-style ads, Image = display and Shopping ads, Video = YouTube ads.",
            "default": "ALL"
          },
          "platforms": {
            "title": "Google platforms",
            "type": "array",
            "description": "Only ads shown on these Google products; several = ads shown on any of them. Empty = all platforms. Google records platforms 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"
              ]
            }
          },
          "platform": {
            "title": "Google platform (single, older setting)",
            "enum": [
              "ALL",
              "SEARCH",
              "YOUTUBE",
              "SHOPPING",
              "MAPS",
              "PLAY"
            ],
            "type": "string",
            "description": "Kept for saved inputs. Use 'Google platforms' above, which takes several.",
            "default": "ALL"
          },
          "startDate": {
            "title": "Shown on or after",
            "type": "string",
            "description": "Only ads shown on or after this date: YYYY-MM-DD, today, yesterday or -30 (30 days ago). The Center keeps ads from about 2020."
          },
          "endDate": {
            "title": "Shown on or before",
            "type": "string",
            "description": "Only ads shown on or before this date (same formats)."
          },
          "maxAdsPerSearch": {
            "title": "Max ads per domain / advertiser",
            "minimum": 0,
            "type": "integer",
            "description": "Stop each domain, advertiser or URL after this many ads (newest first). 0 = all. Big brands run tens of thousands of ads.",
            "default": 100
          },
          "maxAds": {
            "title": "Max ads in total",
            "minimum": 0,
            "type": "integer",
            "description": "Stop the whole run after this many ads. 0 = no limit (the maximum cost per run still applies).",
            "default": 0
          },
          "includeAdContent": {
            "title": "Ad copy (headline, text, landing page)",
            "type": "boolean",
            "description": "Read each ad's preview for its headline, description, call to action, landing page, image URLs, YouTube video and product title. Included in the ad price. Turn off for the fastest list of ad IDs and dates.",
            "default": true
          },
          "includeDetails": {
            "title": "Full details (countries, impressions, audience, all variations)",
            "type": "boolean",
            "description": "Extra paid event per ad: every country the ad ran in with first/last shown dates, impression ranges per country and per Google platform (EU and political ads), audience selection (demographics, locations, contextual, customer lists, interests), Google's topic label, the advertiser's legal name and country, and up to 5 ad variations with their copy. Single-ad URLs always include details.",
            "default": false
          },
          "advertisersPerName": {
            "title": "Advertiser accounts per name",
            "minimum": 0,
            "type": "integer",
            "description": "Big brands run one account per country (e.g. several 'Booking.com'). How many accounts with that exact name to take, biggest first. 1 = the best match, 0 = all of them.",
            "default": 1
          },
          "advertiserScanAds": {
            "title": "Ads read per domain (advertisers mode)",
            "minimum": 1,
            "type": "integer",
            "description": "Advertisers mode only: how many of a domain's newest ads to read to find the accounts running them (100 per request, not charged). Raise it for big domains to catch rare resellers.",
            "default": 500
          },
          "allAdvertiserMatches": {
            "title": "All advertisers with that name (older setting)",
            "type": "boolean",
            "description": "Kept for saved inputs: on = same as 'Advertiser accounts per name' 0.",
            "default": false
          },
          "onlyNewAds": {
            "title": "Only new ads (monitoring)",
            "type": "boolean",
            "description": "Skip ads already returned by an earlier run of this exact search (same domain/advertiser and filters). Schedule the Actor daily or weekly to get just the new creatives. You pay only for new ads.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Not needed — the Actor uses the run's own IP and switches to Apify datacenter proxies by itself if Google rate-limits it.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}