{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Ads Transparency Scraper - Creative Monitor",
    "description": "Google Ads Transparency scraper for exact advertiser IDs. Collect public creatives without Google login or an API key, then monitor verified new, stopped, resumed and changed ads across runs. Export ad data and lifecycle events in JSON for PPC competitor research.",
    "version": "0.0",
    "x-build-id": "fKxINqd5ODhd7GeAd"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/kamerozkan~google-ads-verified-change-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-kamerozkan-google-ads-verified-change-monitor",
        "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/kamerozkan~google-ads-verified-change-monitor/runs": {
      "post": {
        "operationId": "runs-sync-kamerozkan-google-ads-verified-change-monitor",
        "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/kamerozkan~google-ads-verified-change-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-kamerozkan-google-ads-verified-change-monitor",
        "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",
        "required": [
          "advertiserIds"
        ],
        "properties": {
          "advertiserIds": {
            "title": "Google advertiser IDs or URLs",
            "minItems": 1,
            "maxItems": 20,
            "uniqueItems": true,
            "type": "array",
            "description": "Paste 1-20 native AR advertiser IDs or full Google Ads Transparency advertiser URLs. Exact IDs prevent unrelated advertisers from being mixed into the monitor.",
            "items": {
              "type": "string",
              "pattern": "^(AR[0-9]+|https://adstransparency\\.google\\.com/advertiser/AR[0-9]+(?:[/?#].*)?)$"
            }
          },
          "region": {
            "title": "Ad delivery region",
            "enum": [
              "US",
              "GB",
              "CA",
              "AU",
              "DE",
              "FR",
              "ES",
              "IT",
              "NL",
              "BE",
              "CH",
              "AT",
              "IE",
              "SE",
              "NO",
              "DK",
              "FI",
              "PL",
              "PT",
              "CZ",
              "RO",
              "HU",
              "GR",
              "BR",
              "MX",
              "IN",
              "JP",
              "KR",
              "SG",
              "NZ",
              "AE",
              "ZA",
              "TR"
            ],
            "type": "string",
            "description": "Return creatives shown in this country. Monitor the same advertiser separately when you need both regions.",
            "default": "US"
          },
          "monitorName": {
            "title": "Monitor name",
            "pattern": "^[A-Za-z0-9._-]{3,64}$",
            "minLength": 3,
            "maxLength": 64,
            "type": "string",
            "description": "Stable name used to compare scheduled runs; keep it unchanged for one watchlist. The first observation of a monitor bills zero verified changes, so starting a new watchlist never charges for baseline events.",
            "default": "competitor-watch"
          },
          "mode": {
            "title": "Monitoring mode",
            "enum": [
              "AUTO",
              "FULL_LIFECYCLE",
              "NEW_LAUNCH_FEED"
            ],
            "type": "string",
            "description": "Auto uses full lifecycle when every page finishes and safely falls back to new-launch tracking for very large accounts.",
            "default": "AUTO"
          },
          "lookbackDays": {
            "title": "Activity window in days",
            "minimum": 1,
            "maximum": 90,
            "type": "integer",
            "description": "Monitor creatives that appeared in this rolling window. Keep this value unchanged across scheduled runs.",
            "default": 7
          },
          "maxCreativesPerAdvertiser": {
            "title": "Maximum creatives per advertiser",
            "minimum": 40,
            "maximum": 5000,
            "type": "integer",
            "description": "Safety and scan-cost cap for each advertiser. At the default cap, scanning costs at most $1.50 per advertiser plus verified changes and the Actor start. Auto mode switches to new-launch tracking when the complete account exceeds this limit.",
            "default": 1000
          },
          "outputMode": {
            "title": "Dataset output",
            "enum": [
              "CHANGES_ONLY",
              "ALL_CHECKED"
            ],
            "type": "string",
            "description": "Current creatives plus changes is best for the first run and one-time exports. Changes only is best for scheduled alerts.",
            "default": "ALL_CHECKED"
          },
          "includeBaseline": {
            "title": "Label the first baseline as new",
            "type": "boolean",
            "description": "Advanced option for changes-only output. When enabled, the first successful run labels existing creatives as NEW instead of creating a silent baseline. Current-creatives output already returns them as CURRENT.",
            "default": false
          },
          "includeTentative": {
            "title": "Include first missing observation",
            "type": "boolean",
            "description": "Expose MISSING_ONCE rows before a second complete absence confirms that a creative stopped.",
            "default": false
          },
          "failOnAllTargetsFailed": {
            "title": "Fail when no advertiser succeeds",
            "type": "boolean",
            "description": "Fail the run after writing diagnostics when every advertiser target fails.",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}