# Google Ads Transparency Scraper (`solidcode/ads-transparency-scraper`) Actor

\[💰 $0.80 / 1K] Affordable and effective | Extract ad creatives from Google Ads Transparency Center. Search by keyword, domain, or advertiser ID with filters for platform, region, and date range.

- **URL**: https://apify.com/solidcode/ads-transparency-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Developer tools, Automation, Other
- **Features:** Limited permissions
- **Stats:** 2,832 total users, 629 monthly users, 100.0% runs succeeded, 15 bookmarks
- **User rating**: 1.93 out of 5 stars

## Pricing

from $0.80 / 1,000 results

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

Extract ad creatives from the Google Ads Transparency Center at scale. Search by keyword, domain, or advertiser ID and get ad formats, run dates, creative assets, and advertiser details for any brand or company worldwide, with filters for platform, region, and date range. Built for competitive analysts and performance marketers who need a complete picture of a rival's live ad spend without clicking through Google's viewer one creative at a time.

### Why This Scraper?

- **Three search modes in one** — Enter a keyword like "Nike", a domain like "nike.com", or a Google advertiser ID — the scraper auto-detects the type and finds matching ads
- **A creative link on every ad** — Image, text, and video ads all come back with a viewable asset: a static picture in `imageUrl` or a rendered preview in `previewUrl`
- **All Google platforms** — Filter by Google Search, YouTube, Google Shopping, Google Maps, or Google Play
- **170+ country filters** — Narrow results to any country or region worldwide, directly reducing the data Google returns so you only pay for what you need
- **Date range filtering** — Find ads from any period since 2018, great for seasonal campaign analysis
- **Lowest memory footprint** — Runs on just 256 MB, keeping your compute costs minimal
- **Incremental output** — Results stream to your dataset as they're found, so you can start working with data before the run finishes

### Use Cases

**Competitive Intelligence & Ad Monitoring**

- Track every ad a competitor is running across Google platforms
- Compare creative strategies between brands in your industry
- Monitor when competitors launch or stop campaigns
- Spot new market entrants advertising on your category keywords

**Marketing Research & Creative Analysis**

- Analyze ad copy, images, and video creatives at scale
- Study which ad formats brands use on each platform
- Track seasonal advertising patterns with date range filters
- Build a library of high-performing creative examples from any industry

**Lead Generation & Sales**

- Find companies actively spending on Google Ads — a strong buying-intent signal
- Build prospect lists of advertisers in your target vertical
- Identify brands advertising on specific domains or keywords
- Discover advertisers targeting specific countries or platforms

**Brand Protection & Compliance**

- Monitor who is advertising on your brand terms or domain
- Detect unauthorized use of your brand in ad creatives
- Track third-party ads appearing alongside your products
- Audit advertising activity across regions for compliance reporting

### Getting Started

#### Search by Domain

Find all ads associated with a website — the simplest way to start:

```json
{
    "searchQuery": "nike.com",
    "maxResults": 100
}
```

#### Search by Keyword

Enter any keyword to find matching advertisers and their ads:

```json
{
    "searchQuery": "cloud hosting",
    "maxResults": 50
}
```

#### Search by Advertiser ID

Use a Google advertiser ID for a direct lookup:

```json
{
    "searchQuery": "AR16735076323512287233",
    "maxResults": 200
}
```

#### Advanced: All Filters

Combine platform, region, and date range filters to narrow results precisely:

```json
{
    "searchQuery": "nike.com",
    "maxResults": 500,
    "platform": "youtube",
    "region": "US",
    "dateFrom": "2025-01-01",
    "dateTo": "2025-12-31"
}
```

### Input Reference

