Google Ads Transparency Scraper (Only New Ads, No Login) avatar

Google Ads Transparency Scraper (Only New Ads, No Login)

Pricing

from $0.55 / 1,000 ads

Go to Apify Store
Google Ads Transparency Scraper (Only New Ads, No Login)

Google Ads Transparency Scraper (Only New Ads, No Login)

Scrape Google Ads Transparency Center ads by brand name, website or advertiser ID: format, first and last shown dates, landing website, image and video links, ad text and countries shown. Advertiser summary rows and only-new-ads mode for weekly competitor tracking. No login. $1 per 1,000 ads.

Pricing

from $0.55 / 1,000 ads

Rating

0.0

(0)

Developer

locaihost data

locaihost data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

See every ad a competitor runs on Google: type a brand name, a website or an advertiser ID and get one row per ad from the Google Ads Transparency Center, with its format, first and last shown dates, landing website, image or video, and a summary row per advertiser. No login, no API key.

  • Watch competitors' ads: schedule a weekly run with Only new ads and get just the ads they launched since last time.
  • Research a market before you advertise: see which formats, messages and landing pages the leaders in your niche use, and how long they keep each ad running.
  • Find out who advertises a website: one domain returns every verified advertiser running ads for it, including resellers and regional entities.
  • Check a brand's footprint by country: filter by region and dates, or open each ad for the countries it ran in and its impression ranges.
  • Feed creative libraries and dashboards: image links, YouTube links and ad text in a table you can export to CSV, Excel or Google Sheets.

Quick start

Paste this into the JSON tab of the input and click Start:

{"queries": ["hubspot.com"], "region": "US", "maxAdsPerAdvertiser": 20}

You get about 20 of HubSpot's most recently shown US ads plus one summary row per advertiser, usually in about 15 seconds.

Every video ad a brand ran in the UK in the last 30 days, opened for details (ad text, YouTube link, countries):

{"queries": ["Nike"], "region": "GB", "formats": ["video"], "dateFrom": "30 days", "includeDetails": true}

A weekly competitor watch that returns only new ads:

{"queries": ["competitor-one.com", "competitor-two.com"], "maxAdsPerAdvertiser": 200, "onlyNew": true}

What data can I get?

GroupFields
The advertiseradvertiserName, advertiserId (AR…), advertiserCountry (where Google verified it), advertiserType
The adcreativeId (CR…), format (text, image or video), firstShown, lastShown, daysShown, landingDomain
MediaimageUrl (with imageWidth, imageHeight), previewUrl, adUrl (the ad's page in the Transparency Center)
With Ad details ($)adText (visible lines: headline, description, product title, sitelinks), videoId, videoUrl, imageUrls, variants, regionsShown (each country with first and last shown dates and impression range), impressionsMin, impressionsMax
Advertiser summary rowsgoogleAdCountMin / googleAdCountMax (Google's count of the advertiser's ads matching your filters), adsReturned, newAds, formats, firstShown, lastShown, landingDomains, advertiserUrl
Runtype (ad or advertiser), query, regionFilter, scrapedAt

One real ad row (run on 2026-11-01 with Ad details ($), preview link shortened):

{
"type": "ad",
"query": "hubspot.com",
"advertiserId": "AR10072600183532683265",
"advertiserName": "Hubspot, Inc.",
"advertiserType": "business",
"advertiserCountry": "US",
"creativeId": "CR10821117815340138497",
"format": "video",
"firstShown": "2026-06-17T15:27:13.310Z",
"lastShown": "2026-11-01T13:43:30.527Z",
"daysShown": 128,
"landingDomain": "hubspot.com",
"imageUrl": "https://i.ytimg.com/vi/v8gzzJDTdYs/hqdefault.jpg",
"previewUrl": "https://displayads-formats.googleusercontent.com/ads/preview/content.js?client=ads-integrity-transparency&...",
"adUrl": "https://adstransparency.google.com/advertiser/AR10072600183532683265/creative/CR10821117815340138497?region=US",
"regionFilter": "US",
"detailsIncluded": true,
"adText": null,
"videoId": "v8gzzJDTdYs",
"videoUrl": "https://www.youtube.com/watch?v=v8gzzJDTdYs",
"variants": 4,
"regionsShown": [
{"region": "CA", "firstShown": null, "lastShown": "2026-11-01", "impressionsMin": null, "impressionsMax": null},
{"region": "US", "firstShown": null, "lastShown": "2026-11-01", "impressionsMin": null, "impressionsMax": null}
],
"scrapedAt": "2026-11-01T14:13:35.703Z"
}

The dataset has three views (Ads, Advertiser summaries, Ads with details) and exports to JSON, CSV, Excel or HTML. The run's SUMMARY record shows what each query found and anything skipped.

How much does it cost?

You pay per row returned. There is no charge for Apify platform usage on top.

RowFree and StarterScaleBusiness
Ad$1 per 1,000$0.75 per 1,000$0.55 per 1,000
Ad with details (instead of Ad)$2.50 per 1,000$1.875 per 1,000$1.375 per 1,000
Advertiser summary$1 per 1,000$0.75 per 1,000$0.55 per 1,000

Plus $0.00005 per run start. Apify's free $5 monthly credit covers about 5,000 ads. Free-plan runs stop at 1,000 rows each; any paid Apify plan removes the cap.

What's free: advertisers that can't be found, searches with no matching ads, input mistakes, ads skipped by Only new ads, the same ad found by two of your queries (charged once per run), and ads found but not delivered before the run's time limit. To cap a run's spend, set Maximum cost per run in the run options, or use Max results.

Limits, stated up front

  • Ad text comes with details only, and not for every ad. Google archives most search (text) ads as a picture of the ad: those rows have imageUrl and no adText. Ads Google shows as live previews (local, shopping and many newer search ads) return their text.
  • Landing websites come from Google's own listing and are usually filled for website searches; for advertiser searches Google often leaves them out.
  • Impression ranges and per-country dates are published by Google for ads shown in the EU and a few other regions; elsewhere regionsShown lists the countries with their last shown date.
  • Brand names are matched to verified advertisers. "Nike" returns Nike, Inc., NIKE SRL and the like (biggest first, see Advertisers per brand name), not lookalikes such as "Nikesh". For an exact match use the website or the advertiser ID from the advertiser's Transparency Center page.
  • Private persons are never named. When Google verified an advertiser as an individual, the row says "Individual advertiser" and leaves out the ad text.
  • Political ads are not a separate mode here; Google publishes those in its free political ads dataset.
  • Google lists ads newest first; Max ads per advertiser reads that many of the most recently shown.

Only new ads, and schedules

Turn on Only new ads and the Actor remembers which ads it returned for the same advertisers, region and formats (date filters can change between runs). The next run returns only ads it hasn't returned before, and summary rows only for advertisers with something new. Skipped ads cost nothing. Set up a weekly schedule under Schedules in Apify Console to get a competitor ad digest.

Integrations: API, n8n, Make and AI agents

API. Run it and get the rows back in one call:

curl -X POST "https://api.apify.com/v2/acts/locaihost~google-ads-transparency/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries": ["hubspot.com"], "region": "US", "maxAdsPerAdvertiser": 20}'

