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

From 1$/1000 results. Scrape Google Ads Transparency Center by advertiser URL. Get ad creatives, formats, targeting, regions, serving dates, headlines, CTAs and image URLs. Supports OCR text extraction, asset downloads, and bulk collection with maxResults. No API key needed.

- **URL**: https://apify.com/leadsbrary/google-ads-transparency-scraper.md
- **Developed by:** [Alexandre Manguis](https://apify.com/leadsbrary) (community)
- **Categories:** Automation, E-commerce, Social media
- **Stats:** 11 total users, 7 monthly users, 70.6% runs succeeded, 2 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.00 / 1,000 results

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

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 Transparency Scraper

Scrape any advertiser's ads from the [Google Ads Transparency Center](https://adstransparency.google.com/). Get ad creatives, targeting data, region stats, serving dates, and more — with optional OCR text extraction and asset downloads.

---

### What it does

Google Ads Transparency Center lets anyone inspect the ads run by any advertiser on Google Search, Display, YouTube, and more. This actor automates that research at scale:

- Scrape all ads (or a specific number) for any advertiser
- Filter by region and date using URL parameters
- Get full creative details: format, variations, headlines, descriptions, CTAs, image/video URLs
- Get targeting metadata: demographics, geography, contextual signals, advertiser lists
- Get regional impression data per ad (first/last shown per region)
- Optionally run OCR on ad images to extract visible text
- Optionally download preview images and media assets to Apify storage

---

### Input

Provide one or more advertiser URLs from Google Ads Transparency Center. You can filter by region and date directly in the URL.

**URL format:**
````

https://adstransparency.google.com/advertiser/AR08888592736429539329
https://adstransparency.google.com/advertiser/AR08888592736429539329?region=ES\&preset-date=Last+30+days
https://adstransparency.google.com/advertiser/AR08888592736429539329?region=US\&start-date=2024-01-01\&end-date=2024-06-30

````

**To find an advertiser URL:** go to [adstransparency.google.com](https://adstransparency.google.com/), search for a brand, click on it, and copy the URL.

#### Input options

| Field | Type | Default | Description |
|---|---|---|---|
| `startUrls` | array | — | One or more advertiser page URLs |
| `maxResults` | integer | 1000 | Max ads to collect per URL (0 = no limit) |
| `skipDetails` | boolean | false | Skip individual ad detail pages — faster but no variations/targeting/regions |
| `ocr` | boolean | false | Extract visible text from ad images using OCR (Tesseract) |
| `shouldDownloadPreviews` | boolean | false | Download ad preview images to key-value store |
| `shouldDownloadAssets` | boolean | false | Download all image and video assets to key-value store |

> **Tip:** Use `skipDetails: true` for fast bulk collection when you only need basic metadata (advertiser, format, dates, preview URL).

---

### Output

Each ad is saved as one item in the dataset.

#### Fields

| Field | Description |
|---|---|
| `adLibraryUrl` | Direct link to the ad in Google Ads Transparency Center |
| `advertiserId` | Advertiser ID (`AR...`) |
| `advertiserName` | Advertiser display name |
| `creativeId` | Creative ID (`CR...`) |
| `format` | Ad format: `IMAGE`, `VIDEO`, `TEXT`, or `HTML` |
| `firstShown` | Date the ad first appeared (`YYYY-MM-DD`) |
| `lastShown` | Date the ad was last seen (`YYYY-MM-DD`) |
| `numServedDays` | Total number of days the ad was active |
| `previewUrl` | URL of the ad preview image |
| `ocrText` | Text extracted from the preview image (only when `ocr: true`) |
| `variations` | List of creative variations with headline, description, CTA, clickUrl, imageUrl, videoUrl |
| `regionStats` | Per-region serving data (regionId, firstShown, lastShown) |
| `targeting` | Targeting signals used (demographics, geography, contextual, advertiser list) |
| `startUrl` | The input URL that produced this result |

#### Example

```json
{
  "adLibraryUrl": "https://adstransparency.google.com/advertiser/AR08888592736429539329/creative/CR08436770543486631937",
  "advertiserId": "AR08888592736429539329",
  "advertiserName": "Niantic, Inc.",
  "creativeId": "CR08436770543486631937",
  "format": "IMAGE",
  "firstShown": "2024-01-04",
  "lastShown": "2024-05-17",
  "numServedDays": 134,
  "previewUrl": "https://tpc.googlesyndication.com/archive/simgad/12683072185372151324",
  "ocrText": "Catch Pokémon in the real world. Play now.",
  "variations": [
    {
      "headline": null,
      "description": "Catch Pokémon, battle other Trainers, raid with friends",
      "cta": "INSTALL",
      "clickUrl": "https://play.google.com/store/apps/details?id=com.nianticlabs.pokemongo",
      "imageUrl": "https://tpc.googlesyndication.com/simgad/16977068568541754968",
      "videoUrl": null,
      "htmlPreviewUrl": null
    }
  ],
  "regionStats": [
    {
      "regionId": 2276,
      "firstShown": "2024-01-04",
      "lastShown": "2024-05-17"
    }
  ],
  "targeting": {
    "demographics": { "broad": true, "narrow": true },
    "geography": { "broad": true, "narrow": false },
    "contextual": { "broad": true, "narrow": false },
    "advertiserList": { "broad": true, "narrow": false }
  },
  "startUrl": "https://adstransparency.google.com/advertiser/AR08888592736429539329?region=ES&preset-date=Last+30+days"
}
````

***

### How it works

1. The actor opens the advertiser page in a headless Chromium browser
2. It scrolls the page to trigger pagination, intercepting the internal Google Ads RPC API responses
3. Collected ads are deduplicated by `creativeId`
4. If `skipDetails` is false, the actor visits each ad's detail page to retrieve variations, targeting, and region stats
5. If `ocr` is enabled, preview images and variation images are downloaded and processed with Tesseract OCR
6. Results are pushed to the Apify dataset in real time

***

### Use cases

- **Competitive intelligence** — monitor the ad strategy of any competitor on Google
- **Market research** — analyze what formats, messages and CTAs are used in a vertical
- **Ad copy inspiration** — extract real ad headlines and descriptions at scale
- **Brand monitoring** — track how a brand's advertising evolves over time
- **Agency reporting** — audit a client's or competitor's ad presence across regions

***

### Notes

- Only ads visible in the public Google Ads Transparency Center are accessible — no private or deleted ads
- The `region` and date filters in the URL are respected by Google's API and affect which ads are returned
- OCR works best on text-heavy display ads; purely graphical banner ads may return no text
- Asset downloads use Apify's key-value store; keys are prefixed with `preview_`, `image_`, or `video_`

***

### Keywords

google ads scraper, google ads transparency center, google ads transparency, google ad library, adstransparency.google.com, google advertising data, competitor ads, ad intelligence, google ad creatives, ad monitoring, google display ads, google search ads, youtube ads, ad targeting data, google ads export, advertiser research, competitive intelligence, ad copy scraper, ad library scraper, google ads api alternative

# Actor input Schema

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

List of Google Ads Transparency Center advertiser URLs to scrape.

## `skipDetails` (type: `boolean`):

Skip individual ad detail pages. Faster (~400 ads/min) but returns less data (no regionStats, targeting).

## `shouldDownloadAssets` (type: `boolean`):

Download image and video ad assets to the KeyValueStore.

## `shouldDownloadPreviews` (type: `boolean`):

Download ad preview images to the KeyValueStore.

## `ocr` (type: `boolean`):

Run OCR on ad images to extract visible text. Requires more memory.

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

Maximum number of ads to return per URL. Set to 0 for unlimited.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://adstransparency.google.com/advertiser/AR08888592736429539329?authuser=0&region=ES&preset-date=Last+30+days"
    }
  ],
  "skipDetails": false,
  "shouldDownloadAssets": false,
  "shouldDownloadPreviews": false,
  "ocr": false,
  "maxResults": 1000
}
```

# Actor output Schema

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

Dataset containing all scraped ads.

# 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": [
        {
            "url": "https://adstransparency.google.com/advertiser/AR08888592736429539329?authuser=0&region=ES&preset-date=Last+30+days"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("leadsbrary/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": [{ "url": "https://adstransparency.google.com/advertiser/AR08888592736429539329?authuser=0&region=ES&preset-date=Last+30+days" }] }

# Run the Actor and wait for it to finish
run = client.actor("leadsbrary/google-ads-transparency-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 '{
  "startUrls": [
    {
      "url": "https://adstransparency.google.com/advertiser/AR08888592736429539329?authuser=0&region=ES&preset-date=Last+30+days"
    }
  ]
}' |
apify call leadsbrary/google-ads-transparency-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Ads Transparency Scraper",
        "description": "From 1$/1000 results. Scrape Google Ads Transparency Center by advertiser URL. Get ad creatives, formats, targeting, regions, serving dates, headlines, CTAs and image URLs. Supports OCR text extraction, asset downloads, and bulk collection with maxResults. No API key needed.",
        "version": "1.0",
        "x-build-id": "1HpLwMPqLaLScBPsU"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/leadsbrary~google-ads-transparency-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-leadsbrary-google-ads-transparency-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/leadsbrary~google-ads-transparency-scraper/runs": {
            "post": {
                "operationId": "runs-sync-leadsbrary-google-ads-transparency-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/leadsbrary~google-ads-transparency-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-leadsbrary-google-ads-transparency-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": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "List of Google Ads Transparency Center advertiser URLs to scrape.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "skipDetails": {
                        "title": "Skip details",
                        "type": "boolean",
                        "description": "Skip individual ad detail pages. Faster (~400 ads/min) but returns less data (no regionStats, targeting).",
                        "default": false
                    },
                    "shouldDownloadAssets": {
                        "title": "Download assets",
                        "type": "boolean",
                        "description": "Download image and video ad assets to the KeyValueStore.",
                        "default": false
                    },
                    "shouldDownloadPreviews": {
                        "title": "Download previews",
                        "type": "boolean",
                        "description": "Download ad preview images to the KeyValueStore.",
                        "default": false
                    },
                    "ocr": {
                        "title": "OCR (extract text from images)",
                        "type": "boolean",
                        "description": "Run OCR on ad images to extract visible text. Requires more memory.",
                        "default": false
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of ads to return per URL. Set to 0 for unlimited.",
                        "default": 1000
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
