# Competitor Ad Intelligence - Ad Spy Tool (`logiover/competitor-ad-intelligence`) Actor

Google Ads Transparency Center scraper. Export competitor ad creatives, format mix and volume to CSV/JSON. No login - an unofficial API alternative.

- **URL**: https://apify.com/logiover/competitor-ad-intelligence.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** Lead generation, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$0.05 / competitor ad report

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

## 🎯 Competitor Ad Intelligence – Spy on Rivals' Google Ads

**See exactly what ads your competitors are running on Google — in one report.**
Enter a brand or domain → get their active-ad volume, **creative format mix**, newest creatives, sample previews, and a plain-English **ad-strategy summary**. No API key, no login.

This Actor is a **competitor ad spy** / **ad intelligence** / **ad research** tool powered by **Google's Ads Transparency Center**. It's built for performance marketers, agencies, and founders who want to reverse-engineer a rival's advertising playbook in seconds — and do it in bulk.

> Want to **spy on competitor ads**, **see what ads a brand is running**, analyze a rival's **Google ad strategy**, or pull **ad creative references** at scale? Drop in the brands and export clean JSON / CSV / Excel.

---

### ✅ What each report includes

- **Brand / advertiser** (auto-resolved from a name) + domain + country
- **Estimated active ads** running right now
- **Creative format mix** — image / video / display / text (their channel strategy)
- **Dominant formats** + **newest & oldest creative dates** (how fresh / aggressive they are)
- **Sample creatives** with preview URLs
- A plain-English **strategy summary** you can paste straight into a deck

---

### 🎯 Best for

- **Performance marketers** — reverse-engineer a competitor's winning ad formats and cadence
- **Agencies** — build competitive ad audits for pitches and monthly client reports
- **Founders & growth teams** — gauge how aggressively rivals advertise before you launch
- **Creative & UGC teams** — pull competitor creative references fast
- **Media buyers** — see format/creative mix before allocating budget
- **Market research** — benchmark ad activity across an entire category

---

### ⚡ Why this one

- **One-click, key-free** — brand name in, strategy report out. No login, no token, no cookie.
- **Compiled, not raw** — a decision-ready playbook per competitor, not a dump of every ad.
- **Official source** — Google Ads Transparency Center data, queried directly (no fragile page scraping).
- **Bulk + API** — analyze a whole competitor set per run; export or pull via the Apify API.
- **Region targeting** — focus on a specific country or search worldwide.

---

### 🛠 How to use

1. Add competitor **brand names** (e.g. `Nike`, `HubSpot`) and/or **domains** (`nike.com`).
2. Pick a **region** (or `anywhere`) and a sample size.
3. Run and read the **strategy summary**, or export the dataset.

