# How do I export a competitor's ads from the Google Ads Transparency Center?

> Get every Google ad of one advertiser (Search, YouTube, Display, Shopping) out of the Google Ads Transparency Center into a CSV: steps, cost, code and the gaps.

Canonical page: https://okdata.online/answers/export-google-ads-transparency-center/

**Short answer: **The Transparency Center website has no export button and Google publishes no API for it; its BigQuery dataset only covers ads shown in the EEA and Turkey. okdata finds the advertiser for $0.004 and lists its ads 40 per page for $0.004, so exporting an advertiser with 600 ads costs $0.064.

A PPC manager takes over a new account and wants to see what the main competitor ran on Google this year: which formats, when each push started, how much went to YouTube against Search. On adstransparency.google.com every ad opens on its own, so copying 600 of them into a sheet is a two-day job. Pulled as data, it is one CSV, ready before lunch.

## What Google offers

- **The website.** Search an advertiser or a website, filter by region, platform (Search, YouTube, Display, Shopping, Maps, Play), date and format. Free, no account, but nothing to download.
- **The BigQuery public dataset** `bigquery-public-data.google_ads_transparency_center`. Its own overview says it holds ads shown in the European Economic Area and Turkey, refreshed periodically, and it can lag the website. Good for EU research in SQL; no help for a US or Asian competitor.
- **Political ads** have their own transparency report with downloadable data.

## From advertiser to CSV in two calls

1. [Google Ads Transparency advertiser search](/apis/google/advertisers/search/) turns a name into the advertiser ID (AR…), with the name Google verified, the country it is registered in and the center's estimate of how many ads it has. The verified name is often the company that pays, which may not match the brand.
2. [Google advertiser ads](/apis/google/advertisers/ads/list/) takes that `id`, or skips step 1 with the brand's website as `domain`, plus optional `country` and `format`. Each page has 40 ads with format, preview image and first and last time shown.

| Job | Calls | Cost |
|---|---|---|
| Find the advertiser | 1 | $0.004 |
| 600 ads | 15 | $0.06 |
| Total | 16 | $0.064 |
| Monthly refresh, 5 competitors, 2 pages each | 10 | $0.04 |

## Code

```python
import csv, os, requests

URL = "https://api.okdata.online/v1/google/advertisers/ads/list"
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}

ads, cursor = [], None
while len(ads) < 600:
    params = {"domain": "example.com", "country": "US"}
    if cursor:
        params["cursor"] = cursor
    body = requests.get(URL, headers=H, params=params, timeout=60).json()
    if body["code"] != "ok":
        raise RuntimeError(f"{body['code']}: {body['message']}")
    ads += body["data"]["items"]
    cursor = body["page"]["next_cursor"]
    if not cursor:
        break

with open("google_ads.csv", "w", newline="", encoding="utf-8") as f:
    w = csv.writer(f)
    w.writerow(["id", "advertiser", "format", "first_shown", "last_shown", "preview", "url"])
    for a in ads:
        w.writerow([a["id"], a["advertiser"]["name"], a["format"], a["first_shown_at"],
                    a["last_shown_at"], (a["images"] or [""])[0], a["url"]])
```

## Gaps to expect

- **Landing pages are mostly missing.** The Transparency Center does not link ads to their destination, so `landing_url` is usually null and named in `meta.unavailable`.
- **Copy often sits inside the preview image.** Many ads, text ads included, are shown only as a rendered preview, so `text` can be empty. A vision model or OCR over the preview images fills that in.
- **No impressions or spend** for commercial ads; Google does not publish them.
- **Check the advertiser on domain lookups.** A website can be promoted by more than one advertiser, resellers for example, so filter on `advertiser.name` if you want only the brand.
- Every page is a separate call; stop paging when you have enough.

## Other ways

For a quick look at a few ads, the website is free and fine. For EU research at scale, the BigQuery dataset is official and queryable in SQL. Search-marketing suites such as Semrush or SpyFu keep years of search ad copy with keyword and spend estimates, which the Transparency Center never shows. okdata fits when you want any region's ads in a sheet, a dashboard or an agent's context. The same job across Meta and TikTok is in [ad intelligence](/solutions/ad-intelligence/); keeping watch over time is in [competitor monitoring](/solutions/competitor-monitoring/).

## Endpoints used

- [Google Ads Transparency advertiser search](https://okdata.online/apis/google/advertisers/search/) `google.advertisers.search`: $0.004 per call · about 10 advertisers per page
- [Google advertiser ads](https://okdata.online/apis/google/advertisers/ads/list/) `google.advertisers.ads.list`: $0.004 per call · about 40 ads per page

Updated 2026-11-12
