Google Ads Transparency Scraper avatar

Google Ads Transparency Scraper

Pricing

from $1.20 / 1,000 ad results

Go to Apify Store
Google Ads Transparency Scraper

Google Ads Transparency Scraper

Google Ads Transparency Center scraper API for competitor ad intelligence. Search brands, domains or advertiser IDs; resolve verified advertisers, paginate creatives, filter country, date and format. From $1.50 per 1,000 ads, platform usage included.

Pricing

from $1.20 / 1,000 ad results

Rating

0.0

(0)

Developer

Rosario Vitale

Rosario Vitale

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Why use this Actor?

Google Ads Transparency Center scraper API for competitor ad intelligence. Search brands, domains or advertiser IDs; resolve verified advertisers, paginate creatives, filter country, date and format. From $1.50 per 1,000 ads, platform usage included.

Features

  • Brand / advertiser search terms — Brand names, legal advertiser names, or search terms to resolve through Google Ads Transparency suggestions.
  • Advertiser IDs — Optional Google Ads Transparency advertiser IDs beginning with AR.
  • Advertiser URLs — Optional adstransparency.google.com advertiser URLs. The AR advertiser ID is extracted automatically.
  • Advertised domains — Optional domains such as nike.com. Domain search can find creatives even when the advertiser legal name is unknown.
  • Country — ISO 3166-1 alpha-2 country code such as US, IT, GB, DE, FR, CA, AU, JP. Most countries are supported.
  • Maximum advertisers — Maximum unique advertisers resolved across all query inputs.
  • Maximum ads per advertiser/domain — Maximum unique creatives returned for each resolved advertiser or domain. Results are paginated automatically.
  • Detail level — Basic returns the core creative row. Detailed additionally calls the creative lookup endpoint for content variants, reach/platform data, targeting flags, and topic when Google exposes them.
  • Ad formats — Optional format filter. Leave empty for all formats.
  • Active on/after — Optional ISO date such as 2026-01-01. Ads whose last shown date is earlier are filtered out.
  • Active on/before — Optional ISO date such as 2026-12-31. Ads whose first shown date is later are filtered out.
  • Include advertiser resolution candidates — Attach up to 10 advertiser candidates used when resolving a brand/search query. Useful for audits and ambiguous brands.

Use cases

  • Competitor ad research.
  • Creative monitoring.
  • Advertiser verification.
  • Paid-media intelligence datasets.

Example input

{
"queries": [
"Nike"
],
"region": "US",
"maxAdvertisers": 5,
"maxAdsPerAdvertiser": 100,
"detailLevel": "basic",
"includeResolutionCandidates": false
}

Pricing & cost control

The primary event costs $0.001500 per Ad result (about $1.50 per 1,000 successful primary events). Only successful primary events are intentionally billed by this Actor; summary/status rows add context without adding primary-event charges.

Use the bounded input limits and filters to keep both event charges and platform usage predictable.

FAQ

What is this Actor for?
It is designed for competitor ad research, creative monitoring, advertiser verification.

Can I run it on a schedule?
Yes. You can schedule Actor runs on Apify and send the resulting dataset into automations, webhooks, storage, or downstream APIs.

How do I control cost and run size?
Use the input limits and filters shown in the Actor input form. The Actor applies bounded defaults and hard caps so large jobs remain predictable.

Pricing at a glance

Price per 1,000 ad results
This Actor$1.50
Median of 8 comparable Apify Store Actors (October 2026)$2.50

That is about 40% below the median per-result price for this task in Apify Store.

Subscriber discounts: on a paid Apify plan you pay even less per result — Bronze −10%, Silver −15%, Gold and higher −20% ($1.20 per 1,000 ad results on Gold).

Apify platform usage (compute, storage, data transfer) is included — you pay only the result price plus a small run start fee ($0.0001 per GB of run memory). No surprise compute bill, even on long runs.

Use the run's maximum charge setting to cap spending — the Actor stops cleanly when the limit is reached.

Use it from AI agents (MCP) and code

AI agents — Claude, ChatGPT, Cursor, VS Code, n8n AI agents and any MCP client can run this Actor through the official Apify MCP server: add https://mcp.apify.com?tools=zenomastro/google-ads-transparency-pro to your client. Then just ask, for example:

"Show me the Google ads Amazon is currently running in the US, with format and first/last shown dates."

The agent fills the input from the field descriptions and receives clean JSON it can reason over.

API — one HTTP call runs the Actor and returns the results directly:

curl -X POST "https://api.apify.com/v2/acts/zenomastro~google-ads-transparency-pro/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries": ["Amazon"], "region": "US", "maxAdvertisers": 1, "maxAdsPerAdvertiser": 2, "detailLevel": "basic", "retries": 2}'

The same works from the Apify Python/JavaScript clients, Make, n8n, Zapier, LangChain and LlamaIndex integrations, or on a schedule.

Search the Google Ads Transparency Center by brand, verified advertiser ID/URL or advertised domain and get every ad as a structured row: format, first and last shown dates, days active, image or preview link, size and Transparency Center links. Detailed mode adds the countries and platforms where each ad ran, targeting flags, topic, and the ad copy, landing links and YouTube video ID when Google's ad preview contains them.

