{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Ads Transparency & Meta Ads Scraper — No Login",
    "description": "Competitor ads from Google Ads Transparency Center and Meta Ad Library in one run. Brands, domains or advertiser IDs; bulk lists from CSV or Google Sheets; advertiser check mode for lead lists; new-ads monitor for schedules. No login or cookies. MCP-ready for AI agents.",
    "version": "1.0",
    "x-build-id": "dd3swL29pcYr8Yljw"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fortuitous_pirate~google-ads-transparency-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fortuitous_pirate-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/fortuitous_pirate~google-ads-transparency-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fortuitous_pirate-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/fortuitous_pirate~google-ads-transparency-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fortuitous_pirate-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": {
          "queries": {
            "title": "Brands, domains or advertiser IDs",
            "type": "array",
            "description": "One per line. Mix freely: brand names (Nike), domains (nike.com), Google advertiser IDs (AR...), Meta page IDs, or Transparency Center / Ad Library URLs. Empty runs a nike.com sample.",
            "items": {
              "type": "string"
            }
          },
          "listUrl": {
            "title": "Import a list (CSV, TXT or Google Sheet link)",
            "type": "string",
            "description": "Link to a CSV/TXT file or a Google Sheet shared as 'anyone with the link'. The first column of each row is read; a header row like 'domain' is skipped. Use it for thousands of domains."
          },
          "sources": {
            "title": "Ad networks",
            "type": "array",
            "description": "Google Ads Transparency Center, Meta Ad Library (Facebook, Instagram, Messenger, Audience Network), or both in one run.",
            "items": {
              "type": "string",
              "enum": [
                "google",
                "meta"
              ],
              "enumTitles": [
                "Google (Search, YouTube, Shopping, Maps, Play)",
                "Meta (Facebook, Instagram)"
              ]
            },
            "default": [
              "google"
            ]
          },
          "mode": {
            "title": "What to return",
            "enum": [
              "ads",
              "advertiserCheck"
            ],
            "type": "string",
            "description": "Ads: one row per ad creative. Advertiser check: one row per query and network saying whether the company is advertising, its ad count, formats and last ad date. Built for checking lead lists.",
            "default": "ads"
          },
          "region": {
            "title": "Region",
            "type": "string",
            "description": "Two-letter country code (US, GB, DE, ...). Empty means anywhere."
          },
          "platform": {
            "title": "Google surface",
            "enum": [
              "",
              "SEARCH",
              "YOUTUBE",
              "MAPS",
              "PLAY",
              "SHOPPING"
            ],
            "type": "string",
            "description": "Limit Google ads to one surface."
          },
          "format": {
            "title": "Google ad format",
            "enum": [
              "",
              "TEXT",
              "IMAGE",
              "VIDEO"
            ],
            "type": "string",
            "description": "Limit Google ads to one format."
          },
          "startDate": {
            "title": "Shown on or after",
            "type": "string",
            "description": "YYYY-MM-DD. Keeps ads last shown on or after this date."
          },
          "endDate": {
            "title": "Shown on or before",
            "type": "string",
            "description": "YYYY-MM-DD. Keeps ads first shown on or before this date."
          },
          "activeOnly": {
            "title": "Active ads only",
            "type": "boolean",
            "description": "Meta: active ads only. Google: ads shown in the last 2 days.",
            "default": false
          },
          "onlyNewAds": {
            "title": "Monitor: return only new ads",
            "type": "boolean",
            "description": "Remembers every ad seen in earlier runs with the same monitor ID and returns only ads that are new since then. Schedule it daily or weekly for competitor alerts. The first run returns the current ads.",
            "default": false
          },
          "monitorId": {
            "title": "Monitor ID",
            "type": "string",
            "description": "Name for the monitor's memory. Use one ID per competitor list.",
            "default": "default"
          },
          "firstRunBaseline": {
            "title": "Monitor: silent first run",
            "type": "boolean",
            "description": "First run with a new monitor ID only records the current ads as the baseline and returns nothing; later runs return what is new.",
            "default": false
          },
          "webhookUrl": {
            "title": "Monitor: webhook URL",
            "type": "string",
            "description": "Optional. POSTed once per monitor run with {monitorId, runId, newCount, ads: [first 50 new ads]}."
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Total rows for the whole run.",
            "default": 10
          },
          "maxAdsPerQuery": {
            "title": "Max ads per query",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Cap per brand/domain and network, so one big advertiser does not use up the run.",
            "default": 100
          },
          "concurrency": {
            "title": "Parallel checks",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Advertiser check mode only: how many companies to check at once (1 to 10).",
            "default": 3
          },
          "searchQuery": {
            "title": "Search query (legacy)",
            "type": "string",
            "description": "Kept for existing integrations. Same as one entry in the list above."
          },
          "advertiserId": {
            "title": "Advertiser ID (legacy)",
            "type": "string",
            "description": "Kept for existing integrations. Same as an AR... entry in the list above."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Without one, cloud runs use Apify residential proxy because Google rate-limits shared datacenter IPs."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}