# Google Ads Transparency Scraper - Ads by Advertiser or Website (`alaathr/google-ads-transparency-scraper`) Actor

Every ad an advertiser or website runs on Google, from the Ads Transparency Center: format, first and last shown, days shown, image, texts, landing site and link. Filter by country, format and dates; add variations and regions. Pay per ad.

- **URL**: https://apify.com/alaathr/google-ads-transparency-scraper.md
- **Developed by:** [Alaa Tahir](https://apify.com/alaathr) (community)
- **Categories:** Marketing, SEO tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 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.

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 - Ads by Advertiser or Website

Get **every ad an advertiser or a website runs on Google** (Search, YouTube, Display, Shopping, Maps, Play), straight from Google's **Ads Transparency Center**: format, **first and last day shown, number of days shown**, image, **headline, description and other texts**, landing site and a link to the ad.

Search by **website** (`nike.com`), **advertiser name** (`Nike`) or **advertiser ID**, filter by **country, format and dates**, and optionally add every **variation** of each ad and the **countries** where it ran. You **pay per ad delivered**.

### What you get for each ad

| Group | Fields |
| --- | --- |
| Ad | Advertiser name and ID, ad ID, format (text, image, video), link to the ad on the Ads Transparency Center |
| Timing | First shown, last shown, number of days shown |
| Content | Image URL and size for image ads; texts (headline, description, display URL, product title, business name, call to action) for text and video ads; links found in the ad |
| Target | The website the ad points to, when Google reports it |
| Volume | Google's estimate of how many ads match the search (for example 80,000 to 90,000 for nike.com) |
| Details (optional) | Every variation of the ad with its image, preview and texts; the countries where it ran, with the last day shown there |

### Use cases

- **Competitor research**: see every ad a competitor runs, which formats and messages they test, and how long each ad stays live (long-running ads are usually the winners).
- **Creative inspiration**: collect the headlines, descriptions and images that brands in your market use.
- **Agencies and monitoring**: schedule a weekly run on your clients' competitors and spot new ads with the "Shown in the last N days" filter.
- **Brand protection**: find advertisers running ads that point to your website or use your brand name.
- **Research and journalism**: analyse advertising activity by country and period.

### How to use it

1. Enter one or more **websites, advertiser names or advertiser IDs**, one per line. Links copied from the Ads Transparency Center work too.
2. Optionally pick a **region** (`US`, `GB`, `FR`...), an **ad format**, and a period: **shown in the last N days**, or dates.
3. Set **Max ads per search** (0 for all) and tick **Include details** if you need variations and countries.
4. Click **Start**, then download the results as JSON, CSV or Excel, or read them through the API.

A website search returns the ads pointing to that site, from every advertiser. A name search covers every advertiser account whose name contains all the words you typed (big brands often have one account per country); use an advertiser ID for one exact account.

### Input example

```json
{
  "searches": ["nike.com", "Decathlon", "AR16735076323512287233"],
  "region": "US",
  "format": "all",
  "lastDays": 30,
  "maxAdsPerSearch": 200,
  "includeDetails": false
}
```

### Output example

```json
{
  "query": "nike.com",
  "queryType": "domain",
  "region": "anywhere",
  "advertiserId": "AR16735076323512287233",
  "advertiserName": "Nike, Inc.",
  "creativeId": "CR04739221842466701313",
  "format": "image",
  "firstShown": "2023-11-16T22:05:24Z",
  "lastShown": "2026-10-18T23:05:07Z",
  "daysShown": 933,
  "domain": "nike.com",
  "imageUrl": null,
  "previewUrl": "https://displayads-formats.googleusercontent.com/ads/preview/content.js?client=ads-integrity-transparency...",
  "texts": ["Nike® Official Site", "Shop the official Nike® store for the latest shoes, apparel & gear.", "nike.com/shop/nike-women", "Shop Nike® Online", "The Latest Nike® Deals"],
  "links": [],
  "headline": "Nike® Official Site",
  "description": "Shop the official Nike® store for the latest shoes, apparel & gear.",
  "displayUrl": "nike.com/shop/nike-women",
  "adUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR04739221842466701313?region=anywhere",
  "totalAdsMin": 80000,
  "totalAdsMax": 90000,
  "scrapedAt": "2026-10-18T23:30:00Z"
}
```

Image ads come with `imageUrl`, `imageWidth` and `imageHeight`. With details, each ad also gets `variationCount`, `variations` and `regions`, for example `[{"country": "US", "regionId": 2840, "lastShown": "2026-10-18"}]`.

### Pricing

**$1.00 per 1,000 ads** (pay per event). Details (variations, countries and visible texts) cost **$2.00 per 1,000 ads** more, only when you tick the option. Searches that fail or find no ad come back with an `error` field and are **not charged**. Set "Max ads per search" and a maximum cost per run in the run options to keep full control.

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

| Run | Cost |
| --- | --- |
| 100 ads of one competitor | $0.10 |
| 1,000 ads with details | $3.00 |
| 20 competitors every week, 200 ads each (16,000 ads a month) | $16.00 a month |

Apify's free plan includes $5 of usage every month: enough for about 5,000 ads a month without paying anything.

### Use it from code or from an AI agent

- **API:** start a run and fetch the dataset with the Apify API or the Python and JavaScript clients.
- **Schedules:** run it weekly with "Shown in the last N days" to collect only the latest ads.
- **AI agents:** the Actor is available as a tool through the Apify MCP server, so assistants such as Claude can look up a competitor's ads directly.

### More tools from this developer

| Tool | What it returns | Price |
| --- | --- | --- |
| [AliExpress Search Scraper](https://apify.com/alaathr/aliexpress-search-products) | AliExpress products for any keyword or URL: price, discount, units sold, rating, delivery | $3.00 / 1,000 products |
| [Google Flights Scraper](https://apify.com/alaathr/google-flights-scraper) | Every flight of a route and date with price, times, stops, layovers and CO2, plus a lowest-price calendar | $2.50 / 1,000 searches |
| [Google Hotels Scraper](https://apify.com/alaathr/google-hotels-prices) | Hotel prices for your dates in any city, with stars, ratings, address and links | $3.00 / 1,000 hotels |
| [Google Trends Scraper](https://apify.com/alaathr/google-trends-reliable) | Interest over time, by region and related queries for your own keyword list | $2.50 / 1,000 search terms |
| [Google Trends Trending Now Scraper](https://apify.com/alaathr/google-trends-trending-now) | Every trending search of a country or US state, with volume, timing, category and news | $0.80 / 1,000 trends |
| [Walmart Scraper](https://apify.com/alaathr/walmart-scraper) | Walmart search results: price, was price, rating, seller, stock, delivery and badges | $1.50 / 1,000 products |

### FAQ

**Which ads are included?** The ads Google publishes in its Ads Transparency Center: ads shown on Google Search, YouTube, Google Display, Google Shopping, Google Maps and Google Play by verified advertisers, in every country where Google runs ads.

**Why do some ads have no text?** Image ads carry their content in the image (`imageUrl`). Some text and video ads only show their content through Google's preview; tick "Include details" to read their visible texts.

**How far back does it go?** As far as the Ads Transparency Center: often several years for active advertisers. Use the dates or "Shown in the last N days" to narrow it down.

**Is this an official Google product?** No. This Actor is not affiliated with or endorsed by Google. It reads the public information Google publishes in the Ads Transparency Center and collects no personal data beyond the advertiser names Google itself publishes.

# Actor input Schema

## `searches` (type: `array`):

One per line: a website (nike.com), an advertiser ID (AR16735076323512287233), an advertiser name (Nike) or a link copied from the Ads Transparency Center. A name searches every advertiser account whose name contains all its words.

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

Only ads shown in this country: a 2-letter code such as US, GB, FR, DE, IN, MA. "anywhere" for all countries.

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

Keep only one format of ads.

## `lastDays` (type: `integer`):

Only ads shown during the last N days. 0 means any time (or use the dates below).

## `dateFrom` (type: `string`):

Only ads shown on or after this day (YYYY-MM-DD). Ignored when "Shown in the last N days" is set.

## `dateTo` (type: `string`):

Only ads shown on or before this day (YYYY-MM-DD).

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

Stop after this many ads for each advertiser or website. 0 means all (big brands run tens of thousands of ads).

## `includeDetails` (type: `boolean`):

Also get every variation of each ad (images, previews, texts), the countries where it ran, and the visible texts of ads that carry none in their preview link. Charged as an extra event per ad.

## `maxConcurrency` (type: `integer`):

Advertisers or websites processed at the same time.

## `maxRetries` (type: `integer`):

How many times a refused request is retried with a new session before the search is reported as failed (not charged).

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

Apify Proxy spreads requests over many IP addresses. The default datacenter proxy works for most runs.

## Actor input object example

```json
{
  "searches": [
    "nike.com"
  ],
  "region": "anywhere",
  "format": "all",
  "lastDays": 0,
  "maxAdsPerSearch": 50,
  "includeDetails": false,
  "maxConcurrency": 3,
  "maxRetries": 6,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "searches": [
        "nike.com"
    ],
    "maxAdsPerSearch": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

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

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

```

## MCP server setup

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