# Google Ads Creative Scraper - PPC Intelligence (`glowing_glove/google-ads-creative-scraper`) Actor

Scrape public Google Ads Transparency Center creatives by advertiser domain, advertiser ID, creative URL, or copied target URL with enrichment, clean output rows, and strict timeouts.

- **URL**: https://apify.com/glowing\_glove/google-ads-creative-scraper.md
- **Developed by:** [Ushba Khan](https://apify.com/glowing_glove) (community)
- **Categories:** Social media, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.00 / 1,000 google ad creative rows

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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Google Ads Creative Scraper - PPC Intelligence

Collect public Google Ads Transparency Center creative data by advertiser domain, advertiser ID, creative URL, search term, or copied Transparency Center URL. Built for PPC teams, agencies, market researchers, and founders tracking competitor ad activity.

### Built For

- Discovering active Google advertisers and public creative examples.
- Reviewing competitor messaging, creative formats, regions, and last-shown signals.
- Enriching known creative URLs with structured advertiser and asset data.
- Running scheduled checks for new or changed creatives.

### Input Modes

- `targetUrl`: exact Transparency Center URL.
- `domains`: advertiser domains such as `nike.com` or `allbirds.com`.
- `searchTerms`: advertiser names or keyword searches.
- `advertiserIds`: direct Google advertiser IDs.
- `creativeUrls`: direct creative detail URLs.

### Controls

- Region, platform, and creative format filters.
- Detail-page enrichment toggle.
- Public asset URL collection toggle.
- Max creative cap and concurrency control.
- Per-source and whole-run timeout guards.
- Custom proxy URL or Apify proxy modes.
- Scheduled change detection with `monitorChanges` and `onlyChanges`.

### Data Delivered

- Advertiser ID, creative ID, advertiser name, creative URL, source domain/search term, region, and region text.
- Last-shown date, creative format, variation count, public asset URLs, asset count, and video signal.
- Data quality score, signal summary, suggested next action, and scrape timestamp.
- Change rows when scheduled tracking is enabled.

### Example Input

```json
{
  "domains": ["shopify.com"],
  "region": "US",
  "platform": "all",
  "format": "all",
  "maxResults": 50,
  "enrichDetails": true,
  "includeAssetUrls": true,
  "proxyMode": "auto"
}
````

### Example Output

```json
{
  "advertiserId": "AR16735076323512287233",
  "creativeId": "CR09876543210987654321",
  "advertiserName": "Example Advertiser",
  "creativeUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR09876543210987654321",
  "region": "US",
  "format": "video",
  "lastShown": "Jun 2026",
  "assetUrls": ["https://tpc.googlesyndication.com/example-image.jpg"],
  "dataQualityScore": 90,
  "scrapedAt": "2026-06-24T12:00:00.000Z"
}
```

### Pricing

`$10.00 / 1,000 delivered creatives`

Only valid creative rows written to the dataset count as delivered creatives. Empty searches, blocked pages, timeout cases, and no-data sources are not written as paid dataset rows. The actor writes `NO_RESULTS`, `LATEST_SUMMARY`, and `LATEST_NOTICES` records to the default key-value store so users can still see what happened and what to try next.

### Reliability

- Direct URL and advertiser ID normalization.
- Configurable browser timeouts.
- Optional detail-page enrichment.
- Duplicate creative IDs removed before output.
- No paid error rows.
- Clear no-result diagnostics in the default key-value store.
- Change snapshots stored outside the paid dataset.

# Actor input Schema

## `targetUrl` (type: `string`):

Full Google Ads Transparency Center URL. When supplied, this exact page is used first.

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

Advertiser domains to search, such as nike.com, shopify.com, or allbirds.com.

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

Optional advertiser names or keywords. Domains are more reliable when available.

## `advertiserIds` (type: `array`):

Optional Google Ads Transparency advertiser IDs such as AR16735076323512287233.

## `creativeUrls` (type: `array`):

Optional direct Google Ads Transparency creative detail URLs.

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

Two-letter region code used by Google Ads Transparency Center.

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

Optional platform label for your workflow. Google may not expose this on every public page.

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

Optional creative format label for filtering and output context.

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

Maximum useful creative rows to write. Billing should be based on delivered rows, not requested rows.

## `enrichDetails` (type: `boolean`):

Open each creative detail page to collect last shown date, format, region text, variation count, and public media asset URLs.

## `includeAssetUrls` (type: `boolean`):

Include public image/media asset URLs visible on creative detail pages.

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

Number of source pages or detail pages to process in parallel.

## `requestHandlerTimeoutSecs` (type: `integer`):

Maximum seconds spent on one source or detail page.

## `maxRunMinutes` (type: `integer`):

Whole-run guard to avoid runaway sessions.

## `monitorChanges` (type: `boolean`):

Save a snapshot and compare creative IDs across scheduled runs.

## `onlyChanges` (type: `boolean`):

When change detection is enabled, output only new creative rows.

## `proxyUrl` (type: `string`):

Optional full HTTP, HTTPS, or SOCKS proxy URL.

## `proxyMode` (type: `string`):

Fallback Apify proxy mode used only when Custom proxy URL is empty.

## `proxyCountryCode` (type: `string`):

Optional two-letter country code for Apify residential proxy mode.

## Actor input object example

```json
{
  "targetUrl": "https://adstransparency.google.com/?region=US&domain=nike.com",
  "domains": [
    "nike.com",
    "allbirds.com"
  ],
  "searchTerms": [
    "Nike",
    "Allbirds"
  ],
  "advertiserIds": [],
  "creativeUrls": [],
  "region": "US",
  "platform": "all",
  "format": "all",
  "maxResults": 10,
  "enrichDetails": false,
  "includeAssetUrls": false,
  "maxConcurrency": 2,
  "requestHandlerTimeoutSecs": 60,
  "maxRunMinutes": 4,
  "monitorChanges": false,
  "onlyChanges": false,
  "proxyUrl": "",
  "proxyMode": "none",
  "proxyCountryCode": ""
}
```

# Actor output Schema

## `results` (type: `string`):

Open the default dataset to view delivered Google Ads Transparency creative rows.

# 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("glowing_glove/google-ads-creative-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("glowing_glove/google-ads-creative-scraper").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 '{}' |
apify call glowing_glove/google-ads-creative-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=glowing_glove/google-ads-creative-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Ads Creative Scraper - PPC Intelligence",
        "description": "Scrape public Google Ads Transparency Center creatives by advertiser domain, advertiser ID, creative URL, or copied target URL with enrichment, clean output rows, and strict timeouts.",
        "version": "0.1",
        "x-build-id": "HWDllCiNzstKf5Qeh"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/glowing_glove~google-ads-creative-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-glowing_glove-google-ads-creative-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/glowing_glove~google-ads-creative-scraper/runs": {
            "post": {
                "operationId": "runs-sync-glowing_glove-google-ads-creative-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/glowing_glove~google-ads-creative-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-glowing_glove-google-ads-creative-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "targetUrl": {
                        "title": "Target URL",
                        "type": "string",
                        "description": "Full Google Ads Transparency Center URL. When supplied, this exact page is used first.",
                        "default": ""
                    },
                    "domains": {
                        "title": "Advertiser domains",
                        "type": "array",
                        "description": "Advertiser domains to search, such as nike.com, shopify.com, or allbirds.com.",
                        "default": [
                            "nike.com"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchTerms": {
                        "title": "Search terms",
                        "type": "array",
                        "description": "Optional advertiser names or keywords. Domains are more reliable when available.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "advertiserIds": {
                        "title": "Advertiser IDs",
                        "type": "array",
                        "description": "Optional Google Ads Transparency advertiser IDs such as AR16735076323512287233.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "creativeUrls": {
                        "title": "Creative URLs",
                        "type": "array",
                        "description": "Optional direct Google Ads Transparency creative detail URLs.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "region": {
                        "title": "Region",
                        "type": "string",
                        "description": "Two-letter region code used by Google Ads Transparency Center.",
                        "default": "US"
                    },
                    "platform": {
                        "title": "Platform filter",
                        "enum": [
                            "all",
                            "search",
                            "youtube",
                            "display",
                            "shopping",
                            "maps"
                        ],
                        "type": "string",
                        "description": "Optional platform label for your workflow. Google may not expose this on every public page.",
                        "default": "all"
                    },
                    "format": {
                        "title": "Format filter",
                        "enum": [
                            "all",
                            "text",
                            "image",
                            "video"
                        ],
                        "type": "string",
                        "description": "Optional creative format label for filtering and output context.",
                        "default": "all"
                    },
                    "maxResults": {
                        "title": "Max creatives",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum useful creative rows to write. Billing should be based on delivered rows, not requested rows.",
                        "default": 10
                    },
                    "enrichDetails": {
                        "title": "Open creative detail pages",
                        "type": "boolean",
                        "description": "Open each creative detail page to collect last shown date, format, region text, variation count, and public media asset URLs.",
                        "default": false
                    },
                    "includeAssetUrls": {
                        "title": "Include public asset URLs",
                        "type": "boolean",
                        "description": "Include public image/media asset URLs visible on creative detail pages.",
                        "default": false
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "maximum": 8,
                        "type": "integer",
                        "description": "Number of source pages or detail pages to process in parallel.",
                        "default": 2
                    },
                    "requestHandlerTimeoutSecs": {
                        "title": "Timeout per source",
                        "minimum": 45,
                        "maximum": 1200,
                        "type": "integer",
                        "description": "Maximum seconds spent on one source or detail page.",
                        "default": 60
                    },
                    "maxRunMinutes": {
                        "title": "Max run minutes",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Whole-run guard to avoid runaway sessions.",
                        "default": 4
                    },
                    "monitorChanges": {
                        "title": "Detect changes",
                        "type": "boolean",
                        "description": "Save a snapshot and compare creative IDs across scheduled runs.",
                        "default": false
                    },
                    "onlyChanges": {
                        "title": "Output only changes",
                        "type": "boolean",
                        "description": "When change detection is enabled, output only new creative rows.",
                        "default": false
                    },
                    "proxyUrl": {
                        "title": "Custom proxy URL",
                        "type": "string",
                        "description": "Optional full HTTP, HTTPS, or SOCKS proxy URL.",
                        "default": ""
                    },
                    "proxyMode": {
                        "title": "Apify proxy mode",
                        "enum": [
                            "none",
                            "auto",
                            "datacenter",
                            "residential"
                        ],
                        "type": "string",
                        "description": "Fallback Apify proxy mode used only when Custom proxy URL is empty.",
                        "default": "none"
                    },
                    "proxyCountryCode": {
                        "title": "Residential proxy country",
                        "type": "string",
                        "description": "Optional two-letter country code for Apify residential proxy mode.",
                        "default": ""
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