#### What to Search

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchQuery` | string | `"nike.com"` | Keyword, domain, or advertiser ID. The scraper auto-detects the type |

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Maximum ad creatives to return. Set to 0 to collect as many as one run can return (up to 50,000) |
| `platform` | string | All | Filter by platform: Google Search, YouTube, Google Shopping, Google Maps, or Google Play |
| `region` | string | Worldwide | Filter by country (170+ supported). Only returns ads shown in that region |
| `dateFrom` | string | | Start date (YYYY-MM-DD). Only returns ads shown on or after this date |
| `dateTo` | string | | End date (YYYY-MM-DD). Only returns ads shown on or before this date |

### Output

Each result represents one ad creative. Here's an example:

```json
{
    "advertiserId": "AR16735076323512287233",
    "advertiserName": "Nike, Inc.",
    "creativeId": "CR01753144146295521281",
    "adFormat": "image",
    "firstShown": "2025-03-15",
    "lastShown": "2025-04-08",
    "approxDaysShown": 24,
    "adUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR01753144146295521281",
    "previewUrl": "https://displayads-formats.googleusercontent.com/ads/preview/content.js?..."
}
```

Every ad carries a viewable creative link in one of two fields. Static pictures arrive in `imageUrl`; Shopping, HTML5, and video creatives are rendered through `previewUrl`, which is the more common of the two.

#### All Available Fields

| Field | Type | Description |
|-------|------|-------------|
| `advertiserId` | string | Google advertiser ID |
| `advertiserName` | string | Name of the advertiser |
| `creativeId` | string | Unique ID for this ad creative |
| `adFormat` | string | Format: image, text, or video |
| `firstShown` | string | Date the ad was first shown (YYYY-MM-DD) |
| `lastShown` | string | Date the ad was last shown (YYYY-MM-DD) |
| `approxDaysShown` | integer | Approximate number of days the ad has been running |
| `adUrl` | string | Direct link to view the ad on Google Ads Transparency Center |
| `imageUrl` | string | Direct link to the ad's image file, present when the creative is served as a static picture |
| `previewUrl` | string | Link that renders the creative exactly as it ran — used for Shopping, HTML5, and video ads |

### Tips for Best Results

#### Choosing Your Search Type

- **Domain search** (e.g. `nike.com`) — Best for finding all ads from a specific company. Returns ads from all advertisers associated with that domain
- **Keyword search** (e.g. `Nike`) — Best for discovering advertisers. The scraper finds matching advertisers first, then fetches their ads
- **Advertiser ID** (e.g. `AR16735076323512287233`) — Best for tracking a specific advertiser. Find IDs from previous runs or from the Ads Transparency Center website

#### Using Filters Effectively

- All filters reduce the data at the source — you only pay for results that match your criteria
- Combine **region** + **platform** for highly targeted results (e.g. YouTube ads in Germany)
- Use **date range** to study seasonal campaigns or track recent activity
- Set `maxResults` to `0` when you need broad coverage: a run collects up to 50,000 ads, and for advertisers with more than that, split the search by date range, region or platform

#### Maximizing Value

- Start with a small `maxResults` (10-50) to preview what's available before running a full extraction
- Use the **adUrl** field to view any ad directly on Google's Transparency Center
- Export to Google Sheets or CSV for easy analysis and sharing

### Pricing

**From $0.80 per 1,000 results** — you pay per ad creative delivered, and the rate drops as your Apify discount tier goes up.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.15 | $0.10 | $0.09 | $0.08 |
| 1,000 | $1.50 | $1.00 | $0.90 | $0.80 |
| 10,000 | $15.00 | $10.00 | $9.00 | $8.00 |
| 100,000 | $150.00 | $100.00 | $90.00 | $80.00 |

Every run also carries a one-time **Actor Start** charge of **$0.001**. There are no separate compute or storage bills to add on top — this scraper runs on just 256 MB, and the per-result price covers the whole run.

### Integrations

Export your data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps:

- **Zapier** / **Make** / **n8n** — Automate workflows when new ads are detected
- **Google Sheets** — Direct spreadsheet export for team collaboration
- **Slack** / **Email** — Get notified about competitor ad changes
- **Webhooks** — Custom integrations with your tools
- **Apify API** — Full programmatic access for scheduled monitoring

### Legal & Ethical Use

This actor extracts publicly available data from Google's Ads Transparency Center, a tool Google provides for public accountability and ad transparency. Users are responsible for complying with applicable laws and Google's Terms of Service. Do not use collected data for spam, harassment, or any illegal purpose.

# Actor input Schema

## `searchQuery` (type: `string`):

What to search for. Enter a keyword (e.g. 'Nike'), domain (e.g. 'nike.com'), or advertiser ID (e.g. 'AR16735076323512287233'). The scraper auto-detects the type.

## `maxResults` (type: `integer`):

Maximum number of ad creatives to return. Set to 0 to collect as many as one run can return (up to 50,000).

## `platform` (type: `string`):

Only return ads shown on this Google platform.

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

Only return ads shown in this country/region. Leave empty for worldwide. 170+ countries supported.

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

Only return ads shown on or after this date (YYYY-MM-DD). Leave empty for no start date limit.

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

Only return ads shown on or before this date (YYYY-MM-DD). Leave empty for no end date limit.

## Actor input object example

```json
{
  "searchQuery": "nike.com",
  "maxResults": 100,
  "platform": "",
  "region": "",
  "dateFrom": "",
  "dateTo": ""
}
```

# Actor output Schema

## `overview` (type: `string`):

Table of ad creatives with key fields.

## `details` (type: `string`):

Full ad creative data including IDs and media URLs.

# 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 = {
    "searchQuery": "nike.com",
    "maxResults": 100,
    "platform": "",
    "region": "",
    "dateFrom": "",
    "dateTo": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/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 = {
    "searchQuery": "nike.com",
    "maxResults": 100,
    "platform": "",
    "region": "",
    "dateFrom": "",
    "dateTo": "",
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/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 '{
  "searchQuery": "nike.com",
  "maxResults": 100,
  "platform": "",
  "region": "",
  "dateFrom": "",
  "dateTo": ""
}' |
apify call solidcode/ads-transparency-scraper --silent --output-dataset

```

## MCP server setup

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