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

Extract public Google Ads Transparency Center creatives by advertiser URL or ID. Return creative IDs, formats, shown dates, advertiser names, preview and image URLs, and region bounds. Filter format and dates before billing; no login or media downloads.

- **URL**: https://apify.com/schnellscrapers/google-ads-transparency-scraper.md
- **Developed by:** [Nate Schnell](https://apify.com/schnellscrapers) (community)
- **Categories:** Marketing, Lead generation, Automation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.00 / 1,000 creatives

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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

### What does Google Ads Transparency Scraper do?

Google Ads Transparency Scraper extracts public Google Ads Transparency Center
creatives for competitor monitoring, campaign reporting, brand protection, and
agency workflows. Give it advertiser URLs or stable `AR...` IDs and receive one
structured dataset record per creative returned by the public registry.

### What data can you extract from Google Ads Transparency Center?

- Creative identity — `advertiserId`, `advertiserName`, `creativeId`, and `format`
- Timing and reach context — `firstShownAt`, `lastShownAt`, `region`, and matched-result bounds
- Public assets — `previewUrl`, `imageUrl`, `advertiserUrl`, and `creativeUrl`
- Optional detail counts — `variationCount`, `regionStatCount`, and `detailFetched`

The actor returns public URLs rather than downloading media files. Some preview
URLs can expire, while the advertiser and creative detail URLs remain useful for
verification.

### How to use Google Ads Transparency Scraper

1. Open the actor and paste one or more public advertiser URLs, or add `AR...` advertiser IDs.
2. Choose a region and creative format when you need a focused export.
3. Add first-shown or last-shown dates to monitor a campaign window.
4. Set the maximum records and pages per advertiser, then click **Run**.
5. Download the results as JSON, CSV, Excel, or through the Apify dataset API.

```json
{
  "startUrls": [
    "https://adstransparency.google.com/advertiser/AR14188379519798214657?region=anywhere"
  ],
  "region": "US",
  "format": "all",
  "maxItems": 100,
  "maxPagesPerAdvertiser": 3,
  "includeDetails": false
}
```

### How much does Google Ads Transparency Scraper cost?

The actor uses pay-per-event pricing from $1.00 per 1,000 creative records.
One emitted dataset record counts as one billable creative. Records removed by
the format or date filters, invalid advertiser inputs, and failed requests are
not written or billed. The default run cap is 100 records; increase
`maxItems` for larger exports. `includeDetails` adds one public request per
kept creative, so leave it off when the summary fields are enough.

### Output

Each output object contains advertiser and creative IDs, format, shown dates,
public preview or image URLs when available, region information, and canonical
registry links. Detail counts are populated when `includeDetails` is enabled.

```json
{
  "advertiserId": "AR14188379519798214657",
  "advertiserName": "Google LLC",
  "creativeId": "CR09858164294783336449",
  "format": "image",
  "firstShownAt": "2026-07-15T00:00:00.000Z",
  "lastShownAt": "2026-08-08T00:00:00.000Z",
  "previewUrl": null,
  "imageUrl": "https://tpc.googlesyndication.com/archive/simgad/17010980779874985691",
  "advertiserUrl": "https://adstransparency.google.com/advertiser/AR14188379519798214657?region=US",
  "creativeUrl": "https://adstransparency.google.com/advertiser/AR14188379519798214657/creative/CR09858164294783336449?region=US",
  "region": "US",
  "detailFetched": false
}
```

### Integrations

Use the default dataset with [Apify API integrations](https://docs.apify.com/api/v2),
webhooks, scheduled runs, Make, Zapier, or n8n. The dataset can also be pulled
from Python or Node.js with the `apify-client` package.

### Related actors

- [Google Ads Scraper](https://apify.com/silva95gustavo/google-ads-scraper) — extracts Google ad creatives with broader detail fields.
- [Google Ads Transparency Scraper](https://apify.com/solidcode/ads-transparency-scraper) — supports advertiser, domain, and keyword discovery.
- [Google Ads Scraper](https://apify.com/automation-lab/google-ads-scraper) — combines advertiser discovery with creative exports.

### FAQ

#### How does Google Ads Transparency Scraper work?

It sends the same public registry requests used by the Google Ads Transparency
Center page, follows its creative pagination token, and normalizes each public
creative into a flat dataset record. No Google Ads account or login is needed.

#### Can I use Google Ads Transparency Scraper as an API?

Yes. Start a run with the [Apify API](https://docs.apify.com/api/v2/acts-run-sync-post)
and read the returned default dataset. You can also schedule the actor and
connect a webhook to a downstream system.

#### Can I use Google Ads Transparency Scraper in Python or Node.js?

Yes. Use the Apify client and pass the same input JSON:

```js
const run = await apifyClient.actor('YOUR_ACTOR_ID').call({ advertiserIds: ['AR14188379519798214657'] });
```

#### Is it legal to scrape Google Ads Transparency Center?

This actor accesses public advertiser and creative metadata without logging in
or accessing account data. Review Google’s [Terms of Service](https://policies.google.com/terms),
respect applicable laws and source policies, and do not use public data to
infer private campaign performance or misuse personal information.

#### Why are some image or preview URLs empty?

The registry does not expose every asset for every creative format. The actor
keeps the creative record and canonical detail URL even when `imageUrl` or
`previewUrl` is null.

#### What does the region filter change?

Region is sent to the public registry before pagination. Use a country code to
compare the same advertiser across markets, or keep `anywhere` for the default
registry view.

### Your feedback

Report source changes, missing fields, and filter requests through the Issues
tab on the actor page. Include the advertiser URL and a short description of
the unexpected result so the parser can be updated quickly.

# Actor input Schema

## `startUrls` (type: `array`):

Paste public advertiser pages from Google Ads Transparency Center (for example, https://adstransparency.google.com/advertiser/AR14188379519798214657?region=anywhere). Add one or more URLs.

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

Provide AR... advertiser IDs when your workflow already has them (for example, AR14188379519798214657). URLs and IDs can be combined.

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

Choose the country sent to the Transparency Center, or keep Anywhere for the default registry view. Example: US, GB, or DE.

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

Keep all creative formats, or emit only image or preview creatives. Filtering happens before dataset writes.

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

Keep creatives first shown on or after this date in YYYY-MM-DD format (for example, 2026-01-01). Leave blank for no lower bound.

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

Keep creatives last shown on or before this date in YYYY-MM-DD format (for example, 2026-08-01). Leave blank for no upper bound.

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

Make one extra public request per kept creative to return variationCount and regionStatCount. Leave off for the lowest-cost first pass.

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

Set the maximum number of creative records to emit across all advertisers. The default is 100; use a higher value for larger exports.

## `maxPagesPerAdvertiser` (type: `integer`):

Limit each advertiser to this many pages, with up to 40 creatives per page. Use 1–3 for focused monitoring and increase for a larger history.

## `dryRun` (type: `boolean`):

Fetch and parse the registry without writing records to the dataset. Use this to verify an input or filter combination.

## Actor input object example

```json
{
  "startUrls": [
    "https://adstransparency.google.com/advertiser/AR14188379519798214657?region=anywhere"
  ],
  "advertiserIds": [],
  "region": "anywhere",
  "format": "all",
  "includeDetails": false,
  "maxItems": 100,
  "maxPagesPerAdvertiser": 3,
  "dryRun": false
}
```

# Actor output Schema

## `records` (type: `string`):

Creative records with advertiser name, format, dates, public preview URLs, and canonical registry links.

# 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 = {
    "startUrls": [
        "https://adstransparency.google.com/advertiser/AR14188379519798214657?region=anywhere"
    ],
    "advertiserIds": [],
    "dateFrom": "",
    "dateTo": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("schnellscrapers/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 = {
    "startUrls": ["https://adstransparency.google.com/advertiser/AR14188379519798214657?region=anywhere"],
    "advertiserIds": [],
    "dateFrom": "",
    "dateTo": "",
}

# Run the Actor and wait for it to finish
run = client.actor("schnellscrapers/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 '{
  "startUrls": [
    "https://adstransparency.google.com/advertiser/AR14188379519798214657?region=anywhere"
  ],
  "advertiserIds": [],
  "dateFrom": "",
  "dateTo": ""
}' |
apify call schnellscrapers/google-ads-transparency-scraper --silent --output-dataset

```

## MCP server setup

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