All notable changes to Google Ads Transparency are recorded here. The newest release is first.
All additions are optional. Existing inputs return the same rows as before, and the price is unchanged.
- New: batch inputs for API and scheduled runs:
domains (website domains) and advertiserIds (bare AR... ids) as JSON arrays. They are read exactly like startUrls; when one is set, the example domains in startUrls are ignored.
- New:
maxAdsPerAdvertiser, a cap per advertiser, domain or keyword match, so one large advertiser cannot use up maxItems in a batch run. An ad dropped by the region check gives its slot back.
- Changed: with no proxy chosen, a failed request (typically a Google rate limit, HTTP 429) is now retried through Apify Proxy (datacenter) instead of from the same IP. First attempts still go direct.
- Docs: "Use with AI agents" block, batch example, LinkedIn Ad Library Scraper cross-link.
All additions are optional. Existing inputs return the same columns as before, and the price is unchanged.
- New:
searchQueries, a search by brand or advertiser name (for example HubSpot). Each name is matched through the Transparency Center's own search suggestions to the brand's verified website and advertiser accounts. Advertiser accounts are picked only when their name carries a legal form or is a website name, so a person's name as keyword never selects that person's account. maxAdvertisersPerQuery sets how many matches each name may take. Rows get searchType and searchQuery.
- New: a
platform filter (Search, YouTube, Google Play, Maps, Shopping) and a date filter (dateFrom / dateTo, absolute or relative such as 30 days). Google applies both.
- New:
includeDetails (default on). With it on, rows also get platforms, impressionsMin / impressionsMax, impressionsByRegion and targeting wherever Google publishes them (EU/EEA disclosure). Turning it off skips the per-ad lookup and runs about twice as fast.
- New:
onlyNewAds monitor mode. A scheduled run returns only ads that no earlier monitor run returned. Already-seen ads are never charged. The list of seen ads is kept in a named key-value store (monitorStoreName) on the user's account.
- Privacy: advertiser names that look like a private person (no legal form such as Inc, GmbH, S.A. or 株式会社, not a website name, and not the name of the domain typed in
startUrls; a keyword match or the advertiser's own domain never keeps a name) are now removed from every row, together with the advertiser id. The ad itself is still returned, url then points to the search page, and the new field advertiserNameRedacted is true. Business advertisers are unchanged.
- Changed:
region is now also sent to Google as a search filter, so fewer ads are dropped and replaced. The check of each ad's confirmed country list stays as it was.
- Docs: related Actors listed; input field descriptions clarified for AI agents.
- Fixed: the
region input now actually filters results. Verified against the live endpoint that Google's own region parameter has no effect on either SearchCreatives or GetCreativeById (the same advertiser/ad comes back identically for region=anywhere and for any specific country) — so setting region to e.g. US previously returned ads that never ran in the US. The Actor now checks each ad's real, confirmed regions list and drops (never charges for) any ad not confirmed for the requested region, automatically pulling in a replacement page when one is available. region: anywhere (the default) is unaffected.
- A search with no matches now finishes successfully (with a free
not_found row) instead of being marked failed; a run still fails when the source could not be read.
- Price lowered from $0.00299 to $0.00149 per result ($1.49 per 1,000). The start fee stays $0.005 and platform compute is still included.
Listing and settings update. The price list is unchanged.
- The free-plan note now states that the free Apify plan's $5 of monthly credit covers about 1,670 ads in a single run.
- Default run memory is now 1 GB, matching the pricing section, so a run started without a memory setting is charged one start event.
First public release.
- Search and extraction implemented against the source's own public endpoints, with no login and no third-party API key.
- Every row carries
status, so a missing record (not_found) and a failure (error) are told apart from real data. Only ok rows are charged.
- Records are validated against a schema before they are written, so an upstream change produces loud warnings instead of silently billing for empty rows.
- Callable with no arguments by an AI agent, which the input schema's defaults make safe.
- Golden tests run the extraction against saved real responses, and the Actor is verified on Apify's own infrastructure before each release.