The Actor calls Google's public Transparency Center endpoints directly: no browser, no login, no cookies.

Who is it for?

  • Performance marketers and agencies: see which creatives a competitor runs, since when, in which formats and countries.
  • Brand protection teams: list every advertiser whose ads link to your domain.
  • Market researchers and data teams: build datasets of ads by advertiser, country, format and date.
  • Automations and AI agents: schedule a monitor that returns only ads it has not returned before.

How to use

  1. Enter brand names (e.g. Nike), advertiser IDs (AR…), Transparency Center URLs or domains (nike.com). The search field recognises IDs, URLs and domains pasted into it.
  2. Choose a country (US, GB, DE, …) or ANYWHERE for all countries.
  3. Set Maximum ads per advertiser/domain and the detail level.
  4. Optional: filter by format and date, or set a monitor name with Return only new ads for scheduled runs.
  5. Click Start, then open the Output tab or export JSON, CSV or Excel. The same works through the API, MCP and integrations.

Input examples

Brand search, including regional subsidiaries

{
"queries": ["Nike"],
"maxAdvertisersPerQuery": 3,
"region": "US",
"maxAdsPerAdvertiser": 100
}

Every advertiser linking to a domain, worldwide, video ads only

{
"domains": ["nike.com"],
"region": "ANYWHERE",
"formats": ["video"],
"dateFrom": "2026-01-01"
}

Detailed creatives for one advertiser

{
"advertiserIds": ["AR12815412684405080065"],
"detailLevel": "detailed",
"maxAdsPerAdvertiser": 50
}

Weekly monitor that returns only new ads

{
"queries": ["Adidas"],
"region": "DE",
"monitorName": "adidas-de",
"onlyNew": true,
"includeAdvertiserSummary": true
}

Output

Every ad is one row with recordType: "ad". Illustrative example (IDs shortened):

{
"success": true,
"recordType": "ad",
"source": "query:Nike",
"region": "US",
"advertiserId": "AR16735076323512287233",
"advertiserName": "Nike, Inc.",
"creativeId": "CR0123456789",
"domain": "nike.com",
"format": "image",
"adFormat": "image",
"formatCode": 2,
"firstShown": "2026-08-30T00:00:00Z",
"lastShown": "2026-10-12T00:00:00Z",
"daysActive": 43,
"imageUrl": "https://tpc.googlesyndication.com/archive/simgad/123…",
"previewUrl": null,
"width": 300,
"height": 250,
"contentUrl": "https://tpc.googlesyndication.com/archive/simgad/123…",
"advertiser": { "id": "AR16735076323512287233", "name": "Nike, Inc.", "country": "US", "verified": true, "legalName": "Nike, Inc.", "matchedQuery": "Nike" },
"transparencyUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR0123456789",
"advertiserUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233?region=US"
}

Detailed rows add, when Google exposes them:

{
"detailAvailable": true,
"regionsShown": ["US", "CA"],
"platforms": ["YouTube"],
"regionReach": [{ "regionIso": "US", "regionName": "United States", "low": 10000, "high": 15000, "platforms": [{ "platform": "YouTube", "low": 10000, "high": 15000 }] }],
"targeting": { "demographics": true, "geographic": true, "contextual": false, "customerLists": false },
"variationCount": 2,
"adText": "…ad copy read from the ad preview…",
"adLinks": ["https://www.example.com/landing-page"],
"youtubeVideoId": "…",
"youtubeUrl": "https://www.youtube.com/watch?v=…"
}
FieldDescription
format / adFormattext, image, video or unknown. Google publishes text ads as archived screenshots, so text ads usually have an imageUrl too.
firstShown, lastShown, daysActiveWhen the ad was first and last shown, and for how many days.
imageUrl, width, heightDirect image (image ads) or archived screenshot (text ads) and its size, when available.
previewUrlGoogle's preview renderer for video, HTML5 and responsive ads.
googleCreativeId, googleCustomerId, adGroupIdGoogle Ads identifiers carried in the preview URL, when present.
transparencyUrl, advertiserUrlLinks to the creative and to the advertiser page in the Transparency Center.
advertiserAdvertiser name, country, verification and legal name; matchedQuery and optional resolutionCandidates for search terms.
isNewWith a monitor name: true when no earlier run of that monitor returned the ad.
regionsShown, platforms, regionReach, targeting, topic, variationCountDetailed mode only.
adText, adLinks, adImageUrls, youtubeVideoId, youtubeUrl, videoThumbnailUrlDetailed mode only, best effort: filled when Google's ad preview contains them.

Free rows. With Add a free summary row per advertiser/domain, each advertiser or domain also gets one advertiser_summary row (ads returned, formats, first/last shown, ads shown in the last 30 days, advertised domains and, for domain searches, the advertisers behind the ads). A run summary is always saved as SUMMARY in the run's key-value store (linked in the Output tab). Problems are reported as resolution_error, search_error, input_error or run_error rows with success: false. None of these rows is charged.

Advertiser resolution

