# Google Ads Transparency Intelligence & Market Monitor (`lexxer/google-ads-transparency-intelligence`) Actor

Analyze 169M+ Google ad-transparency records across EEA markets and Turkey. Discover advertisers, search ad activity, rank market leaders, and inspect removed ads with strict query-cost controls.

- **URL**: https://apify.com/lexxer/google-ads-transparency-intelligence.md
- **Developed by:** [Lexxer ​](https://apify.com/lexxer) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.99 / ad activity query

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 Intelligence & Market Monitor

Analyze Google's official Ads Transparency Center dataset across the European Economic Area and Turkey without scraping fragile web pages.

The Actor turns more than 169 million public transparency records into structured advertiser discovery, ad-activity search, market leaderboards, and removed-ad policy intelligence. Google's dataset is updated periodically and may lag behind the website.

### Free and paid access

- **Apify FREE plan:** returns 10 clearly labeled cached Apple example rows. No BigQuery request is made and no external quota is consumed.
- **Paid Apify plans:** run a current BigQuery query after a free dry-run cost estimate, a successful pay-per-event charge, and a strict maximum-bytes check.

The cached example was captured from the official dataset on 2026-08-30. It is demonstration data, not a claim that those ads remain active today.

### Analysis modes

#### Discover advertisers

Find matching verified advertiser entities, legal and disclosed names, registered locations, ad counts, and latest activity. This is the economical first step when a brand has multiple Google advertiser IDs.

#### Search ad activity

Return creative IDs, ad formats, advertiser identity, served regions, first and last shown dates, impression ranges, topics, funding disclosures, and optional audience-selection signals.

This dataset reports transparency metadata and links to Ads Transparency Center. It does **not** contain Google Ads account keywords, bids, clicks, conversions, or complete creative copy.

#### Market leaderboard

Rank advertisers by distinct creatives or disclosed impression ranges in selected markets and date windows. Combine up to 25 brand or category terms in one query.

#### Removed ads

Inspect removed creatives, policy violation categories, removal reasons and locations, decision type, automated-review disclosure, served regions, dates, and impression ranges.

### Cost protection

Every paid run follows this order:

1. Validate and parameterize all inputs.
2. Ask BigQuery for a dry-run byte estimate; dry runs do not scan or bill data.
3. Reject the query if its estimate exceeds the mode-specific hard limit.
4. Charge the corresponding Apify event and verify the user's run budget accepted it.
5. Execute with `maximumBytesBilled` and BigQuery result caching enabled.

Free users stop before step 1 and receive the cached example. User values are always passed as BigQuery parameters and never inserted into SQL text.

### Pay-per-event prices

These launch prices sit just above the protected worst-case Google BigQuery cost after the 1 TiB monthly free allowance and Apify's 20% marketplace share. They prioritize early adoption while retaining only a small safety margin:

| Event | Price | Trigger |
| --- | ---: | --- |
| `advertiser-query` | $0.19 | One advertiser-discovery query |
| `ad-query` | $0.99 | One ad-activity query |
| `market-query` | $0.75 | One market leaderboard query |
| `removed-query` | $0.62 | One removed-ad query |

Cached demo runs do not emit any charge event. Each paid run emits exactly one query event only after its dry-run estimate passes the mode-specific cost limit.

### Output

Results are written to the default dataset. `OUTPUT` in the default key-value store records whether the run used cached demo or live data, the charged event, estimated processed bytes, enforced maximum bytes, source location, and emitted row count.

### Data source

- `bigquery-public-data.google_ads_transparency_center.creative_stats`
- `bigquery-public-data.google_ads_transparency_center.removed_creative_stats`

Use of the data is subject to Google's Terms of Service and Ads Transparency Center Additional Terms.

# Actor input Schema

## `mode` (type: `string`):

Discover advertisers, inspect individual ad activity, rank advertisers in selected markets, or investigate removed ads.

## `searchTerms` (type: `array`):

Case-insensitive search terms. Combine up to 25 terms in one query; this is much more economical than separate runs.

## `advertiserIds` (type: `array`):

Optional AR-prefixed IDs from Ads Transparency Center URLs. Exact IDs avoid ambiguous brand matches.

## `regions` (type: `array`):

EEA countries and Turkey covered by the official public dataset.

## `advertiserLocations` (type: `array`):

Optional country-code filter for where advertisers are registered. This differs from Markets where ads were shown.

## `formats` (type: `array`):

Leave empty to include every disclosed format.

## `surfaces` (type: `array`):

Optional platform filter. Platform filtering scans additional columns and therefore uses the larger protected query tier.

## `startDate` (type: `string`):

Include records shown on or after this date. Official impression reporting begins on 2023-03-01.

## `endDate` (type: `string`):

Inclusive last-shown date. Leave empty through the API to use today.

## `removalReasons` (type: `array`):

Used only in Removed ads mode. Matches Google's removal reason and violation category.

## `includeAudienceSignals` (type: `boolean`):

Adds whether demographics, geography, customer lists, contextual signals, or interest topics influenced audience selection.

## `maxResults` (type: `integer`):

Hard output limit. Increasing this does not bypass the protected BigQuery scan limit.

## `sortBy` (type: `string`):

Choose the most useful ordering for the selected analysis.

## Actor input object example

```json
{
  "mode": "ad-search",
  "searchTerms": [
    "Apple"
  ],
  "advertiserIds": [],
  "regions": [
    "AT",
    "DE",
    "FR"
  ],
  "advertiserLocations": [],
  "formats": [],
  "surfaces": [],
  "startDate": "2026-01-01",
  "removalReasons": [],
  "includeAudienceSignals": true,
  "maxResults": 250,
  "sortBy": "newest"
}
```

# Actor output Schema

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

Cached demo rows for free users or current BigQuery-backed rows for paid users.

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

Mode, access tier, BigQuery estimate, cost guard, charged event, and result count.

# 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 = {
    "searchTerms": [
        "Apple"
    ],
    "startDate": "2026-01-01"
};

// Run the Actor and wait for it to finish
const run = await client.actor("lexxer/google-ads-transparency-intelligence").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 = {
    "searchTerms": ["Apple"],
    "startDate": "2026-01-01",
}

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

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

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

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "Apple"
  ],
  "startDate": "2026-01-01"
}' |
apify call lexxer/google-ads-transparency-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lexxer/google-ads-transparency-intelligence"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/BaOiwDliK26cQsYQx/builds/YQWerzB1SVRHwXXv8/openapi.json
