# Google Ads Transparency Scraper - Full Ad Text & Creatives (`plotpointtech/google-ads-transparency-scraper`) Actor

See competitors' Google ads with the content itself: headline, description, display URL, images, YouTube videos, landing domain, dates, regions and platforms. Search by advertiser or domain. $0.95 per 1,000 ads.

- **URL**: https://apify.com/plotpointtech/google-ads-transparency-scraper.md
- **Developed by:** [Plot Point Technologies](https://apify.com/plotpointtech) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.59 / 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.
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: Full Ad Text, Images and Videos

**See your competitors' Google ads with the ad content itself, not just IDs and dates.** For every ad from Google's Ads Transparency Center you get the advertiser, the headline, description and display URL of text ads, image URLs, YouTube video IDs, the landing domain, first and last shown dates, the regions where it ran, the Google platforms it appeared on, and a link to the ad's Transparency Center page. **$0.95 per 1,000 ads.**

### What can this Google Ads Transparency scraper do?

- **Search by advertiser** (name such as `Nike, Inc.`, an `AR...` ID, or a Transparency Center URL) **or by domain** (for example `expedia.com`, which returns every advertiser pointing to it).
- **Extract the real ad copy:**
  - **Text (search) ads:** headline, description, display URL, business name, sitelinks. Google keeps many text ads only as an image; those are read with OCR and marked `textSource: "ocr_archived_image"` with an `ocrConfidence` score.
  - **Image and Shopping ads:** image URLs and product titles.
  - **Video ads:** YouTube video IDs and URLs, headline, description, call to action, channel, destination URL.
  - **Local ads:** the visible text lines.
- **Filter** by region, platform (Search, YouTube, Maps, Play, Shopping), format (text, image, video) and date range.
- **See where ads ran:** regions with dates and, mostly for EU/UK, impression ranges per platform.

### What data do you get?

`advertiserId`, `advertiserName`, `advertiserLegalName`, `advertiserVerified`, `advertiserCountry`, `creativeId`, `format`, `adType`, `headline`, `description`, `longHeadline`, `displayUrl`, `callToAction`, `businessName`, `sitelinks`, `adTextLines`, `textSource`, `ocrConfidence`, `imageUrls`, `previewImageUrls`, `youtubeVideoIds`, `videoUrls`, `videoFileUrls`, `destinationUrl`, `landingDomain`, `firstShown`, `lastShown`, `platforms`, `regions`, `regionCount`, `impressionsMin`, `impressionsMax`, `topic`, `variantCount`, `previewUrls`, `transparencyUrl`.

### Who uses it?

- **Marketers and agencies** studying competitors' ad copy, offers and landing pages.
- **Brand-safety and compliance teams** monitoring who advertises a brand or domain.
- **Researchers** tracking political, financial or category advertising over time.
- **Sales teams** finding businesses that actively spend on Google Ads.

### How to use it

1. Click **Try for free** (or **Start**).
2. Enter **Advertisers** and/or **Domains**.
3. Choose **Region**, **Platform**, **Format** and the maximum ads per advertiser.
4. Run it and export to Excel, CSV or JSON.
5. Schedule it weekly to catch new ads and offers as they appear.

### Input example

```json
{
  "advertisers": [
    "Nike, Inc."
  ],
  "domains": [
    "expedia.com"
  ],
  "maxAdsPerAdvertiser": 20,
  "region": "US",
  "format": "TEXT"
}
```

### Output example

```json
{
  "query": "Nike, Inc.",
  "advertiserId": "AR16735076323512287233",
  "advertiserName": "Nike, Inc.",
  "advertiserLegalName": "Nike, Inc.",
  "advertiserVerified": true,
  "advertiserCountry": "US",
  "creativeId": "CR01416500074149576705",
  "format": "TEXT",
  "adType": "Search text ad",
  "headline": "Men's Joggers & Sweatpants. Nike.com",
  "description": "Nike Men's Clothing Is Designed For Performance And Total Comfort. Gear Up On Nike.com. Gear Up For Sport And...",
  "longHeadline": null,
  "displayUrl": "www.nike.com/",
  "callToAction": null,
  "businessName": "Nike",
  "sitelinks": [],
  "adTextLines": [
    "Nike",
    "www.nike.com/",
    "7"
  ],
  "textSource": "ocr_archived_image",
  "ocrConfidence": 92,
  "dynamicSearchAd": false,
  "imageUrls": [],
  "previewImageUrls": [
    "https://tpc.googlesyndication.com/archive/simgad/8887056986352374498",
    "https://tpc.googlesyndication.com/archive/simgad/17676076853320035019",
    "https://tpc.googlesyndication.com/archive/simgad/9358562734803135898"
  ],
  "youtubeVideoIds": [],
  "videoUrls": [],
  "videoFileUrls": [],
  "destinationUrl": null,
  "landingDomain": "nike.com",
  "firstShown": "2022-11-30T14:49:57Z",
  "lastShown": "2026-10-28T14:14:12Z",
  "platforms": [
    "MAPS",
    "SEARCH",
    "SHOPPING"
  ],
  "regions": [
    {
      "regionCode": "US",
      "regionName": "United States",
      "firstShown": null,
      "lastShown": "2026-10-28"
    }
  ],
  "regionCount": 1,
  "impressionsMin": null,
  "impressionsMax": null,
  "topic": null,
  "variantCount": 5,
  "previewUrls": [
    "https://displayads-formats.googleusercontent.com/ads/preview/content.js?client=ads-integrity-transparency&obfuscatedCustomerId=9975158271&creativeId=638339109013&uiFeatures=12&adGroupId=88791642468&assets=%3DH4sIAAAAAAAA..."
  ],
  "transparencyUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR01416500074149576705",
  "scrapedAt": "2026-10-28T14:35:01Z"
}
```

### How much does it cost?

**$0.95 per 1,000 ads** ($0.00095 each), including ad-content extraction and OCR, plus a $0.00005 start fee per run.

| You get | You pay |
|---|---|
| 20 ads from one competitor | $0.02 |
| 500 ads from 25 advertisers | $0.48 |
| 10,000 ads | $9.50 |

Turn off "Extract ad content" for a faster metadata-only run at the same price per ad.

### Use it via API, Make, Zapier, n8n or an AI agent

**Apify API.** Start a run and get the results back in one HTTP request (replace `YOUR_API_TOKEN` with the token from Apify Console > Settings > Integrations):

```bash
curl -X POST "https://api.apify.com/v2/acts/plotpointtech~google-ads-transparency-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"advertisers": ["Nike, Inc."], "domains": ["expedia.com"], "maxAdsPerAdvertiser": 20, "region": "US", "format": "TEXT"}'
```

For longer jobs, start the run asynchronously and read the dataset when it finishes. Official `apify-client` libraries exist for Python and JavaScript; the **API** tab on this page has ready-made code.

**No-code automation.** Connect the tool to **Make, Zapier, n8n, Google Sheets, Slack, Airtable** or any webhook with Apify integrations, and use **Schedules** in Apify Console to run it hourly, daily or weekly.

**AI agents (MCP).** Give Claude, ChatGPT, Cursor, VS Code or any MCP-compatible agent direct access to this tool through the hosted Apify MCP server. Add this server URL to your client:

```
https://mcp.apify.com?tools=plotpointtech/google-ads-transparency-scraper
```

The agent can then call the tool with the same input fields shown above and read the results.

### FAQ

**Is it legal to scrape the Google Ads Transparency Center?**
Google publishes this information so the public can see who advertises and what they show. The tool reads the same public data the Transparency Center web app uses, without logging in, and backs off when Google asks it to slow down. Ad creatives remain the property of the advertisers.

**Why does a text ad say `ocr_archived_image`?**
Google stores many search text ads only as a picture of the rendered ad. The tool reads that picture with OCR and tells you so, with a confidence score.

**Are impressions available everywhere?**
Per-region first-shown dates and impression ranges are mostly published for EU/UK regions. Elsewhere Google gives the last-shown date per region.

**Do video file links last?**
`videoFileUrls` are temporary Google links that expire after a few hours. `videoUrls` (YouTube) are permanent.

**Can I get ad spend?**
No. Google does not publish spend for commercial ads in the Transparency Center.

### Related tools from Plot Point Technologies

- [Google Trends Scraper - Interest, Regions & Queries, $1/1K](https://apify.com/plotpointtech/google-trends-scraper): interest over time, by region and rising queries in bulk.
- [Website Tech Stack Detector - CMS, Analytics & 290+ Techs](https://apify.com/plotpointtech/website-technology-detector): CMS, ecommerce, analytics, pixels and hosting of any website.
- [Email & Contact Scraper - Website Emails, Phones & Socials](https://apify.com/plotpointtech/website-contact-finder): emails, phones and social links from any list of company websites.
- [News Scraper - Worldwide News Search by Keyword, 65+ Languages](https://apify.com/plotpointtech/worldwide-news-search): news articles worldwide by keyword, country and language.

Plot Point Technologies is not affiliated with Google. Google and YouTube are trademarks of Google LLC.

***

If this tool saved you time, we would be grateful for a short review on this page; it helps other people find it. If something did not work as expected, please open an issue on the **Issues** tab and we will look into it quickly.

# Actor input Schema

## `advertisers` (type: `array`):

Advertiser names (e.g. "Nike, Inc.") or advertiser IDs starting with AR (e.g. AR16735076323512287233). You can also paste a Transparency Center advertiser URL. Names are matched to the closest advertiser in Google's search suggestions.

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

Find ads that point to a website, e.g. expedia.com. Returns ads from every advertiser that advertises this domain.

## `maxAdsPerAdvertiser` (type: `integer`):

Maximum number of ads to return for each advertiser or domain.

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

Two-letter country code where the ads were shown (US, GB, DE, FR, IN ...), or "anywhere".

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

Only ads shown on this Google platform.

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

Only ads of this format.

## `startDate` (type: `string`):

Only ads shown in this date range (YYYY-MM-DD). Leave empty for all available dates.

## `endDate` (type: `string`):

End of the date range (YYYY-MM-DD).

## `fetchAdContent` (type: `boolean`):

Render each ad's preview to extract the headline, description, display URL, destination URL, images and YouTube video IDs. Turn off for a faster, metadata-only run.

## `ocrTextAds` (type: `boolean`):

Google keeps many search text ads only as an image of the rendered ad. When on, the actor reads the headline, description and display URL from that image with OCR (marked textSource = ocr_archived_image).

## `ocrLanguage` (type: `string`):

Language of the text ads, for OCR. 'auto' uses English plus the main language of the selected region (e.g. German for DE). Combine with + for mixed sets, e.g. eng+deu.

## `includeRegionDetails` (type: `boolean`):

Add the list of regions where each ad was shown, with last-shown dates (and first-shown dates, impression ranges and platforms where Google publishes them, mainly EU/UK).

## `detectPlatforms` (type: `boolean`):

Label each ad with the Google platforms it ran on (Search, YouTube, Maps, Play, Shopping) by cross-checking the platform-filtered ad lists. Adds a few extra requests per advertiser.

## `maxVariantsToRender` (type: `integer`):

Many ads have several variants. Stop after rendering this many if text has been found.

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

Ads processed in parallel. Kept low to stay polite.

## Actor input object example

```json
{
  "advertisers": [
    "Nike, Inc."
  ],
  "maxAdsPerAdvertiser": 20,
  "region": "anywhere",
  "platform": "ANY",
  "format": "ANY",
  "fetchAdContent": true,
  "ocrTextAds": true,
  "ocrLanguage": "auto",
  "includeRegionDetails": true,
  "detectPlatforms": true,
  "maxVariantsToRender": 2,
  "maxConcurrency": 4
}
```

# Actor output Schema

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

No description

# 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 = {
    "advertisers": [
        "Nike, Inc."
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("plotpointtech/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 = { "advertisers": ["Nike, Inc."] }

# Run the Actor and wait for it to finish
run = client.actor("plotpointtech/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 '{
  "advertisers": [
    "Nike, Inc."
  ]
}' |
apify call plotpointtech/google-ads-transparency-scraper --silent --output-dataset

```

## MCP server setup

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