# Google Ads Transparency Scraper — Google Ads Library API (`prestilink/google-ads-transparency-scraper`) Actor

Google Ads Library API: every ad a competitor runs on Google Search, YouTube, Shopping, Maps and Play, from the Google Ads Transparency Center. Ad copy as text, images, videos, first and last shown dates, countries, EU reach and targeting. Search by domain or advertiser name.

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

## Pricing

Pay per event

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 — Google Ads Library API

Get **every ad a competitor runs on Google** from the **Google Ads Transparency Center** (the Google Ads Library): Search, YouTube, Shopping, Maps and Play. For each ad you get the **ad copy as text** (headline, description, display URL, sitelinks), images, videos, the landing page, first and last shown dates, the days it ran, every country it ran in, and for the EU the **reach (impressions) by country and platform**, the targeting used and the ad topic.

Search by **website domain** (nike.com), **advertiser name** (Nike), **advertiser ID** or any **Transparency Center URL**. No browser: the Actor reads Google's data directly, so thousands of ads take minutes, not hours.

**A pay-as-you-go alternative to SerpApi's Google Ads Transparency API**: no monthly plan, you only pay for the ads you get.

### Who uses it

- **PPC and marketing agencies**: see every ad, headline and offer of a client's competitors before the pitch.
- **Brands and e-commerce**: track competitor promotions, product ads and prices on Google Shopping.
- **Lead generation**: find companies that advertise on Google in a country, with their domain and ad volume.
- **Analysts and researchers**: how long ads run, where, and how many people saw them in the EU.
- **AI agents and copywriters**: thousands of real, running ads as examples for ad copy.

### What you get

| Data | Field |
|---|---|
| Advertiser, country, verification, legal name | `advertiserName`, `advertiserId`, `advertiserCountry`, `advertiserVerified`, `advertiserLegalName` |
| Ad ID, format (text, image, video), domain | `adId`, `format`, `domain` |
| First shown, last shown, number of days shown | `firstShown`, `lastShown`, `daysShown` |
| Ad copy of text ads, read from Google's ad image | `headline`, `description`, `displayUrl`, `sitelinks`, `adText` |
| Shopping ads | `productTitle`, `price`, `originalPrice`, `merchant`, `reviewCount` |
| Images and videos | `imageUrls`, `previewImageUrl`, `videoUrls`, `videoFileUrl`, `videoDurationSeconds` |
| Landing page of image and video ads | `landingPageUrl` |
| Countries where the ad ran, with dates | `regions[]` |
| EU reach: impressions by country and by platform | `impressionsMin`, `impressionsMax`, `impressionsByPlatform`, `regions[].impressionsByPlatform` |
| EU targeting and topic | `targeting`, `topic` |
| All versions of responsive ads | `variations[]`, `variationCount` |
| Link to the ad on the Transparency Center | `adUrl` |

Turn off **Include ad details** for a fast, cheaper list with the advertiser, format, dates, days shown, domain, preview image and link.

### How to use

