{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Ads Scraper",
    "description": "Scrape Google Ads Transparency Center data: text, image, and video ads with clean headlines, body copy, CTAs, and business details. Get political ad spend and impression ranges most scrapers miss, plus advertiser verification info.",
    "version": "0.1",
    "x-build-id": "RWMdafJ6Ql6wgLzSs"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/api_creators~google-ads-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-api_creators-google-ads-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/api_creators~google-ads-scraper/runs": {
      "post": {
        "operationId": "runs-sync-api_creators-google-ads-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/api_creators~google-ads-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-api_creators-google-ads-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": "Start URLs",
            "type": "array",
            "description": "A list of Google Ads Transparency Center URLs after a specific advertiser or domain is selected. Each URL must start with \"https://adstransparency.google.com/...\"",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "advertiserNames": {
            "title": "Advertiser names",
            "type": "array",
            "description": "Plain advertiser names to resolve via SearchSuggestions instead of a pre-resolved Transparency Center URL. If several accounts share the name, all matching advertiser ids are queried at once.",
            "items": {
              "type": "string"
            }
          },
          "domains": {
            "title": "Domains",
            "type": "array",
            "description": "Advertiser domains (e.g. \"nike.com\") to run a domain-scoped listing for, instead of a pre-resolved Transparency Center URL.",
            "items": {
              "type": "string"
            }
          },
          "resultsLimit": {
            "title": "Results limit",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of results per input URL/advertiser name/domain. Due to the concurrent nature of the actor, the actual number of requests may exceed the configured maximum."
          },
          "skipDetails": {
            "title": "Skip details ⚡ (~4x faster)",
            "type": "boolean",
            "description": "If true, the actor will not open the details page for each individual ad. Instead, it will only scroll through the list of ads. All ads will be included, but the information for each ad may be less complete. Enabling this option results in much faster scraping.",
            "default": false
          },
          "topic": {
            "title": "Topic",
            "enum": [
              "all",
              "political"
            ],
            "type": "string",
            "description": "Restrict results to political ads (exposes spend and impressions data) or leave as all topics.",
            "default": "all"
          },
          "shouldDownloadAssets": {
            "title": "Should download assets?",
            "type": "boolean",
            "description": "Defines if the scraper should download creative assets (such as video ads) when the original URLs scraped have short expiry dates. This allows for more permanent storage of the files. Disclaimer: use this option with caution to avoid downloading excessive data from Google, which could be considered abusive. This option is ignored if \"Skip details\" is enabled.",
            "default": false
          },
          "shouldDownloadPreviews": {
            "title": "Should download previews?",
            "type": "boolean",
            "description": "Defines if the scraper should download creative previews as an HTML file, ensuring that the output field `previewUrl` is always populated. Enabling this option may slightly increase costs due to writes to a key-value store.",
            "default": false
          },
          "ocr": {
            "title": "Use OCR for image/text ads",
            "type": "boolean",
            "description": "Enables local OCR (PaddleOCR, CPU-only) for screenshot-only ad variations (all IMAGE ads, plus the redundant screenshot of TEXT ads). Note: enabling OCR will significantly slow down the scraping speed and incurs a separate ocr-ad charge. This option is ignored if \"Skip details\" is enabled.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Max concurrency (advanced)",
            "minimum": 1,
            "type": "integer",
            "description": "Caps Crawlee's autoscaled pool. Leave unset to let Crawlee autoscale."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Select proxies to be used. A proxy is required — Google 429-blocks unproxied IPs after ~15-20 RPC calls.",
            "default": {
              "apifyProxyGroups": [],
              "useApifyProxy": true
            }
          },
          "assetProxyConfiguration": {
            "title": "Asset download proxy (advanced)",
            "type": "object",
            "description": "Optional separate proxy used only for downloading ad previews, images and videos. These are unthrottled CDN endpoints that account for roughly 90% of all traffic, so pointing them at a cheap flat-rate proxy moves the bulk of your bandwidth off metered residential proxy billing. Leave unset to download them through the main proxy, as before. If a download through this proxy fails, the scraper automatically retries via the main proxy, so results are never lost."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}