# Google Ads Transparency Competitor Monitor (`ovular_cappuccino/google-ads-transparency-monitor`) Actor

Track competitors' Google Ads Transparency Center creatives by advertiser, domain, or advertiser ID. Returns clean ad records plus advertiser summaries for PPC, ecommerce, SaaS, and agency intelligence workflows.

- **URL**: https://apify.com/ovular\_cappuccino/google-ads-transparency-monitor.md
- **Developed by:** [Rean Opperman](https://apify.com/ovular_cappuccino) (community)
- **Categories:** Lead generation, SEO tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.65 / 1,000 ad intelligence records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Google Ads Transparency Competitor Monitor

Track competitors' Google Ads Transparency Center creatives by advertiser name, domain, or advertiser ID. The Actor returns clean ad records plus one advertiser summary row per query, so PPC teams, ecommerce brands, agencies, and growth teams can see who is advertising, which creatives they use, where ads are visible, and when ads were last shown.

### Why use this Actor?

Most Transparency Center scrapers dump creative IDs. This Actor is built for competitor intelligence:

- resolves advertiser names, domains, URLs, or direct Google advertiser IDs
- returns an `advertiser_summary` row before the ad rows for each query
- extracts creative URLs where available
- includes first shown / last shown dates when available
- includes region/country and platform signals from detailed creative metadata
- supports country filters such as `US`, `GB`, `CA`, `AU`, `DE`, `FR`, and `ZA`
- explains zero-result country filters with `requestedCountries`, `matchedRequestedCountries`, `countryFilterApplied`, `noAdsReason`, and `unfilteredSampleCount`
- returns candidate suggestions and domain matches when a brand cannot be resolved, instead of a blind `No advertiser found`
- uses a clean dataset schema for CSV export, CRM enrichment, dashboards, and AI analysis

### Example input

```json
{
  "searchMode": "auto",
  "queries": ["Google LLC", "amazon.com", "Shopify Inc."],
  "countries": ["US", "GB"],
  "maxAdsPerQuery": 50,
  "includeDetails": true,
  "includeCreativeAssets": true,
  "activeOnly": false
}
````

### Output records

The dataset contains two record types.

#### `advertiser_summary`

One summary row per input query:

```json
{
  "recordType": "advertiser_summary",
  "query": "Google LLC",
  "advertiserName": "Google LLC",
  "advertiserId": "AR14188379519798214657",
  "adCountReturned": 50,
  "activeAdsReturned": 47,
  "formats": ["image", "video"],
  "platforms": ["Display", "YouTube"],
  "countries": ["US", "GB"]
}
```

#### `ad`

One row per creative/ad:

```json
{
  "recordType": "ad",
  "query": "Google LLC",
  "advertiserName": "Google LLC",
  "advertiserId": "AR14188379519798214657",
  "creativeId": "CR06139091751706558465",
  "adFormat": "image",
  "firstShown": "2025-08-04",
  "lastShown": "2026-07-06",
  "isActive": true,
  "platforms": ["Display", "YouTube"],
  "countries": ["US"],
  "creativeUrl": "https://tpc.googlesyndication.com/archive/simgad/...",
  "sourceUrl": "https://adstransparency.google.com/advertiser/AR.../creative/CR..."
}
```

### Input fields

- `searchMode` — `auto`, `domain`, `advertiser`, or `advertiserId`.
- `queries` — advertiser names, domains, URLs, or Google advertiser IDs.
- `countries` — optional ISO country filters. Leave empty for all available countries. If a country filter returns zero ads, the summary row explains this and checks whether the advertiser has ads without the filter.
- `maxAdsPerQuery` — maximum ads per resolved advertiser.
- `includeDetails` — fetch richer creative metadata. Recommended.
- `includeCreativeAssets` — include image/video/preview URLs.
- `activeOnly` — keep only ads whose detailed last-shown date appears current.
- `delayMs` — politeness delay between detail requests.

### Common use cases

- Monitor competitors' active Google creatives.
- Export ad examples for PPC swipe files.
- Track competitor campaign freshness and creative volume.
- Find active advertisers in a market before sales outreach.
- Feed structured ad intelligence into dashboards, sheets, or AI summaries.

### Practical notes

Google Ads Transparency Center is a public source but its internal RPC format can change. The Actor is designed with conservative request rates and source raw data fields so changes can be debugged quickly.

For large advertisers, start with a smaller `maxAdsPerQuery` such as `50` or `100`, then increase once you confirm the matched advertiser is correct.

# Actor input Schema

## `searchMode` (type: `string`):

How to resolve each query. Auto detects advertiser IDs, domains, URLs, and advertiser names.

## `queries` (type: `array`):

Advertiser names, advertiser IDs like AR14188379519798214657, or domains like nike.com. One dataset summary plus ad records are returned per query.

## `countries` (type: `array`):

Optional ISO country filters such as US, GB, CA, AU, DE, FR, ZA. Leave empty for all available regions.

## `maxAdsPerQuery` (type: `integer`):

Maximum creative/ad records to return per resolved advertiser. One additional advertiser\_summary row is also included per query.

## `includeDetails` (type: `boolean`):

Fetch creative detail records with richer region, reach, platform, and asset metadata. Recommended for competitor intelligence.

## `includeCreativeAssets` (type: `boolean`):

Include image/video/preview URLs when available from the Transparency Center response.

## `activeOnly` (type: `boolean`):

When detailed dates are available, filter out ads whose last shown date appears to be in the past.

## `delayMs` (type: `integer`):

Politeness delay between creative detail requests. Increase this if Google throttles large runs.

## Actor input object example

```json
{
  "searchMode": "auto",
  "queries": [
    "Google LLC",
    "Amazon",
    "Shopify Inc."
  ],
  "countries": [],
  "maxAdsPerQuery": 50,
  "includeDetails": true,
  "includeCreativeAssets": true,
  "activeOnly": false,
  "delayMs": 150
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "Google LLC",
        "Amazon",
        "Shopify Inc."
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ovular_cappuccino/google-ads-transparency-monitor").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "queries": [
        "Google LLC",
        "Amazon",
        "Shopify Inc.",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("ovular_cappuccino/google-ads-transparency-monitor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "Google LLC",
    "Amazon",
    "Shopify Inc."
  ]
}' |
apify call ovular_cappuccino/google-ads-transparency-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=ovular_cappuccino/google-ads-transparency-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Ads Transparency Competitor Monitor",
        "description": "Track competitors' Google Ads Transparency Center creatives by advertiser, domain, or advertiser ID. Returns clean ad records plus advertiser summaries for PPC, ecommerce, SaaS, and agency intelligence workflows.",
        "version": "0.1",
        "x-build-id": "jIwayZGbwyHpPbDtu"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/ovular_cappuccino~google-ads-transparency-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-ovular_cappuccino-google-ads-transparency-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/ovular_cappuccino~google-ads-transparency-monitor/runs": {
            "post": {
                "operationId": "runs-sync-ovular_cappuccino-google-ads-transparency-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/ovular_cappuccino~google-ads-transparency-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-ovular_cappuccino-google-ads-transparency-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": [
                    "queries"
                ],
                "properties": {
                    "searchMode": {
                        "title": "Search mode",
                        "enum": [
                            "auto",
                            "domain",
                            "advertiser",
                            "advertiserId"
                        ],
                        "type": "string",
                        "description": "How to resolve each query. Auto detects advertiser IDs, domains, URLs, and advertiser names.",
                        "default": "auto"
                    },
                    "queries": {
                        "title": "Competitors / advertisers / domains",
                        "type": "array",
                        "description": "Advertiser names, advertiser IDs like AR14188379519798214657, or domains like nike.com. One dataset summary plus ad records are returned per query.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "countries": {
                        "title": "Countries / regions",
                        "type": "array",
                        "description": "Optional ISO country filters such as US, GB, CA, AU, DE, FR, ZA. Leave empty for all available regions.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxAdsPerQuery": {
                        "title": "Maximum ads per query",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum creative/ad records to return per resolved advertiser. One additional advertiser_summary row is also included per query.",
                        "default": 50
                    },
                    "includeDetails": {
                        "title": "Fetch detailed creative data",
                        "type": "boolean",
                        "description": "Fetch creative detail records with richer region, reach, platform, and asset metadata. Recommended for competitor intelligence.",
                        "default": true
                    },
                    "includeCreativeAssets": {
                        "title": "Include creative asset URLs",
                        "type": "boolean",
                        "description": "Include image/video/preview URLs when available from the Transparency Center response.",
                        "default": true
                    },
                    "activeOnly": {
                        "title": "Active ads only",
                        "type": "boolean",
                        "description": "When detailed dates are available, filter out ads whose last shown date appears to be in the past.",
                        "default": false
                    },
                    "delayMs": {
                        "title": "Delay between detail requests",
                        "minimum": 0,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Politeness delay between creative detail requests. Increase this if Google throttles large runs.",
                        "default": 150
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