#### Example input
```json
{ "brands": ["Nike", "HubSpot"], "region": "US", "maxAdsPerBrand": 60 }
````

***

### 📤 Output

```json
{
  "brand": "Nike, Inc.",
  "domain": "nike.com",
  "regionSearched": "US",
  "estimatedActiveAds": "8000-9000",
  "adsAnalyzed": 60,
  "formatMix": { "IMAGE": 52, "DISPLAY": 8, "VIDEO": 0, "TEXT": 0 },
  "dominantFormats": ["IMAGE", "DISPLAY"],
  "newestCreativeDate": "2026-05-30",
  "strategySummary": "Nike, Inc. is running roughly 8000-9000 ads on Google. Creative mix is led by IMAGE + DISPLAY ads. Most recent creative seen 2026-05-30.",
  "sampleAds": [{ "format": "IMAGE", "previewUrl": "https://...", "lastShown": "2026-05-30" }]
}
```

***

### 💡 Example use cases

- **Pre-launch recon** → check how many ads a competitor runs and in what formats before you spend a dollar.
- **Monthly competitive report** → track rivals' active-ad volume and creative mix over time.
- **Creative inspiration** → pull a competitor's live creatives to brief your designers.
- **Category benchmark** → run 10 brands and compare who's advertising hardest.

***

### 🆚 How it compares

**vs. raw ad-library scrapers** — those dump every ad; this compiles a per-brand strategy report you can actually act on.

**vs. paid ad-spy SaaS** — same Google ad-transparency intelligence on pay-per-result Apify pricing, with CSV/Excel/JSON export, API access and no subscription.

**vs. checking manually** — the Transparency Center is slow to browse brand-by-brand; this resolves brands and compiles reports in bulk.

***

### ❓ FAQ

#### Where does the competitor ad data come from?

Google's official **Ads Transparency Center**, queried directly — no login, no cookies, no browser.

#### Can I search by domain instead of brand name?

Yes — use `domains`. Brand names are auto-resolved to advertiser IDs.

#### Does this ad spy tool cover Meta / TikTok ads too?

This version focuses on Google — the highest-coverage, key-free source — which reveals most of a brand's paid-search and display strategy.

#### Is it one report per competitor?

Yes — each brand or domain produces a single compiled strategy report.

#### Can I run it on a schedule?

Yes — schedule recurring runs to track competitors' ad activity over time.

#### Is this a Google Ads Transparency Center API alternative?

There's no official Google Ads Transparency Center API, so this Actor acts as an unofficial API alternative — query the Transparency Center directly and pull structured data, no key or login.

#### How do I scrape Google Ads Transparency without login?

Just enter brand names or domains and run. The Actor queries Google's Ads Transparency Center key-free — no API token, no login, no cookies.

#### How do I export competitor ad data to CSV or JSON?

Every run writes a clean dataset you can export to CSV, Excel or JSON, or pull via the Apify API — competitor ad creatives, format mix and volume included.

***

### 💰 Pricing

Pay-per-result: charged **per competitor report**. No subscription.

***

#### Keywords

competitor ad spy, ad intelligence tool, google ads transparency, see competitor ads, what ads is a brand running, spy on competitor ads, competitor ad analysis, ad strategy report, ad spy tool, paid ads research, competitive advertising intelligence, brand ad monitoring, ad creative research, google ad library, advertising competitive analysis, find competitor ads, ad transparency scraper, google ads transparency center scraper, google ads transparency api alternative, scrape google ads transparency without login, export competitor ads to csv, google ad creative scraper.

### 📝 Changelog

#### 2026-06-07

- Docs: added coverage for using this as a Google Ads Transparency Center API alternative, scraping without login, and exporting competitor ad data to CSV/JSON.

#### 2026-06-05

- 🛡️ Reliability fix: results are no longer dropped by strict output validation — runs now complete cleanly even at high volume (thousands of results).
- ⚡ Stability & performance hardening; fresh rebuild.

#### 2026-06-04

- Verified live & refreshed build — reliability/maintenance pass.

# Actor input Schema

## `brands` (type: `array`):

Brand/advertiser names to analyze (resolved automatically), e.g. Nike, HubSpot.

## `domains` (type: `array`):

Alternatively, search ads by advertiser domain, e.g. nike.com.

## `region` (type: `string`):

Country to search ads in (ISO code) or 'anywhere'.

## `maxAdsPerBrand` (type: `integer`):

Sample size per competitor for the format-mix analysis.

## Actor input object example

```json
{
  "brands": [
    "Nike",
    "HubSpot"
  ],
  "region": "anywhere",
  "maxAdsPerBrand": 60
}
```

# Actor output Schema

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

One ad-strategy report per competitor.

# 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 = {
    "brands": [
        "Nike",
        "HubSpot"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/competitor-ad-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 = { "brands": [
        "Nike",
        "HubSpot",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("logiover/competitor-ad-intelligence").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 '{
  "brands": [
    "Nike",
    "HubSpot"
  ]
}' |
apify call logiover/competitor-ad-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=logiover/competitor-ad-intelligence",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Competitor Ad Intelligence - Ad Spy Tool",
        "description": "Google Ads Transparency Center scraper. Export competitor ad creatives, format mix and volume to CSV/JSON. No login - an unofficial API alternative.",
        "version": "1.0",
        "x-build-id": "XMbySZ9FEhfYEeFqd"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/logiover~competitor-ad-intelligence/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-logiover-competitor-ad-intelligence",
                "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/logiover~competitor-ad-intelligence/runs": {
            "post": {
                "operationId": "runs-sync-logiover-competitor-ad-intelligence",
                "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/logiover~competitor-ad-intelligence/run-sync": {
            "post": {
                "operationId": "run-sync-logiover-competitor-ad-intelligence",
                "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": {
                    "brands": {
                        "title": "Competitor brand names",
                        "type": "array",
                        "description": "Brand/advertiser names to analyze (resolved automatically), e.g. Nike, HubSpot.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "domains": {
                        "title": "Competitor domains (optional)",
                        "type": "array",
                        "description": "Alternatively, search ads by advertiser domain, e.g. nike.com.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "region": {
                        "title": "Region",
                        "enum": [
                            "anywhere",
                            "US",
                            "GB",
                            "DE",
                            "FR",
                            "ES",
                            "IT",
                            "NL",
                            "TR",
                            "CA",
                            "AU",
                            "BR",
                            "IN",
                            "JP"
                        ],
                        "type": "string",
                        "description": "Country to search ads in (ISO code) or 'anywhere'.",
                        "default": "anywhere"
                    },
                    "maxAdsPerBrand": {
                        "title": "Max ads to analyze per brand",
                        "minimum": 10,
                        "maximum": 300,
                        "type": "integer",
                        "description": "Sample size per competitor for the format-mix analysis.",
                        "default": 60
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
