# 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:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 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 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

## Competitor Ad Intelligence — Spy on Rivals' Google Ads (No API Key)

![Apify Actor](https://img.shields.io/badge/Apify-Actor-00A67E?logo=apify\&logoColor=white) ![No API key](https://img.shields.io/badge/No%20API%20key-required-2ea44f) ![Pay per result](https://img.shields.io/badge/Pricing-Pay%20per%20result-1C7ED6) ![Ad Intelligence](https://img.shields.io/badge/Category-Ad%20Intelligence-EF4444) ![Export](https://img.shields.io/badge/Export-JSON%20%7C%20CSV%20%7C%20Excel-F59E0B)

See exactly what ads your competitors are running on Google — in one report. Enter a **brand or domain** and get their **active-ad volume**, **creative format mix**, newest creatives, sample previews with preview + transparency URLs, and a plain-English **ad-strategy summary**. Powered by **Google's Ads Transparency Center**, queried directly — **no browser scraping, no API key, no login, no cookies.**

> ### 🏆 Why this competitor ad spy?
>
> **Per-brand strategy report + every creative** · **bulk competitors per run** · format mix · newest/oldest creative dates · preview + transparency URLs · export to JSON / CSV / Excel. The unofficial **Google Ads Transparency Center API alternative** for performance marketers, agencies and founders who want to reverse-engineer a rival's advertising playbook in seconds.

***

### ✨ What this Actor does / Key features

- 🎯 **Brand → strategy report** — type a competitor's name (or domain) and get a decision-ready playbook, not a raw dump of every ad.
- 📊 **Creative format mix** — image / video / display / text breakdown, so you can read a rival's channel strategy at a glance.
- 🔥 **Dominant formats + freshness** — see the leading formats and the newest/oldest creative dates to gauge how aggressive and current their advertising is.
- 🖼️ **Sample creatives** — per-ad rows with `previewUrl` and Google `transparencyUrl` links, dimensions, first/last-shown dates, days-running and active status.
- 🧾 **Estimated active ads** — how many ads the advertiser is running right now.
- 📝 **Plain-English summary** — a `strategySummary` you can paste straight into a competitive-audit deck.
- 🌍 **Region targeting** — focus on a specific country (ISO code) or search worldwide with `anywhere`.
- 🧠 **Auto brand resolution** — brand names are resolved to Google advertiser IDs automatically; or search directly by domain.
- 📦 **Bulk + API** — analyze a whole competitor set in one run; export or pull via the Apify API.
- 🔑 **Official source, key-free** — Google Ads Transparency Center data queried directly, so there's no fragile page scraping, token, login or cookie.

### 🚀 Quick start (3 steps)

1. **Configure** — add competitor **brand names** (e.g. `Nike`, `HubSpot`) and/or **domains** (`nike.com`), pick a **region** (or `anywhere`) and a sample size.
2. **Run** — click **Start**. The Actor resolves each brand, queries the Transparency Center and compiles a report per competitor.
3. **Get your data** — read the **strategy summary** in the **Output** tab, or export the dataset to **JSON, CSV, Excel or XML** (or the Apify API).

### 📥 Input

Supply at least one `brands` entry and/or one `domains` entry. Everything else is optional.

#### Example — benchmark two brands in the US

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

#### Example — search by domain, worldwide

```json
{
  "domains": ["nike.com", "adidas.com", "underarmour.com"],
  "region": "anywhere",
  "maxAdsPerBrand": 100
}
```

#### Example — deep sample of a single competitor in Germany

```json
{
  "brands": ["Zalando"],
  "region": "DE",
  "maxAdsPerBrand": 300
}
```

| Field | Type | Description |
|-------|------|-------------|
| `brands` | array | Competitor / advertiser brand names to analyze; resolved automatically to advertiser IDs (e.g. `Nike`, `HubSpot`). |
| `domains` | array | Alternatively (or additionally), search ads by advertiser domain (e.g. `nike.com`). |
| `region` | string | Country to search ads in (ISO code such as `US`, `GB`, `DE`, `TR`) or `anywhere` for worldwide. Default `anywhere`. |
| `maxAdsPerBrand` | integer | Sample size per competitor for the format-mix analysis. Default `60`, min `10`, max `300`. |

> **Tip:** Add several brands or domains in a single run to benchmark a whole category and see who is advertising hardest and in which formats.

### 📤 Output

The dataset contains a per-brand **strategy summary** row plus individual **creative** rows, distinguished by `rowType`. Exportable to JSON, CSV, Excel or XML. Here is a trimmed sample of both row types:

```json
[
  {
    "rowType": "summary",
    "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",
    "oldestCreativeDate": "2025-11-02",
    "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."
  },
  {
    "rowType": "ad",
    "brand": "Nike, Inc.",
    "format": "IMAGE",
    "dimensions": "300x250",
    "previewUrl": "https://adstransparency.google.com/advertiser/.../creative/...",
    "transparencyUrl": "https://adstransparency.google.com/advertiser/...",
    "firstShown": "2026-04-11",
    "lastShown": "2026-05-30",
    "daysRunning": 49,
    "isActive": true
  }
]
```

<details>
<summary><b>📋 Full field reference (click to expand)</b></summary>

| Field | Row type | Description |
|-------|----------|-------------|
| `rowType` | both | `summary` (per-brand report) or `ad` (individual creative) |
| `brand` | both | Advertiser name (auto-resolved from the input) |
| `domain` | summary | Advertiser domain |
| `regionSearched` | summary | Region the ads were searched in |
| `estimatedActiveAds` | summary | Estimated number of ads running now (range string, e.g. `8000-9000`) |
| `adsAnalyzed` | summary | How many creatives were sampled for the mix |
| `formatMix` | summary | Count per creative format (IMAGE / VIDEO / DISPLAY / TEXT) |
| `dominantFormats` | summary | The leading creative format(s) |
| `newestCreativeDate` / `oldestCreativeDate` | summary | Freshness window of the sampled creatives |
| `strategySummary` | summary | Plain-English ad-strategy summary |
| `format` | ad | Creative format of this ad (IMAGE / VIDEO / DISPLAY / TEXT) |
| `dimensions` | ad | Creative dimensions where available |
| `previewUrl` | ad | Direct preview URL for the creative |
| `transparencyUrl` | ad | Google Ads Transparency Center link for the advertiser/creative |
| `firstShown` / `lastShown` | ad | First and last dates the creative was seen |
| `daysRunning` | ad | How many days the creative has been running |
| `isActive` | ad | Whether the creative is currently active |

</details>

### 💡 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 on a schedule.
- **Creative inspiration** — pull a competitor's live creatives (with preview URLs) to brief your designers.
- **Category benchmark** — run 10 brands and compare who's advertising hardest and in which formats.
- **Media-buying prep** — read a rival's format/creative mix before allocating budget across channels.
- **Agency pitches** — build a competitive ad audit slide in minutes for a new-business deck.

### 👥 Who uses it

Performance marketers · agencies & consultants · founders & growth teams · media buyers · creative & UGC teams · market researchers · competitive-intelligence analysts · PPC specialists.

### 💰 Pricing

This Actor runs on a simple **pay-per-result** model — you pay per competitor report (and creatives), with no subscription and no separate Apify platform fees to calculate. Try it on the **free tier** first, then scale up. See the **Pricing** tab on this page for the current rate.

### ❓ Frequently Asked Questions

**Is it legal to spy on competitor ads?**
Yes. Google's Ads Transparency Center publishes advertiser ad data specifically for public transparency. This Actor only reads that publicly available data; you remain responsible for using it in compliance with Google's terms and applicable laws.

**Does Google Ads Transparency Center have a public API — and is this an API alternative?**
There is no official Google Ads Transparency Center API, so this Actor acts as an unofficial API alternative — it queries the Transparency Center directly and returns structured data with no key, login or cookie.

**Do I need an API key or a login?**
No. 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 see what ads a competitor is running on Google?**
Enter the competitor's brand name or domain and the Actor compiles a report showing their active-ad volume, creative format mix and newest creatives from Google's Ads Transparency Center, plus per-creative preview and transparency links.

**Can I search by domain instead of brand name?**
Yes — use the `domains` field. Brand names in `brands` are auto-resolved to advertiser IDs; domains are searched directly.

**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 — the per-brand summary plus every sampled creative with its format, preview URL and dates.

**How much data can I get?**
Set `maxAdsPerBrand` up to 300 creatives sampled per competitor for the format-mix analysis, and add as many brands/domains as you like in one run. The summary also reports Google's estimated total active-ad volume, which can run into the thousands.

**Can I compare several competitors at once?**
Yes. Add multiple brands or domains in one run and each produces its own compiled report, so you can benchmark who is advertising hardest and in which formats across a whole category.

**Does this 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. Pair it with the Meta Ad Library scraper below for cross-platform coverage.

**Can I run it on a schedule?**
Yes — schedule recurring runs to track competitors' ad activity, format mix and creative freshness over time.

### 🔗 More ad, competitive & market-intel scrapers by logiover

Build a full cross-platform ad-intelligence stack:

| Actor | What it does |
|---|---|
| [Google Ads Transparency Scraper](https://apify.com/logiover/google-ads-transparency-scraper) | Raw ad-by-ad data from Google's Transparency Center |
| [Meta Ad Library Scraper](https://apify.com/logiover/meta-ad-library-scraper) | Facebook & Instagram ads, spend & impressions |
| [LinkedIn Jobs Scraper](https://apify.com/logiover/linkedin-jobs-scraper) | LinkedIn job listings by keyword & location (no login) |
| [Company Deep Research Scraper](https://apify.com/logiover/company-deep-research-scraper) | Compiled company intelligence dossier |
| [B2B AI Visibility Tracker](https://apify.com/logiover/b2b-ai-visibility-tracker) | How brands surface in AI assistant answers |
| [News Intelligence Scraper](https://apify.com/logiover/news-intelligence-scraper) | Track news & press mentions of competitors |
| [Google News Scraper](https://apify.com/logiover/google-news-scraper) | Headlines & articles for any topic or brand |
| [SERP Keyword Research](https://apify.com/logiover/serp-keyword-research) | Search-results & keyword data for campaigns |
| [Discussion Intelligence Scraper](https://apify.com/logiover/discussion-intelligence-scraper) | What people say about a brand across forums |
| [Google Play Data API](https://apify.com/logiover/google-play-data-api) | App metadata, ratings & reviews |
| [AI Web Search](https://apify.com/logiover/ai-web-search) | LLM-powered web search for research |
| [AI Deep Research](https://apify.com/logiover/ai-deep-research) | Multi-source, cited research reports |

👉 Browse all **[logiover scrapers on Apify Store](https://apify.com/logiover)** — 180+ actors across real estate, jobs, crypto, social media & B2B data.

### ⏰ Scheduling & integration

Schedule this Actor on Apify to track competitors' ad volume, format mix and creative freshness weekly or monthly, and diff datasets to spot new campaigns. Export results to JSON, CSV or Excel, sync to Google Sheets, or push to your database, BI tools and webhooks through the Apify API. Connect it to **Make, n8n or Zapier** to feed a competitive-intelligence dashboard or an automated client-reporting pipeline.

### ⭐ Support & feedback

Need an extra field or another region? Open an issue on the **Issues** tab — response is usually fast. If this Actor saves you time, a **★★★★★ review** on the Store page genuinely helps and is hugely appreciated. 🙏

### ⚖️ Legal

This Actor extracts only publicly available advertising data from Google's Ads Transparency Center and is intended for legitimate competitive research, market analysis and creative reference. You are responsible for complying with Google's terms of service, GDPR and any applicable local laws.

***

### 📝 Changelog

#### 2026-08-01

- Completed the August 2026 full health check: verified empty/programmatic default, Console UI default, and two source-informed alternative inputs on Apify.
- Confirmed successful live execution, non-empty structured output, dataset-field/type integrity, and logical sample quality within the 5-minute quality window.
- Fixed the run Output link from `{{links.apiDefaultDatasetUrl}}` to `{{links.apiDefaultDatasetUrl}}/items` so the results table opens the dataset items endpoint.

#### 2026-08-01 — Health-check remediation

- August 2026 monthly health-check remediation is in progress; this build contains fixes verified from empty/default, Console-default, targeted live probes, or field-level semantic review.
- Fixed the run Output link from `{{links.apiDefaultDatasetUrl}}` to `{{links.apiDefaultDatasetUrl}}/items` so the results table opens the dataset items endpoint.
- The final four-input matrix verdict will be appended after post-build cloud revalidation.

#### 2026-07-06

- ✨ README overhaul: richer output sample, ready-to-run example scenarios, cross-promo links, and clearer quick-start.

#### 2026-07-01

- Maintenance pass: re-verified end-to-end on live data and confirmed successful runs within the 5-minute quality window on the default input.
- Sharpened Store metadata (SEO title & description) and expanded the FAQ with high-intent, long-tail questions for easier discovery in Google and Apify Store search.
- Added ready-to-run example tasks that cover common real-world use cases.

#### 2026-06-15

- Reliability pass: re-verified end-to-end on live data with real-world inputs. Routine maintenance build.

#### 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. Leave EMPTY (and no domains) to analyze a popular default brand.

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

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

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

Country to search ads in.

## `format` (type: `string`):

Restrict to a single creative format (matched on the report's detected format), or analyze all formats.

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

Sample size per competitor for the format-mix analysis.

## Actor input object example

```json
{
  "brands": [
    "Nike",
    "HubSpot"
  ],
  "region": "anywhere",
  "format": "all",
  "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

Download the OpenAPI definition: https://api.apify.com/v2/acts/9bzXXRgAsQrWETRpZ/builds/QA3np1MytrxYMa8lL/openapi.json
