{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Ads Transparency Scraper - Ad Copy, Reach & New Ads",
    "description": "Every Google ad of a domain, advertiser or brand from the Ads Transparency Center: first and last shown, ad copy and landing page (text ads read from their picture too), countries, EU reach and targeting, who paid. Watch mode returns only new and stopped ads. Works as an MCP tool for AI agents.",
    "version": "0.0",
    "x-build-id": "EjZKugWFr473M4TbC"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlplant~google-ads-transparency/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlplant-google-ads-transparency",
        "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/crawlplant~google-ads-transparency/runs": {
      "post": {
        "operationId": "runs-sync-crawlplant-google-ads-transparency",
        "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/crawlplant~google-ads-transparency/run-sync": {
      "post": {
        "operationId": "run-sync-crawlplant-google-ads-transparency",
        "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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "ads",
              "advertisers",
              "domainCheck",
              "summary",
              "messages",
              "timeline"
            ],
            "type": "string",
            "description": "ads = one row per ad (creative) of each target, newest shown first; advertisers = one row per advertiser account (for a name: every matching account, biggest first; for a domain: every account advertising it, including agencies and resellers); domainCheck = one row per domain: does it run Google ads, how many, since when, by whom; summary = one row per target: active and new ads, formats, top messages, longest-running ads, top landing pages and campaigns of its most recently shown ads; messages = the target's ads grouped by message (headline), most used first, with ads, days shown, landing pages and campaigns. summary and messages read every ad's copy and are charged per ad analysed. timeline = one row per week of the last year for each target: ads launched, stopped, shown and running on an average day, from the ad list alone.",
            "default": "ads"
          },
          "targets": {
            "title": "Domains, advertisers or Transparency Center URLs",
            "type": "array",
            "description": "Mix freely: a domain (nike.com; website URLs and www. are reduced to the domain), an advertiser id (AR16735076323512287233), an advertiser name (Nike, the biggest matching account is used), or a URL copied from adstransparency.google.com (an advertiser page, a single ad, or a search with ?domain=; its region, format, platform and date filters are applied).",
            "items": {
              "type": "string"
            },
            "default": [
              "nike.com"
            ]
          },
          "region": {
            "title": "Country",
            "type": "string",
            "description": "Only ads shown in this country: a 2-letter code (US, GB, DE, FR, AU, ...) or anywhere. 244 countries and territories.",
            "default": "anywhere"
          },
          "format": {
            "title": "Ad format",
            "enum": [
              "all",
              "text",
              "image",
              "video"
            ],
            "type": "string",
            "description": "text = search ads, image = display and shopping ads, video = YouTube and video ads.",
            "default": "all"
          },
          "platform": {
            "title": "Shown on",
            "enum": [
              "all",
              "search",
              "youtube",
              "shopping",
              "maps",
              "play"
            ],
            "type": "string",
            "description": "Only ads shown on this Google platform.",
            "default": "all"
          },
          "dateFrom": {
            "title": "Shown from",
            "type": "string",
            "description": "Only ads shown on or after this day: 2026-09-01, yesterday, or -30 (30 days ago). The Transparency Center keeps day-by-day activity for about the last 13 months. Empty = any time."
          },
          "dateTo": {
            "title": "Shown until",
            "type": "string",
            "description": "Only ads shown on or before this day (same formats). Empty = today."
          },
          "firstShownFrom": {
            "title": "First shown from (new ads only)",
            "type": "string",
            "description": "Only ads that started running on or after this day, e.g. -7 for ads launched in the last week. Checked on the ads read (see Max ads per target)."
          },
          "minDaysShown": {
            "title": "Minimum days shown",
            "minimum": 0,
            "type": "integer",
            "description": "Only ads Google showed on at least this many days. Long-running ads are the ones that keep paying off for the advertiser. 0 = any.",
            "default": 0
          },
          "activeOnly": {
            "title": "Running now only",
            "type": "boolean",
            "description": "Only ads shown in the last 2 days.",
            "default": false
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "lastShown",
              "firstShown",
              "daysShown"
            ],
            "type": "string",
            "description": "lastShown = the Transparency Center's own order (most recently shown first); firstShown = newest ads first; daysShown = longest-running first. The last two sort the ads read (Max ads per target).",
            "default": "lastShown"
          },
          "includeDetails": {
            "title": "Countries, impressions and targeting",
            "type": "boolean",
            "description": "One extra request per ad: every country the ad was shown in with its first and last day; for ads shown in the EU also impressions per country and per platform and the kinds of targeting used (Digital Services Act disclosures); all variations of the ad; who paid for it. Charged per ad as ad-details.",
            "default": false
          },
          "includeAdContent": {
            "title": "Ad copy, video and landing page",
            "type": "boolean",
            "description": "One extra request per ad: headline, description, call to action, display URL and landing page when the ad has them, the YouTube video id and duration of video ads, product title and merchant of shopping ads, the visible text of display ads. Charged per ad that returned copy as ad-content.",
            "default": false
          },
          "ocrTextAds": {
            "title": "Read text ads stored as pictures (OCR)",
            "type": "boolean",
            "description": "With ad copy on: Google keeps most text ads only as a picture of the ad. This reads the headline, description, display URL and sitelinks from that picture. Charged per ad that returned text as ad-text-ocr.",
            "default": true
          },
          "ocrLanguages": {
            "title": "OCR languages",
            "type": "array",
            "description": "Languages of the ads' text for the OCR, as Tesseract codes: eng, deu, fra, spa, ita, por, nld, pol, tur, jpn, kor, chi_sim... (up to 5). Empty = English plus the language of the chosen region.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "onlyNew": {
            "title": "Only new ads since the last run (watch)",
            "type": "boolean",
            "description": "Watch mode for scheduled runs: returns only ads this Actor has not returned before for the same target and filters. The first run returns the current ads as the baseline. The state is kept in a key-value store named google-ads-transparency-watch in your own account. Each run compares the Max ads per target most recently shown ads.",
            "default": false
          },
          "includeStopped": {
            "title": "Also report stopped ads",
            "type": "boolean",
            "description": "With watch mode: also returns ads that were running at the previous run and are not running any more (watchStatus stopped).",
            "default": false
          },
          "advertisersPerName": {
            "title": "Accounts per advertiser name",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Ads mode, for advertiser names: how many matching accounts to read (biggest first). Brands often have one account per country or agency; the log lists the others.",
            "default": 1
          },
          "maxItems": {
            "title": "Max ads per target",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Ads mode: rows per target (in watch mode: how many of the most recently shown ads each run compares). Advertisers mode: accounts per name or domain. Summary and messages modes: how many of the most recently shown ads to analyse per target (200-500 gives a fuller picture).",
            "default": 100
          },
          "maxScanPages": {
            "title": "Max pages per target",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Safety cap on pages read per target (100 ads per page) when selective filters (minimum days shown, first shown from, running now) keep few of the ads read. Never fewer pages than Max ads per target needs.",
            "default": 20
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}