1. Add one or more **searches**, one per line: `nike.com`, `Decathlon`, `AR16735076323512287233`, or a URL copied from [adstransparency.google.com](https://adstransparency.google.com).
2. Optionally filter by **country**, **platform** (Search, YouTube, Shopping, Maps, Play), **ad format** and **dates** (`2026-09-01`, or `-30` for the last 30 days).
3. Set **Max ads per search**, or 0 for every ad Google lists.
4. Run, then download the results as JSON, CSV or Excel, or get them through the API.

**Domain or name?** A domain returns every advertiser account that runs ads for that site, including resellers and agencies. A name returns the matching advertiser with the most ads. Set **Advertisers per name** to include more.

### Input example

```json
{
  "searches": ["nike.com", "Decathlon"],
  "region": "FR",
  "platform": "all",
  "adFormat": "all",
  "dateFrom": "-30",
  "maxAdsPerSearch": 200,
  "includeDetails": true,
  "extractAdText": true
}
```

### Output example

```json
{
  "type": "ad",
  "query": "nike.com",
  "position": 1,
  "advertiserName": "Nike, Inc.",
  "advertiserId": "AR16735076323512287233",
  "advertiserCountry": "US",
  "advertiserVerified": true,
  "adId": "CR08892147938558476289",
  "format": "text",
  "domain": "nike.com",
  "firstShown": "2022-11-30T15:09:20Z",
  "lastShown": "2026-10-16T22:11:46Z",
  "daysShown": 1292,
  "headline": "Babies & Toddlers Kids Sale. Nike.com",
  "description": "Shop New Nike Markdowns With 1,200+ Items. Shop Clearance Now. Live Support Available.",
  "displayUrl": "www.nike.com/",
  "sitelinks": ["Nike Kid's Clearance", "Nike Men's Clearance"],
  "imageUrls": ["https://tpc.googlesyndication.com/archive/simgad/5835230024190254060"],
  "regions": [
    {"countryCode": "DE", "country": "Germany", "firstShown": "2025-10-30", "lastShown": "2026-10-16",
     "impressionsMin": 1000, "impressionsMax": 2000,
     "impressionsByPlatform": [{"platform": "Google Search", "impressionsMin": 1000, "impressionsMax": 2000}]}
  ],
  "variationCount": 5,
  "adUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR08892147938558476289?region=anywhere",
  "status": "ok"
}
```

Values in this example are illustrative.

### Pricing

Pay per event: a small fee per run, a fee per ad, and a fee per ad with details. Bigger Apify plans pay less. See the **Pricing** tab for exact prices on your plan.

Set a maximum cost per run in the run options and the Actor stops before going over it. **Max ads per search** also caps what each search costs. Searches that find nothing are never charged.

### Good to know

- Google shows most **text ads only as a picture**. The Actor reads that picture and returns the headline, description, display URL and sitelinks as text, in any Latin-alphabet language. Turn off **Read the text of text ads** if you only need the image.
- **Reach, targeting and topic** are published by Google for ads shown in the EU (Digital Services Act). Choose an EU country, or leave Anywhere, to get them.
- `targeting` tells which criteria the advertiser used, included or excluded: demographics, location, contextual signals, customer lists and topics of interest, as Google discloses them.
- `videoFileUrl` is a direct link to the video file and expires after a few hours. Download it right away if you need it.
- Some ads can't be previewed by Google itself. They come with their dates, regions and reach, and `previewUnavailable: true`.
- The Transparency Center lists ads that ran in roughly the last few years, as Google shows them at the time of the run.

### Use it with

- **AI agents and MCP**: add this Actor as a tool through the Apify MCP server (Claude, Cursor, ChatGPT and other MCP clients), LangChain, LlamaIndex or CrewAI.
- **No-code automation**: n8n, Make and Zapier, for example a weekly report of a competitor's new ads to Slack or Google Sheets.
- **Spreadsheets and dashboards**: Google Sheets, Excel, Looker Studio.
- **Developers**: the Apify API, Python and JavaScript clients, webhooks and scheduled runs.

***

This Actor is not affiliated with, endorsed by, or sponsored by Google. Google Ads and the Google Ads Transparency Center are trademarks of Google LLC. The Actor collects only data that Google publishes on the public Transparency Center.

# Actor input Schema

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

One per line: a <b>website domain</b> (nike.com), an <b>advertiser name</b> (Nike), an <b>advertiser ID</b> (AR16735076323512287233) or any <b>Google Ads Transparency Center URL</b> (advertiser page, single ad, or search by domain). Filters in a URL are kept.

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

Stop each search after this many ads. 0 means every ad Google lists.

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

Only ads shown in this country. EU countries also return reach (impressions) and targeting.

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

Only ads shown on this Google platform.

## `adFormat` (type: `string`):

Only text, image or video ads.

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

Only ads shown on or after this date: 2026-09-01, or -30 for the last 30 days.

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

Only ads shown on or before this date. Empty means today.

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

Ad copy (headline, description, display URL), every image and video, all countries with first and last dates, EU reach by platform, targeting and topic. Turn off for a faster, cheaper list of ads.

## `extractAdText` (type: `boolean`):

Google shows most text ads only as a picture. This reads the picture and returns the headline, description, display URL and sitelinks as text.

## `adVariationsToRead` (type: `integer`):

Responsive ads have several versions. Read the copy of this many versions per ad. More versions take longer.

## `maxAdvertisersPerName` (type: `integer`):

When you search by name, how many matching advertisers to include, the ones with the most ads first. A domain is more precise.

## Actor input object example

```json
{
  "searches": [
    "nike.com"
  ],
  "maxAdsPerSearch": 50,
  "region": "anywhere",
  "platform": "all",
  "adFormat": "all",
  "includeDetails": true,
  "extractAdText": true,
  "adVariationsToRead": 1,
  "maxAdvertisersPerName": 1
}
```

# Actor output Schema

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

One item per ad: advertiser, format, dates, days shown, ad copy, images, videos, countries, EU reach and targeting, and a link to the ad on the Transparency Center.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searches": [
        "nike.com"
    ],
    "maxAdsPerSearch": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("prestilink/google-ads-transparency-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searches": ["nike.com"],
    "maxAdsPerSearch": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("prestilink/google-ads-transparency-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searches": [
    "nike.com"
  ],
  "maxAdsPerSearch": 50
}' |
apify call prestilink/google-ads-transparency-scraper --silent --output-dataset

```

## MCP server setup

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