For search terms, the Actor reads Google's advertiser suggestions and scores candidates by exact or partial name match, the selected country and the approximate number of ads. The best match is always used; with Advertisers per search term above 1, further accounts are added only when their name matches the search term (e.g. regional subsidiaries). Enable Include advertiser resolution candidates to see the candidates that were considered.

When no advertiser account matches a search term but Google suggests a domain of the same name, the Actor searches the ads that link to that domain instead. Search terms that are domains (nike.com) run a domain search directly.

For maximum precision in recurring workflows, use the AR… advertiser ID or the Transparency Center advertiser URL.

Basic vs detailed mode

Basic returns the core ad row described above from Google's ad list: one request returns up to 40 ads.

Detailed additionally looks up every creative (one extra request per ad) and reads its ad preview. When Google exposes the data, it adds countries and platforms with impression ranges, targeting flags, topic, the number of variations, and the ad copy, landing links and YouTube video ID from the preview.

If the lookup of an ad fails or returns nothing, the ad is still returned with detailAvailable: false and charged at the basic rate. If Google keeps rate-limiting lookups, the Actor pauses them and returns the remaining ads at the basic rate instead of failing.

Pricing

  • Basic ad: $0.0015 per successful ad row — about $1.50 / 1,000 ads
  • Detailed ad: $0.0022 per successfully enriched ad row — about $2.20 / 1,000 ads
  • A small Actor-start charge is shown in the Apify pricing panel.

Resolution/search errors, summary rows and ads skipped by the monitor (Return only new ads) are not charged.

The pricing is positioned around the active Google Ads Transparency market rather than artificially undercutting it.

Country support

Use two-letter ISO codes such as US, IT, GB, DE, FR, CA, AU, JP or BR (country names such as Italy work too), or ANYWHERE for ads shown in any country. Google's numeric country identifiers are derived from ISO data, so virtually every country is supported.

Date and format filters

Use Ad formats to keep only image, video or text ads, and Active on/after / Active on/before with dates such as 2026-01-01. A date range keeps ads that were shown at some point inside it; the end date includes the whole day.

Date filters and a single format are sent to Google, and every returned ad is checked again locally. Filters are applied before the per-advertiser limit, so the Actor keeps paging until it has enough matching ads or has scanned a bounded number of extra ads.

Monitoring new ads

Give scheduled runs the same Monitor name and turn on Return only new ads. The first run returns the newest ads up to your limits and remembers them; later runs return only ads that the monitor has not returned before, and the skipped ads are not charged. Because Google lists the newest ads first, scanning an advertiser stops at the first page that holds only known ads. The remembered ad IDs are kept in the named key-value store google-ads-transparency-monitor of your account (up to 50,000 per monitor).

Without Return only new ads, a monitor name still marks every ad with isNew.

Reliability

  • Requests have timeouts and retry temporary errors, HTTP 403/408/425/429/5xx and Google's CAPTCHA redirect (google.com/sorry) with backoff; Retry-After is honoured.
  • Calls are spaced out, and proxy sessions (IPs) rotate every few requests and after a block.
  • Requests are direct by default. If Google rate-limits them on the Apify platform, the Actor switches to rotating Apify datacenter proxy IPs automatically. You can also set your own proxy.
  • One failing advertiser, domain or creative never stops the others; input mistakes end as a clear input_error row instead of a failed run.
  • The run stops cleanly before its timeout, when aborted, and at your maximum charge limit.

Google Ads Transparency uses undocumented public endpoints that can change without notice. The Actor parses defensively and returns explicit error rows instead of silently returning bad rows.

Limits

  • Up to 20 advertisers per run and 1,000 ads per advertiser or domain. Split very large jobs into several runs.
  • Only data that Google publishes in the Transparency Center is available. Impression ranges are filled only when Google shows them for an ad, and spend is not available for regular ads.
  • Ad copy, landing links and YouTube IDs come from Google's ad preview and are best effort. Text ads are published by Google as screenshots, so their copy may not be available as text.
  • Video files are not downloaded; video ads get the YouTube video ID and link when the preview contains them.

FAQ

Why did I get fewer ads than my maximum? The advertiser may have fewer ads in the selected country, or filters, the date range or the monitor removed some. With filters, the Actor scans a bounded number of extra ads to fill your limit.

Do I need a proxy? Usually not. Requests are direct, and the Actor switches to Apify datacenter proxy by itself when Google rate-limits them. Very large or frequent runs can still be limited for a while by Google; split them or schedule them further apart.

Why do text ads have an image? Google publishes Search text ads as archived screenshots. imageUrl points to that screenshot.

Which rows am I charged for? Only ad rows: at the basic rate, or the detailed rate when the creative lookup succeeded. Error rows, summary rows and ads skipped by the monitor are free.

Can I monitor several competitors? Yes. Use one monitor name per watch list, add all brands, IDs or domains to the same input and schedule the run daily or weekly.

Responsible use

This Actor reads public advertising-transparency data. Use the output in accordance with applicable privacy, copyright, advertising, and platform rules.

Support

For a reproducible problem, include the run ID, query/advertiser ID, region, and whether a proxy was enabled. Never include API tokens or proxy credentials in an issue.