# Google Ads Transparency Scraper: Competitor Ads by Domain (`himanshu-data/google-ads-transparency-scraper`) Actor

Google Ads Transparency scraper: every ad a domain or advertiser runs on Search, YouTube and Display. Filter by country, format and date. Days running, images, no login.

- **URL**: https://apify.com/himanshu-data/google-ads-transparency-scraper.md
- **Developed by:** [Himanshu Agrawal](https://apify.com/himanshu-data) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.90 / 1,000 ads

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Google Ads Transparency Scraper

This Google Ads Transparency scraper shows every ad a brand or website runs on Google Search, YouTube and Display, straight from the [Google Ads Transparency Center](https://adstransparency.google.com/). Search by **domain**, **advertiser name**, **advertiser ID** or any Transparency Center URL, and filter by **country**, **ad format** and **date**. You get one row per ad with first and last shown dates, days running, format, image and preview links, with no login and no browser.

### What you can use it for

- **Competitor Google Ads research:** what your competitors advertise, in which countries, and for how long.
- **YouTube and display ad inspiration:** pull image and video ads at scale for swipe files.
- **Agency prospecting:** find brands actively spending on Google Ads in a country.
- **Brand protection:** spot other advertisers bidding on your domain.
- **Long-running winners:** `daysRunning` shows which ads an advertiser keeps paying for.

### How to use

1. Open the [Google Ads Transparency Scraper](https://apify.com/himanshu-data/google-ads-transparency-scraper) page and click **Try for free** (you sign in to your Apify account).
2. Enter domains (`nike.com`), advertiser names, advertiser IDs or Transparency Center URLs.
3. Pick a country, an ad format and, if you want, **Only ads shown after**.
4. Click **Start**. Ads appear in the **Output** tab with images.
5. Export as JSON, CSV or Excel.

**API:** `POST https://api.apify.com/v2/acts/himanshu-data~google-ads-transparency-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>` with the input as JSON in the body returns the ads in one call.

### Input

| Field | What it does |
|---|---|
| Advertisers or domains | `nike.com`, `Nike`, `AR16735076323512287233`, or a Transparency Center URL. Domains give the most complete results. |
| Country | 2-letter code (`US`, `IN`, `GB`, `DE`, `AE`...) or `anywhere`. |
| Max ads per advertiser or domain | Stop after this many ads per search. |
| Ad format | All, text, image or video. |
| Only ads shown after | Skip ads not shown since this date. Skipped ads are free. |
| Include ad details | Adds all variations of each ad and every country it ran in. |
| Advertisers per name search | How many matching advertiser accounts a name search uses (default 3, up to 10). |

```json
{
  "searchTerms": ["nike.com", "Adidas"],
  "region": "US",
  "maxAdsPerSearch": 200,
  "adFormat": "all",
  "lastShownAfter": "2026-09-01"
}
```

### Output

One row per ad:

```json
{
  "searchTerm": "nike.com",
  "advertiserId": "AR16735076323512287233",
  "advertiserName": "Nike, Inc.",
  "creativeId": "CR14789358153040396289",
  "format": "IMAGE",
  "targetDomain": "nike.com",
  "firstShown": "2026-04-28T16:31:01.000Z",
  "lastShown": "2026-10-17T07:53:27.000Z",
  "daysRunning": 172,
  "region": "US",
  "adUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR14789358153040396289?region=US",
  "imageUrl": "https://tpc.googlesyndication.com/archive/simgad/...",
  "previewUrl": "https://displayads-formats.googleusercontent.com/ads/preview/content.js?..."
}
```

With **Include ad details** you also get `variationCount`, `variations` (preview links for each version) and `regionsShown` (country codes).

### Pricing

Pay per ad saved: **$1.20 per 1,000 ads** on paid Apify plans (less on Scale and Business). You set a spending limit per run and the Actor stops cleanly when it is reached. Filtered-out ads are never charged.

### Integrations

- **Apify API** to start runs and read the ads from any language.
- **Python and JavaScript clients** (`apify-client`) for scripts and reports.
- **Zapier, Make and n8n** to send new competitor ads to Google Sheets, Slack or a CRM.
- **MCP for AI agents:** connect the Apify MCP server to Claude, ChatGPT or another MCP client and the agent can look up any advertiser's Google ads through this Actor.
- **Schedules and webhooks** in Apify Console to snapshot a competitor's ads every week.

### FAQ

**Do I need a Google account or a Google Ads API key?**
No. You only need an Apify account. The Actor reads the public Transparency Center without login.

**How many ads can I get?**
As many as the Transparency Center lists for that advertiser or domain, up to your **Max ads per advertiser or domain** (default 100).

**Why did I get fewer ads than Google's estimate?**
Google shows a rounded range (for example "8,000 to 9,000 ads"). The country, format and date filters and the max-ads setting reduce what is saved. A name search uses only the top matching advertiser accounts; raise **Advertisers per name search** or search by domain.

**Domain or advertiser name: which is better?**
Search by **domain** for the fullest picture: it includes agencies and resellers running ads for that site.

**Can I schedule it?**
Yes. Create a schedule in Apify Console and use **Only ads shown after** so each run focuses on recent ads.

**Which export formats are there?**
JSON, CSV, Excel, XML, HTML and JSONL from the dataset, or the API.

**Is it legal to scrape the Google Ads Transparency Center?**
The Transparency Center is a public Google service built so anyone can see who is advertising. The Actor reads only that public data and collects no personal data. Follow Google's terms and the laws where you live. This is not legal advice.

### Tips

- Keep the default **residential proxy**. Google throttles repeated requests from one IP.
- Need Facebook and Instagram ads too? Use our [Facebook Ad Library Scraper](https://apify.com/himanshu-data/meta-ad-library-scraper).

# Actor input Schema

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

One per line. Accepts a website domain (nike.com), an advertiser name (Nike), an advertiser ID (AR16735076323512287233) or any Ads Transparency Center URL. Domains give the most complete results.

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

Only ads shown in this country. Use a 2-letter code (US, IN, GB, DE, AE...) or "anywhere".

## `maxAdsPerSearch` (type: `integer`):

Stop after this many ads for each search target. You pay per ad saved.

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

Keep only ads of this format. Ads of other formats are skipped and not charged.

## `lastShownAfter` (type: `string`):

Skip ads whose last impression is older than this date, e.g. 2026-09-01. Skipped ads are not charged.

## `includeAdDetails` (type: `boolean`):

Adds every ad variation and the countries where the ad ran with last-shown dates. One extra request per ad, so runs are slower.

## `maxAdvertisersPerName` (type: `integer`):

When you search by name, how many matching advertiser accounts to scrape.

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

Residential proxy is recommended: Google blocks repeated requests from one IP quickly.

## Actor input object example

```json
{
  "searchTerms": [
    "nike.com"
  ],
  "region": "US",
  "maxAdsPerSearch": 50,
  "adFormat": "all",
  "includeAdDetails": false,
  "maxAdvertisersPerName": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (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 = {
    "searchTerms": [
        "nike.com"
    ],
    "region": "US",
    "maxAdsPerSearch": 50,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("himanshu-data/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 = {
    "searchTerms": ["nike.com"],
    "region": "US",
    "maxAdsPerSearch": 50,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("himanshu-data/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 '{
  "searchTerms": [
    "nike.com"
  ],
  "region": "US",
  "maxAdsPerSearch": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call himanshu-data/google-ads-transparency-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,himanshu-data/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/BWq0HSJbRCLTOCRmL/builds/dypWN6ZxETu8dtoeg/openapi.json
