Google Ads Transparency Scraper avatar

Google Ads Transparency Scraper

Pricing

from $0.10 / 1,000 ads

Go to Apify Store
Google Ads Transparency Scraper

Google Ads Transparency Scraper

Scrape ads from the Google Ads Transparency Center by domain, advertiser name, advertiser ID or URL. Get creatives, formats, first/last shown dates, regions, platforms and impressions. HTTP-only, no login. $0.10 per 1,000 ads.

Pricing

from $0.10 / 1,000 ads

Rating

0.0

(0)

Developer

Fer

Fer

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Share

Scrape public Google ads by domain, advertiser name, advertiser ID, or Transparency Center URL — HTTP only, no browser, no login.

This Actor reads the same public JSON-RPC endpoints that Google Ads Transparency Center uses in the browser. Give it nike.com, Nike, Inc., an AR… advertiser ID, or a pasted Transparency Center link and it returns the creatives that advertiser is running: format, first/last shown dates, regions, preview image, and a link back to the official transparency page.

Empty input is valid. A run with {} searches nike.com and stores 20 ads so Apify Store automated tests succeed.

What does Google Ads Transparency Scraper do?

It collects one dataset row per ad creative from Google's public ad library:

  • Advertiser ID (AR…) and display name
  • Creative ID (CR…)
  • Format: text, image, or video
  • First shown and last shown dates (ISO 8601)
  • Approximate days the ad has been active
  • Preview / image URL and the official transparency page URL
  • Optional add-on (includeAdDetails): per-country impression ranges, platforms, headline, body copy, and landing URL when Google publishes them

All of this is public data. The Actor never logs into Google and never opens a browser.

Why scrape the Google Ads Transparency Center?

  • Competitor ad research — see which creatives a brand is still spending on, and which ones disappeared
  • Ad spy for agencies — export a client's or rival's Google/YouTube/Display library to CSV or Excel
  • Brand safety and political ads — archive who ran what, where, and for how long
  • Creative analysis — pull headlines and landing URLs (when published) without clicking through thousands of cards

Google's UI is an infinite scroll with no export button. This Actor is the download button.

What data can it extract?

FieldDescription
creativeIdGoogle creative ID (CR…)
advertiserId / advertiserNameAdvertiser ID (AR…) and public name
domainAdvertised domain when returned by search
format / formatCodetext, image, or video plus the raw RPC code
firstShown / lastShownISO timestamps
shownForDaysApproximate active span
transparencyUrlOfficial Ads Transparency Center page
previewUrl / imageUrl / videoUrlCreative assets
headline / body / destinationUrlAd copy and landing URL (list overlay or details)
regions / regionsShownCountries and optional impression ranges
platformsSearch, YouTube, Display, … when published
detailsIncludedWhether the optional details add-on succeeded

How to scrape Google Ads Transparency Center

  1. Open the Actor in Apify Console (or call it through the API).
  2. Leave the defaults to try nike.com, or paste domains, AR… IDs, brand names, or Transparency Center URLs.
  3. Optionally set a country (US, DE, FR, …), a format, and a date window.
  4. Turn on Fetch per-ad details only if you need impression ranges or extra copy — it costs one extra ad-details event per successful enrichment.
  5. Run. Results land in the default dataset (JSON / CSV / Excel / table view).

How much will it cost?

Pricing is pay per result, with no Actor-start fee.

Store prices:

EventWhen it is chargedPrice
adOne successful dataset row$0.0001 ($0.10 / 1,000 ads)
ad-detailsOnly if includeAdDetails actually added extra fields$0.0004 ($0.40 / 1,000 ads)

Empty searches, failed lookups, and advertisers with zero ads are not charged. If the run hits ACTOR_MAX_TOTAL_CHARGE_USD, the Actor stops cleanly, keeps the ads already saved, and exits successfully.

Compute cost stays tiny: the Actor is HTTP-only and defaults to 256 MB RAM. Live measurements from this repository (21 Oct 2026, no proxy):

RunAdsHTTP requestsBody trafficWall time
Default {} (nike.com, 20 ads)2010.023 MB~3 s
One advertiser, 1,000 ads1,000250.333 MB13.4 s
Per 1,000 list ads1,000250.33 MB—

