# Google Ads Scraper — Transparency Center | $0.40/1K (`monkey.d.scraping/google-ads-transparency-scraper`) Actor

Google Ads Scraper and Google Ad Library API: competitor ads from the Ads Transparency Center by domain, brand or advertiser ID for $0.40/1K. Reach by country and platform, ad texts, YouTube and Shopping ads. No login.

- **URL**: https://apify.com/monkey.d.scraping/google-ads-transparency-scraper.md
- **Developed by:** [Monkey D. Scraping](https://apify.com/monkey.d.scraping) (community)
- **Categories:** Marketing, Lead generation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.40 / 1,000 ads

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/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 Scraper — Transparency Center | $0.40/1K

**Google Ads Scraper** exports ads from the public **Google Ads Transparency Center** by website domain, brand or advertiser name, advertiser ID or Transparency Center URL. Get every ad's advertiser, format, first and last shown dates, days shown, target domain and preview image for **$0.40 per 1,000 ads**, platform usage included. Add only what you need:

- **Reach and regions** (+$0.10 per 1,000 ads): impressions and dates per country and per platform, overall impressions, payer and targeting categories.
- **Ad content** (+$0.20 per 1,000 ads): ad texts, A/B variations, images, YouTube links and landing pages.

**Everything included: $0.70 per 1,000 ads.** No Google account, login or cookies needed.

Works for **Google Search, YouTube, Google Shopping, Google Maps and Google Play** ads, in text, image and video formats.

Also known as a **Google Ad Library scraper**, **Google Ads Transparency Center API** or **competitor ads spy** for Google Search, YouTube and Shopping: one tool for PPC competitor research, YouTube ads research and Google Shopping ads research.

Built for marketers, PPC and SEO agencies, e-commerce teams, sales and growth teams who want to see what competitors advertise on Google, where, for how long and with which creatives.

#### Why choose this Google Ads Scraper?

- **Everything for $0.70 per 1,000 ads, platform included.** Popular Google ads scrapers in the Apify Store charge $1.48 to $5.00 per 1,000 ads with details, and up to $7.00 with ad texts. Here the price you see is the price you pay: no compute bill, no start fee.
- **Pay only for what you use.** Ads, reach and ad content are separate. Each optional part is charged only when it was actually obtained for that ad, and duplicates are free.
- **Fast.** No browser: 100 ads with full details in about 5 seconds, 1,000 ads with reach in about 1.5 minutes in our tests. When Google limits requests, the run slows down by itself and keeps going instead of failing.
- **One input field.** Type a domain (`nike.com`), a brand (`Decathlon`), an advertiser ID (`AR16735076323512287233`) or paste a Transparency Center URL. The type is detected automatically.
- **Reach you can use.** Impressions and first/last shown dates **per country and per platform** (Search, YouTube, Shopping, Maps, Play), plus overall impressions and the platform split for ads shown in the EU.
- **Creatives, not just IDs.** Text ad headline, description and display URL when Google publishes them; product titles for Shopping ads; image URLs; YouTube links for video ads; visible texts of display ads.
- **You never pay for gaps.** Duplicate ads are free. Details are charged only when they were obtained.
- **Results saved as you go.** Ads are added to the dataset page by page, so a stopped run keeps everything collected.

##### Benchmark on the same search

Same input, same day (5 November 2026): domain `booking.com`, 100 ads with details, compared with one of the most used Google ads scrapers in the Apify Store.

| | This Actor | Popular alternative |
|---|---|---|
| Ads delivered | 100 | 100 |
| Reach by country | ✅ | ✅ |
| Run time | **4.8 s** | 59 s |
| Cost to the user | **$0.07** | $0.19 |

Results depend on the advertiser, filters and Google's response times. Run your own search with 10 ads first to check output and cost.

#### When should an AI agent use this Actor?

Use it when a user asks which ads a company runs on Google (Search, YouTube, Shopping, Maps, Play), since when, in which countries, with which texts or landing pages, or who advertises for a domain. Input: one or more domains, brand names, advertiser IDs or Transparency Center URLs in `targets`, optionally `country`. Start with `maxAdsPerTarget: 10`. Each ad costs $0.0004, plus $0.0001 for reach and $0.0002 for ad content when obtained.

#### What can you use it for?

- **Competitor ad research**: every ad a competitor runs on Google, with dates, formats and creatives.
- **Media-mix and reach analysis**: in which countries and on which Google platforms each ad ran, and with how many impressions.
- **Creative inspiration**: collect text ads, product ads, images and YouTube ads in a niche.
- **Lead generation for agencies**: find companies that advertise on Google, with their payer and target domain.
- **Monitoring with schedules or API**: run the same search weekly and compare ad IDs in your pipeline, Clay, n8n, Make or Zapier.

#### What data do you get?

| Field | Description | Ad ($0.40/1K) | Reach (+$0.10/1K) | Content (+$0.20/1K) |
|---|---|---|---|---|
| `adId`, `adUrl` | Creative ID and link to the ad in the Transparency Center | ✅ | | |
| `advertiserId`, `advertiserName`, `targetDomain` | Advertiser account and the website the ad points to | ✅ | | |
| `format` | `text`, `image` or `video` | ✅ | | |
| `firstShown`, `lastShown`, `daysShown` | When the ad ran (YYYY-MM-DD) and on how many days | ✅ | | |
| `previewImageUrl`, `imageUrls` | Preview image; creative images with content | ✅ | | ✅ |
| `regions` | Per country: first/last shown, impressions range, per-platform impressions | | ✅ | |
| `totalImpressionsMin`, `totalImpressionsMax`, `platformImpressions` | Overall impressions and platform split (published for EU ads) | | ✅ | |
| `paidBy`, `targetingCategories`, `variationCount` | Who paid, targeting criteria categories used, number of variations | | ✅ | |
| `headline`, `description`, `displayUrl`, `productTitle` | Text ad copy and Shopping product title when Google publishes them | | | ✅ |
| `variations` | Each A/B variation read: texts, images, videos, landing page | | | ✅ |
| `landingUrl`, `landingDomain`, `videoUrls`, `adTexts` | Landing page, YouTube links of video ads, visible texts of display ads | | | ✅ |

Every row also has `searchInput`, `searchType`, `searchCountry`, `reachIncluded`, `contentIncluded` and `scrapedAt`.

#### How much does it cost?

You pay only for results. Platform usage is included.

| What you get | Price per 1,000 ads | 100 ads | 1,000 ads |
|---|---|---|---|
| Ads only | **$0.40** | $0.04 | $0.40 |
| Ads + reach and regions | **$0.50** | $0.05 | $0.50 |
| Ads + reach + ad content (default up to 200 ads per line) | **$0.70** | $0.07 | $0.70 |

##### Why $0.40 per ad record?

Each ad record is complete on its own: advertiser, format, dates, days shown, target domain, preview image and a direct link, with platform usage, proxies and retries included in the price. There is no start fee and no compute bill, so a 10-ad test costs $0.004 and a 1,000-ad search costs $0.40, every time. Reach and ad content are optional and charged only when obtained, so you never pay for data Google did not publish. With everything included, the total is still a fraction of popular alternatives ($1.48 to $7.00 per 1,000 ads with details or ad texts).

Ad content is read from Google's ad previews, which are heavier and slower to fetch. By default (**Auto**) it is read for searches up to 200 ads per line; set **Include ad content** to Always for larger searches, or Never for the fastest runs.

Set a maximum cost per run in Apify Console; the run stops when it is reached.

#### How to use it

1. In **Domains, advertiser names, IDs or URLs**, enter one or more lines, for example `nike.com` or `Decathlon`.
2. Choose the **country where the ads were shown**, or Anywhere.
3. Set the **maximum ads per line**. Start with 10 to see the output.
4. Optional: choose what to include (reach, ad content), **dates**, **platforms** or **ad format**.
5. Click **Start** and export to JSON, CSV or Excel, or use the API.

For advertiser names, the scraper picks the best matching advertiser accounts (3 by default, up to 20). For one exact company, use its domain or advertiser ID.

#### Input example

```json
{
  "targets": ["nike.com", "Decathlon"],
  "country": "DE",
  "maxAdsPerTarget": 100,
  "dateFrom": "2026-10-01",
  "platforms": ["SEARCH", "YOUTUBE"],
  "includeReach": true,
  "adContent": "auto"
}
```

#### Output example

Real result with details, shortened:

```json
{
  "adId": "CR00102451737561923585",
  "adUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR00102451737561923585?region=anywhere",
  "advertiserId": "AR16735076323512287233",
  "advertiserName": "Nike, Inc.",
  "targetDomain": "nike.com",
  "format": "text",
  "firstShown": "2022-11-30",
  "lastShown": "2026-11-05",
  "daysShown": 1381,
  "paidBy": "Nike, Inc.",
  "headline": "Brown Air Force 1 Shoes. Nike.com",
  "description": "Shop The Official Nike Store For The Latest Nike Shoes, Apparel & Gear...",
  "displayUrl": "www.nike.com/",
  "imageUrls": ["https://tpc.googlesyndication.com/simgad/2245601039626230876"],
  "regions": [
    { "country": "US", "lastShown": "2026-11-05", "impressionsMin": null, "impressionsMax": null, "platforms": [] }
  ],
  "variationCount": 5,
  "reachIncluded": true,
  "contentIncluded": true
}
```

EU example of `regions` and reach fields:

```json
{
  "regions": [
    { "country": "DE", "firstShown": "2025-10-22", "lastShown": "2026-11-05", "impressionsMin": 80000, "impressionsMax": 90000,
      "platforms": [{ "platform": "SEARCH", "impressionsMin": 80000, "impressionsMax": 90000 }, { "platform": "SHOPPING", "impressionsMin": 0, "impressionsMax": 1000 }] }
  ],
  "totalImpressionsMin": 25000,
  "totalImpressionsMax": 30000,
  "platformImpressions": [{ "platform": "YOUTUBE", "impressionsMin": 1000, "impressionsMax": 2000 }]
}
```

#### Ready-to-run examples

| Example | Use case | What you get |
|---|---|---|
| [Competitor Google ads by domain](https://apify.com/monkey.d.scraping/google-ads-transparency-scraper/examples/google-competitor-ads-by-domain) | Every recent ad pointing to a website | 20 nike.com ads with reach and creatives |
| [Google ads of a brand in one country](https://apify.com/monkey.d.scraping/google-ads-transparency-scraper/examples/google-brand-ads-by-country) | Ads of a brand shown in Italy | 30 Decathlon ads in Italy with reach by platform |
| [YouTube video ads of a competitor](https://apify.com/monkey.d.scraping/google-ads-transparency-scraper/examples/google-youtube-video-ads) | Video creatives on YouTube | 20 booking.com YouTube video ads with video links |
| [Google Shopping ads of an online store](https://apify.com/monkey.d.scraping/google-ads-transparency-scraper/examples/google-shopping-ads-scraper) | Product ads of an e-commerce competitor | 20 zalando.de Shopping ads in Germany with product titles and images |
| [Google Ad Library export for one advertiser](https://apify.com/monkey.d.scraping/google-ads-transparency-scraper/examples/google-ad-library-by-advertiser-id) | All ads of one advertiser account | 20 Nike, Inc. ads by advertiser ID |
| [Google Search text ads of a competitor](https://apify.com/monkey.d.scraping/google-ads-transparency-scraper/examples/google-search-text-ads-competitor) | PPC competitor research | 20 nike.com Search text ads with headlines when published |
| [Which companies advertise on Google](https://apify.com/monkey.d.scraping/google-ads-transparency-scraper/examples/google-advertisers-lead-generation) | Lead generation for sales and agencies | Advertiser, payer and reach for three domains, fast and without ad content |

#### Coverage and limits

- Data comes from the public Google Ads Transparency Center. Reach and impressions are ranges published by Google; for many countries outside the EU Google publishes dates but no impressions.
- Many text ads are published by Google only as a preview image; headline and description are returned when Google includes them in the preview.
- Video ads are returned as YouTube links when Google provides them; some previews cannot be rendered by Google.
- Advertiser names can match several accounts or unrelated companies. Use a domain or advertiser ID for exact results.
- Age-restricted ads are hidden by Google without login and are not included.

#### FAQ

**How is this cheaper than other Google ads scrapers?**
It reads Google's public data without a browser, so it is fast and cheap to run. Everything included costs $0.70 per 1,000 ads with platform usage included; popular alternatives we checked in the Apify Store on 5 and 6 November 2026 charge $1.48 to $5.00 per 1,000 ads with details and up to $7.00 with ad texts.

**Can I search by keyword?**
You can search by advertiser or brand name, domain, advertiser ID or URL, like the Transparency Center itself. Google does not offer a free-text search inside ad copy.

**Which countries and platforms are supported?**
Any country Google reports, with a country filter for 70 countries, and the platforms Google Search, YouTube, Shopping, Maps and Play.

**What happens when Google limits requests?**
The scraper changes route and IP, slows down by itself and keeps going; ads are saved as they arrive. If ad previews are blocked, ads are still delivered with reach data and the ad content part is not charged. If Google refuses everything, the run stops with the results collected so far, and you are charged only for delivered ads.

**Do I need a Google account?**
No. The scraper reads the public Transparency Center like a visitor does.

**Why are impressions empty for some ads?**
Google publishes impressions mainly for ads shown in the EU. When Google leaves them out, the scraper returns `null` instead of guessing.

#### Related ad research tools

- [Microsoft Ads Library Scraper](https://apify.com/monkey.d.scraping/microsoft-ads-library-scraper): Bing ads by keyword, advertiser or website domain, with landing pages, UTM parameters, impressions by country and targeting. From $0.50 per 1,000 ads.
- [LinkedIn Ad Library Scraper](https://apify.com/monkey.d.scraping/linkedin-ad-library-scraper): LinkedIn ads by company, keyword or payer, with impressions by country, targeting, payer and dates. From $0.50 per 1,000 ads.
- [TikTok Ads Library Scraper](https://apify.com/monkey.d.scraping/tiktok-ads-library-scraper): TikTok ads by brand or keyword with reach and targeting, $0.29 per 1,000 ads.
- [LinkedIn Ad Library Change Monitor](https://apify.com/monkey.d.scraping/linkedin-ad-library-change-monitor): a company's LinkedIn ads and what changed between runs.

#### More tools for marketers

- [Website SEO Audit & Contact Scraper](https://apify.com/monkey.d.scraping/website-opportunity-auditor): audit the landing pages your competitors advertise, with SEO issues and contact details.
- [Google Shopping Price Tracker & Seller Monitor](https://apify.com/monkey.d.scraping/google-shopping-price-change-seller-monitor): track competitor prices and sellers on Google Shopping.
- [Google Trends Scraper — Keyword History API](https://apify.com/monkey.d.scraping/google-trends-keyword-analysis): check the search interest behind the keywords competitors bid on.
- [Affiliate Program Finder & Commission Checker](https://apify.com/monkey.d.scraping/affiliate-program-finder): find affiliate programs and commissions in your niche.

These are separate Actors and are never called by this Google Actor.

# Actor input Schema

## `targets` (type: `array`):

One per line: a website (nike.com), an advertiser name (Decathlon), an advertiser ID (AR16735076323512287233) or a Google Ads Transparency Center URL. The type is detected automatically.

## `country` (type: `string`):

Only ads shown in this country. Anywhere returns ads from all countries.

## `maxAdsPerTarget` (type: `integer`):

Stops after this many unique ads for each line. Start with 10 to preview the output; duplicates are never charged.

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

Ads shown on or after this date. Empty: no start limit.

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

Ads shown on or before this date. Empty: today.

## `includeReach` (type: `boolean`):

Adds impressions and dates per country and platform, overall impressions, payer and targeting categories: +$0.10 per 1,000 ads. Fast, also on large searches.

## `adContent` (type: `string`):

Ad texts, A/B variations, images, YouTube links and landing pages: +$0.20 per 1,000 ads, charged only when read. Reading ad content is slower. Auto: on for searches up to 200 ads per line, off above.

## `platforms` (type: `array`):

Only ads shown on these Google platforms. Empty: all platforms.

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

Only text, image or video ads.

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

For advertiser names: how many matching advertiser accounts to include, best matches first.

## `maxVariationsPerAd` (type: `integer`):

How many A/B variations of each ad are read for texts, images, videos and landing pages. Included in the details price.

## Actor input object example

```json
{
  "targets": [
    "nike.com"
  ],
  "country": "ANYWHERE",
  "maxAdsPerTarget": 10,
  "includeReach": true,
  "adContent": "auto",
  "adFormat": "ALL",
  "maxAdvertisersPerName": 3,
  "maxVariationsPerAd": 3
}
```

# Actor output Schema

## `ads` (type: `string`):

One row per unique Google ad.

## `reach` (type: `string`):

Payer, regions and impressions per ad.

## `summary` (type: `string`):

Targets, ads delivered, details and errors.

# 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 = {
    "targets": [
        "nike.com"
    ],
    "maxAdsPerTarget": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("monkey.d.scraping/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 = {
    "targets": ["nike.com"],
    "maxAdsPerTarget": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("monkey.d.scraping/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 '{
  "targets": [
    "nike.com"
  ],
  "maxAdsPerTarget": 10
}' |
apify call monkey.d.scraping/google-ads-transparency-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,monkey.d.scraping/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/4oNqLbNn4o58ahO3t/builds/EdYptAzGjJTHJS25R/openapi.json
