{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Ads Transparency Advertiser Leads Scraper",
    "description": "Build a lead list of businesses buying Google ads. Search the Ads Transparency Center by trade or brand keyword and get one row per advertiser: name, advertiser ID, verified country, how many ads they run, and when their ads were last seen. Or go in reverse - give a website, get its advertisers.",
    "version": "0.1",
    "x-build-id": "vxRIkLrvXJleyICUM"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapersdelight~adstransparency-advertiser-leads-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapersdelight-adstransparency-advertiser-leads-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/scrapersdelight~adstransparency-advertiser-leads-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapersdelight-adstransparency-advertiser-leads-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/scrapersdelight~adstransparency-advertiser-leads-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapersdelight-adstransparency-advertiser-leads-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": {
          "keywords": {
            "title": "Advertiser name keywords",
            "type": "array",
            "description": "Search terms matched against the ADVERTISER'S NAME, not against what they sell. `plumbing` returns every advertiser whose registered name contains it (KS Plumbing, Plumbing MD, Buzz Plumbing…). Use trade words (plumbing, roofing, dental, law), brand words, or a company-name fragment. One request per keyword, deduplicated by advertiser ID across all of them.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "domains": {
            "title": "Websites (reverse advertiser lookup)",
            "type": "array",
            "description": "Website domains such as `shopify.com`. For each one the actor returns the advertisers whose Google ads point at that site — the reverse lookup, used to put a name to a competitor's ad spend. `https://` and `www.` are stripped for you. Note: this direction only works from domain to advertiser; Google does not expose an advertiser's website the other way round.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "resultsPerKeyword": {
            "title": "Advertisers per keyword",
            "minimum": 1,
            "maximum": 3000,
            "type": "integer",
            "description": "How many advertisers to request for each keyword. Google's endpoint caps out at 3000 and returns nothing above it, so that is the enforced maximum. Ranked by Google, so the first results are the closest name matches.",
            "default": 200
          },
          "countries": {
            "title": "Countries (ISO-2)",
            "type": "array",
            "description": "Keep only advertisers whose verified location is in these countries, e.g. `US`, `GB`, `AU`, `CA`. Leave empty for every country. A 1,000-row `plumbing` sample was 70% US, 13% AU, 7% CA, 5% GB, so this filter matters on generic trade keywords.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minAds": {
            "title": "Minimum ads run",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep advertisers who have run at least this many ads. The median advertiser on a trade keyword has run 5, so setting 20-50 here is the fastest way to strip out one-off and hobby advertisers. 0 = no minimum.",
            "default": 0
          },
          "maxAds": {
            "title": "Maximum ads run",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep advertisers who have run at most this many ads — use it to exclude national brands and keep the list to small and mid-size businesses. 0 = no maximum.",
            "default": 0
          },
          "enrichWithAdActivity": {
            "title": "Add ad-activity dates",
            "type": "boolean",
            "description": "Attach when each advertiser's ads were last and first seen (lastAdSeenAt, daysSinceLastAd, firstAdSeenAt) plus their exact ad count. This is what separates an advertiser still spending this week from one who stopped two years ago. Costs one extra request per advertiser; switch off for a faster, name-only list.",
            "default": true
          },
          "activeWithinDays": {
            "title": "Only advertisers active within N days",
            "minimum": 0,
            "type": "integer",
            "description": "Drop any advertiser whose most recent ad was last seen more than this many days ago — 30 gives you a currently-spending list. Requires the ad-activity dates, which are switched on automatically when you set this. 0 = no recency filter.",
            "default": 0
          },
          "maxItems": {
            "title": "Max advertisers",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many advertiser rows in total, across every keyword and domain. This is also the billing ceiling, since you are charged per advertiser delivered. 0 = no limit.",
            "default": 500
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Leave Apify Proxy ON. Google rate-limits the Ads Transparency endpoint by IP and answers a flagged address with a reCAPTCHA page instead of data — a plain unproxied IP was blocked during development while every Apify proxy session returned results. You can substitute your own residential proxy for very large runs.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}