Apify's API clients for Python and JavaScript work the same way.

n8n, Make, Zapier, Google Sheets, Slack, webhooks. Apify's built-in integrations send each run's dataset wherever you need it, for example a Slack message whenever a weekly Only new ads run finds something.

AI agents (MCP). Add this Actor to Claude, Cursor or any MCP client with https://mcp.apify.com/?tools=locaihost/google-ads-transparency, then ask something like "Which video ads has Nike started running in the UK this month?"

FAQ

How much does it cost to scrape the Google Ads Transparency Center?

$1 per 1,000 ads on the Free and Starter plans, $0.75 on Scale and $0.55 on Business; ads opened for details cost $2.50 per 1,000 instead. Apify's free $5 monthly credit covers about 5,000 ads.

Can I use it through the API or from Python?

Yes. Use the run-sync-get-dataset-items call above, or Apify's Python and JavaScript clients. Every run's data is also available as JSON, CSV or Excel from its dataset.

Can I use it from an AI agent?

Yes. Through the Apify MCP server any MCP client can call it with brand names, websites or advertiser IDs and read the rows back.

The Actor reads the information Google publishes in the Ads Transparency Center for logged-out visitors, and only advertiser and ad information: no personal contact details, and private persons are never named. Google's terms for the Transparency Center limit commercial reuse of its content, and the ads themselves belong to the advertisers, so use the data for your own research and check the terms before you republish anything. You are responsible for how you use the data and for the laws that apply to you. If you are an advertiser and want something changed, open an issue and we will act on it promptly.

What can I put in "Advertisers"?

Brand names (HubSpot), websites (hubspot.com, with or without https:// and www), advertiser IDs (AR10072600183532683265) or links copied from adstransparency.google.com (an advertiser, an ad or a website search). One per line, up to 100 per run.

Why are some fields empty?

adText, videoUrl, regionsShown and the impression ranges are filled only with Ad details ($), and only when Google publishes them (see Limits). landingDomain is empty when Google doesn't list it. advertiserCountry is empty when Google's advertiser page doesn't answer in time. Summary rows have no googleAdCountMin / googleAdCountMax for website searches, because Google's count then covers the whole website.

More from locaihost data

Did it help?

If this saved you time, a quick rating on the Store helps other people find it.

Support

Something not working, a missing field or an ad that reads wrong? Open an issue on the Issues tab: we answer issues within 24 hours.