# Google Ads Transparency Scraper – Competitor Ad Spy (`ramgoxxx/google-ads-transparency-scraper`) Actor

Fast, cookieless Google Ads Transparency Center scraper & API. Extract active Search, Image & Video ad creatives by domain, brand name, or Advertiser ID (AR...) across 30+ countries.

- **URL**: https://apify.com/ramgoxxx/google-ads-transparency-scraper.md
- **Developed by:** [Antonio Ramos Gómez](https://apify.com/ramgoxxx) (community)
- **Categories:** Lead generation, Agents, Integrations
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.00 / 1,000 ad results

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Google Ads Transparency Scraper & API do?

**Google Ads Transparency Scraper** extracts active and historical ad creatives directly from the official [Google Ads Transparency Center](https://adstransparency.google.com/) by **competitor domain**, **brand name**, or **Google Advertiser ID** (`AR...`) across **30+ countries** — without requiring a Google Ads account, cookies, or login.

Built as a fast, reliable **Google Ads Spy API** and **MCP-ready agent tool**, it captures **Search (Text)**, **Display (Image)**, and **YouTube (Video)** ad creatives, active date windows, preview assets, and direct verification links in clean JSON, CSV, or Excel format.

- **Transparent Pay-Per-Event pricing:** `$1.00 per 1,000 ads` (`$0.001` per ad creative). Zero platform compute surcharges.
- **Generous Free Tier:** With Apify's `$5.00/month` free plan credit, you can extract up to **5,000 competitor Google & YouTube ads every month at `$0` cost**.
- **Built-in anti-rate-limit resilience:** Browser TLS fingerprint impersonation + automatic session rotation keep multi-domain ad intelligence pipelines running reliably.

***

### Why scrape Google Ads Transparency Center?

Competitors spend thousands of dollars split-testing headlines, landing pages, YouTube hooks, and seasonal offers. Monitoring their live ad library lets you see **what is actively running right now** — and most importantly, **which creatives stay live the longest** (your strongest signal of profitable ROAS).

#### Top business use cases

1. **Competitor Ad Spy & Creative Intelligence:** Track every new Search, Display, and YouTube video ad launched by rival SaaS companies, DTC e-commerce brands, or local service leaders.
2. **PPC & Paid Media Agency Audits:** Walk into client pitches with a complete breakdown of their competitors' active ad formats, regional targeting, and creative velocity.
3. **AI Marketing Agents (Claude, Cursor, ChatGPT via MCP):** Let your AI assistant pull a competitor's live Google Ads before writing counter-positioning copy or landing page variants.
4. **Automated Brand Protection & Trademark Monitoring:** Schedule daily runs in n8n, Make, or Apify Schedules to detect unauthorized affiliates or competitors bidding on your brand terms.
5. **B2B Sales Prospecting Enrichment:** Verify whether target accounts are actively spending on Google Paid Search or YouTube Ads before pitching agency, CRO, or attribution services.

***

### What data can Google Ads Transparency Scraper extract?

Every item in the output dataset represents one verified ad creative with normalized fields ready for BI dashboards, spreadsheets, or LLM prompts:

| Field Name | Type | Description |
| :--- | :--- | :--- |
| `advertiserId` | `string` | Official Google Advertiser ID (e.g., `AR01625195283841286145`). |
| `advertiserName` | `string` | Legal verified entity name registered with Google Ads. |
| `creativeId` | `string` | Unique Google Creative ID (`CR...`) for deduplication and tracking over time. |
| `domain` | `string` | Queried domain, brand, or advertiser identifier. |
| `format` | `string` | Normalized ad format: `TEXT` (Search), `IMAGE` (Display/PMax), or `VIDEO` (YouTube). |
| `country` | `string` | ISO-2 country code where the ad impression was served (e.g., `US`, `ES`, `GB`, `DE`). |
| `firstShownAt` | `string` | ISO-8601 UTC timestamp when Google first recorded the creative. |
| `lastShownAt` | `string` | ISO-8601 UTC timestamp when the creative was most recently served. |
| `activeDaysCount` | `integer \| null` | Number of active days reported — filter for `30+` days to isolate winning evergreens. |
| `previewImageUrl` | `string \| null` | Direct image thumbnail/creative asset URL when available. |
| `previewEmbedUrl` | `string \| null` | Interactive preview/embed URL for rendered ad inspection. |
| `transparencyUrl` | `string` | Direct permalink to the official Google Ads Transparency Center creative page. |

***

### How to scrape competitor Google & YouTube Ads (Step-by-Step)

1. Click **Try for free** to open Google Ads Transparency Scraper in Apify Console.
2. Enter a competitor domain (e.g., `shopify.com`), brand name (`Nike`), or Advertiser ID (`AR...`) in **Domain, Brand Name, or Advertiser ID** (`query`).
3. Choose your **Target Country** (`US`, `GB`, `ES`, `DE`, `FR`, `BR`, `MX`, `CA`, `AU`, etc.) and optional **Ad Format Filter** (`ALL`, `TEXT`, `IMAGE`, or `VIDEO`).
4. Set **Max Ads to Extract** (`maxItems`, e.g., `50` or `500`) and click **Start**.
5. Preview creatives visually in the **Ad Creatives Overview** table or download your dataset as **JSON, CSV, Excel, or HTML**.

***

### How much does it cost to scrape Google Ads Transparency Center?

This Actor uses transparent **Pay-Per-Event (`PAY_PER_EVENT`)** pricing — you only pay for actual ad creatives delivered to your dataset, with **platform compute included**:

| Volume | Cost (`$1.00 / 1,000` ads) | Covered by Apify `$5/mo` Free Credit? |
| :--- | :--- | :---: |
| **100 ads** (quick competitor audit) | **`$0.10`** | Yes (`$0` out of pocket) |
| **1,000 ads** (agency benchmark) | **`$1.00`** | Yes (`$0` out of pocket) |
| **5,000 ads / month** | **`$5.00`** | **100% Free on Starter Free Plan** |
| **25,000 ads** (market-wide tracker) | **`$25.00`** | Scales automatically on paid plans |

If a competitor has `0` active ads in the selected country, `0` items are pushed and your event charge is **`$0.00`**.

***

### Use with AI Assistants & MCP (Claude, Cursor, VS Code, ChatGPT)

Connect this Actor directly to **Claude Desktop**, **Cursor**, **Windsurf**, or **VS Code** via the official Apify MCP Server so your AI agent can spy on competitor ads in real time:

```json
{
  "mcpServers": {
    "google-ads-spy": {
      "url": "https://mcp.apify.com/?actors=ramgoxxx/google-ads-transparency-scraper",
      "headers": {
        "Authorization": "Bearer YOUR_APIFY_API_TOKEN"
      }
    }
  }
}
```

Once connected, ask your AI assistant:

- *"Check what YouTube video ads `monday.com` is currently running in the US and summarize their main angles."*
- *"Compare the format mix (Search vs Video vs Image) of `hubspot.com` in `US`, `GB`, and `DE`."*

***

### Input parameters & JSON examples

See the **Input** tab for interactive controls. Below are ready-to-copy JSON payloads for API, CLI, n8n, and Make workflows:

#### Example 1: Spy on all active ads for a competitor domain

```json
{
  "query": "shopify.com",
  "country": "US",
  "adFormat": "ALL",
  "maxItems": 100
}
```

#### Example 2: Extract only YouTube Video Ads in Spain (`ES`)

```json
{
  "query": "revolut.com",
  "country": "ES",
  "adFormat": "VIDEO",
  "maxItems": 50
}
```

***

### Output example

You can download the dataset in **JSON, CSV, Excel, XML, or HTML** formats. Each record follows a clean, predictable schema:

```json
[
  {
    "advertiserId": "AR01625195283841286145",
    "advertiserName": "Shopify Inc.",
    "creativeId": "CR10482910482019482112",
    "domain": "shopify.com",
    "format": "VIDEO",
    "country": "US",
    "firstShownAt": "2026-09-14T00:00:00+00:00",
    "lastShownAt": "2026-11-01T21:15:00+00:00",
    "activeDaysCount": 48,
    "previewImageUrl": "https://tpc.googlesyndication.com/archive/simgad/1092837465019283",
    "previewEmbedUrl": "https://adstransparency.google.com/advertiser/AR01625195283841286145/creative/CR10482910482019482112",
    "transparencyUrl": "https://adstransparency.google.com/advertiser/AR01625195283841286145/creative/CR10482910482019482112?region=US"
  }
]
```

***

### Integrate with Python, Node.js, n8n & Make

#### Python (`apify-client`)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_API_TOKEN")
run = client.actor("ramgoxxx/google-ads-transparency-scraper").call(
    run_input={
        "query": "notion.so",
        "country": "US",
        "adFormat": "ALL",
        "maxItems": 100,
    }
)

for ad in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(ad["format"], ad["lastShownAt"], ad["transparencyUrl"])
```

#### cURL / REST API (n8n & Make HTTP Request node)

```bash
curl -X POST "https://api.apify.com/v2/acts/ramgoxxx~google-ads-transparency-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query":"figma.com","country":"US","adFormat":"VIDEO","maxItems":25}'
```

***

### Frequently Asked Questions (FAQ)

#### Do I need a Google Ads account or cookies?

No. The Actor queries public Google Ads Transparency Center records directly — zero cookies, zero login credentials, and zero risk to your own ad accounts.

#### How do I track only new ads launched by a competitor?

Schedule a daily or weekly run using **Apify Schedules** (or **n8n / Make**) and deduplicate on the immutable `creativeId` field in Google Sheets, Airtable, Supabase, or Slack alerts. Any previously unseen `creativeId` is a newly launched ad test.

#### Which countries are supported?

Over 30 ISO-2 country storefronts including `US`, `GB`, `CA`, `AU`, `DE`, `FR`, `ES`, `IT`, `NL`, `PT`, `SE`, `PL`, `CH`, `AT`, `BE`, `IE`, `BR`, `MX`, `AR`, `CO`, `CL`, `IN`, `SG`, `JP`, and `ZA`.

#### Legal & GDPR Disclaimer

> Our Actors are ethical and do not extract any private user data, such as personal email addresses, gender, or private location. They only extract public ad transparency disclosures that Google and verified advertisers publish openly for public accountability. However, you should be aware that business records may occasionally reference public entity names. Personal data is protected by the GDPR in the European Union and by other regulations around the world. If you have questions or feature requests, open a ticket in the **Issues** tab.

# Actor input Schema

## `query` (type: `string`):

Enter a target domain (e.g. 'shopify.com'), an Advertiser ID ('AR01625195283841286145'), or a brand name (e.g. 'Nike').

## `country` (type: `string`):

2-letter ISO country code where ads were shown (US, ES, GB, DE, FR, IT, BR, MX, CA, AU, IN, NL, PT).

## `adFormat` (type: `string`):

Filter returned creatives by format (ALL, TEXT, IMAGE, VIDEO).

## `maxItems` (type: `integer`):

Maximum number of ad creatives to extract.

## `proxyConfiguration` (type: `object`):

Uses Apify Proxy automatically when needed to avoid rate-limiting on shared cloud IPs.

## Actor input object example

```json
{
  "query": "shopify.com",
  "country": "US",
  "adFormat": "ALL",
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `ads` (type: `string`):

Every extracted Search, Image, or Video ad creative row.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("ramgoxxx/google-ads-transparency-scraper").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("ramgoxxx/google-ads-transparency-scraper").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 '{}' |
apify call ramgoxxx/google-ads-transparency-scraper --silent --output-dataset

```

## MCP server setup

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

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/HcDUBViz2AbTyXe91/builds/quk8dRQJXcakYgkcY/openapi.json