includeAdDetails adds one GetCreativeById RPC per ad (~3 KB). A content.js preview is fetched only when that RPC did not already return detail fields.

Apify Proxy is off by default — direct HTTP currently works better for list searches. If Google returns HTTP 302 /sorry/, the Actor enables proxy and retries; if the proxy is also blocked it retries without proxy / another IP.

Input

All fields are optional. Schema defaults make {} a valid, successful run.

{
"domains": ["nike.com"],
"maxAdsPerAdvertiser": 20
}

Useful combinations:

{
"advertiserIds": ["AR16735076323512287233"],
"region": "US",
"format": "IMAGE",
"maxAdsPerAdvertiser": 100
}
{
"advertiserNames": ["Nike, Inc."],
"includeAdDetails": true,
"maxAdsPerAdvertiser": 10
}
{
"startUrls": [
{ "url": "https://adstransparency.google.com/advertiser/AR16735076323512287233" }
]
}
FieldDefaultNotes
domainsempty input → ["nike.com"]Prefill only; not injected when you send names, IDs, or URLs
advertiserIds[]AR… IDs
advertiserNames[]Resolved via SearchSuggestions
startUrls[]Advertiser, creative, or search URLs
regionANYWHEREISO alpha-2 or ANYWHERE
formatALLALL / TEXT / IMAGE / VIDEO
startDate / endDate—YYYY-MM-DD
maxAdsPerAdvertiser20Per domain or advertiser
maxTotalAds00 = no extra cap
includeAdDetailsfalseExtra RPC / preview decode
proxyConfiguration{ useApifyProxy: false }Auto-enabled on /sorry/; dropped again if proxy is also blocked

Output

One flat JSON object per ad. Example (trimmed from a live nike.com run):

{
"creativeId": "CR14775126100300267521",
"advertiserId": "AR16735076323512287233",
"advertiserName": "Nike, Inc.",
"domain": "nike.com",
"format": "image",
"formatCode": 1,
"firstShown": "2023-11-16T23:56:41.000Z",
"lastShown": "2026-10-21T16:03:07.000Z",
"shownForDays": 897,
"region": "ANYWHERE",
"transparencyUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR14775126100300267521",
"previewUrl": "https://tpc.googlesyndication.com/archive/simgad/16121937908686408129",
"imageUrl": "https://tpc.googlesyndication.com/archive/simgad/16121937908686408129",
"matchedInput": "nike.com"
}

Download the dataset as JSON, CSV, or Excel, or use the Overview table view (image, advertiser, format, dates, transparency link).

Tips

  • Start with maxAdsPerAdvertiser: 20 to inspect the schema, then raise the cap.
  • Domain search returns every advertiser whose ads mention that domain (subsidiaries, media agencies, regional entities). Filter on advertiserName in the dataset if you only want the parent brand.
  • includeAdDetails is best-effort. Google hides impression ranges outside some EEA countries, and many image ads have no extractable copy.
  • Leave proxy off unless a run hits /sorry/. The Actor will try Apify Proxy and then fall back to direct / another IP. If it is still blocked, retry later or switch the proxy group to RESIDENTIAL.
  • Deduplication is by creativeId across the whole run.

FAQ

Does this need a Google account or API key?
No. It calls the same anonymous RPCs the public website uses.

Will an empty run work?
Yes. {} searches nike.com and stores up to 20 ads.

Why is an advertiser missing?
Some local businesses never run Google ads, or run them only in a country you filtered out. A zero-ad target is logged and not billed.

Is format filtering reliable?
Yes for the list RPC. Live checks on 2026-10-21 showed SearchCreatives field 4 = 1 image, 2 text, 3 video. The raw formatCode is always stored so you can remap if Google changes the enum.

Can I use this as an API?
Yes. Run the Actor through the Apify API and read defaultDatasetId, or add it to an integration.

Legality and disclaimer

This Actor collects publicly available information from the Google Ads Transparency Center. It is not affiliated with, endorsed by, or maintained by Google. You are responsible for how you use the data (including advertising-research and privacy rules that apply in your jurisdiction, such as GDPR if you combine results with personal data). Do not use the output to impersonate advertisers or to violate Google's terms.

Issues and API

Use the Issues tab on the Actor page for bugs and feature requests. Use the API tab for scheduled runs, webhooks, and code snippets.