Google Ads Transparency Scraper: Competitor Ads + Days Running avatar

Google Ads Transparency Scraper: Competitor Ads + Days Running

Pricing

from $2.00 / 1,000 ads

Go to Apify Store
Google Ads Transparency Scraper: Competitor Ads + Days Running

Google Ads Transparency Scraper: Competitor Ads + Days Running

Scrape every ad a competitor runs on Google Search, Display and YouTube, from Google's official Ads Transparency Center. Each creative comes with how many days it has been running, so proven winners are obvious. Run it again and it reports what launched, stopped and changed.

Pricing

from $2.00 / 1,000 ads

Rating

0.0

(0)

Developer

Michael Yousrie

Michael Yousrie

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 hours ago

Last modified

Share

Google Ads Transparency Scraper: See Every Ad a Competitor Runs

Pull every ad your competitors are running on Google Search, Display and YouTube, straight from Google's own Ads Transparency Center, and find out how long each ad has been running.

That last number is the point. Anyone can see what a competitor is advertising today. This tells you which of those ads they have been paying for since 2024, and an ad that survives two years of a competitor's budget is an ad that works.

Run it once for a snapshot. Run it on a schedule and it reports what launched, what got switched off, and what changed since last time.

What you get

FieldWhat it tells you
daysRunningHow many days the ad has been live. The single most useful column here.
isLongRunningTrue once an ad passes 90 days, which is well past the point a test would have been cut.
firstShown / lastShownThe window Google reports for the creative.
changeTypenew, still_running, stopped or creative_changed since your last run.
advertiserNameThe legal entity paying for the ad, which is often not the brand name.
formattext, image or video.
assetUrl / previewHtmlThe creative itself, ready to download or embed.
regionCountHow many countries the ad runs in, a decent proxy for budget.
adUrlLink to the ad's page in the Ads Transparency Center.

Example output

One row, taken from a real run against linear.app:

{
"advertiserId": "AR01614221664915521537",
"advertiserName": "Linear Orbit, Inc.",
"creativeId": "CR10758577049937575937",
"adUrl": "https://adstransparency.google.com/advertiser/AR01614221664915521537/creative/CR10758577049937575937?region=US",
"format": "text",
"firstShown": "2024-09-23",
"lastShown": "2026-08-10",
"daysRunning": 654,
"isLongRunning": true,
"regionCount": 3,
"region": "US",
"changeType": "still_running"
}

654 days on the same ad. That is not a test, that is a proven winner, and now you can read the copy.

What to use it for

Find the ads your competitor refuses to turn off

Sort the output by daysRunning, descending. The top of that list is your competitor's proven creative, paid for with their budget and validated over years. It is the highest-signal free research available in paid search.

Track a competitor's launches week by week

Turn on change tracking and put the actor on a weekly schedule. Every run after the first reports exactly which creatives are new and which disappeared, so you see a campaign launch in the week it happens instead of noticing it a quarter later.

Size up a market before you enter it

Run a list of every competitor domain in a category. The number of advertisers, the number of live creatives and the regionCount spread give you a fast read on how contested the keywords are and who is actually spending.

Build a swipe file automatically

assetUrl gives you the creative asset and previewHtml gives you the rendered ad. Point the actor at ten competitors and you have a categorised, dated swipe file that refreshes itself.

Check an agency's work

If an agency runs your Google Ads, this shows you what is actually live under your own domain, when it went live, and what they quietly turned off.

Input

SettingDescription
Advertiser websitesThe domains whose ads you want, such as nike.com. Full URLs are fine.
Advertiser IDsExact IDs like AR16735076323512287233, for when you want one specific advertiser account.
CountryTwo-letter code such as US, GB, DE or AE. Google reports ads per country.
Max ads per advertiserSpend cap. Large brands run tens of thousands of creatives, so this controls what a run costs.
Track changes between runsRemembers this run and compares the next one against it.
Include ads that stopped runningAdds a row for each ad that has disappeared since the last run.

A domain can return more than one advertiser. Searching hubspot.com returns Hubspot's own account plus the partners and resellers who advertise on the same domain, which is usually what you want.

Pricing, and what is never charged

Pay per event, no subscription.

EventPrice
Ad scanned$2 per 1,000
Change detected$20 per 1,000

Three things are deliberately never charged:

  1. Your first run's "changes." With no previous run to compare against, every ad is trivially new. That is not an insight, so a first run costs you nothing in change events.
  2. Advertisers that could not be reached. If Google is throttling or the domain has no ads in that country, you get an explanation and no charge.
  3. Anything a truncated run might have "changed." If your ad cap cuts a sweep short, this actor refuses to compare that run at all. Google does not return creatives in a stable order, so comparing partial slices would invent launches and stops that never happened, and you would be paying for noise. It tells you in the log and leaves your baseline intact.

That third one costs us money on purpose. It is the difference between a change report you can act on and one you have to second-guess.

Change tracking, in practice

Change tracking needs to see an advertiser's full set of ads, so it only runs when your cap covers everything that advertiser has live. For most companies a cap of 200 is plenty. For a global brand running 20,000 creatives you would need to raise it, and the log tells you exactly when that is the case and by how much.

History is stored in a key-value store in your account, so your comparison history is yours. Give two schedules different store names if you want to track the same advertisers weekly and monthly without them overwriting each other.

Notes and limits

  • The Ads Transparency Center is Google's own public disclosure service. This actor reads it, and nothing here is behind a login or a paywall.
  • Ads are reported per country. The same advertiser returns a different set in US than in DE, so pick the market you care about.
  • firstShown and lastShown are Google's figures, not estimates. daysRunning is the gap between them.
  • Video creatives are previewed through a signed URL that changes on every request, so this actor never reports a video ad as having a changed creative. That avoids charging you for a difference that is not real.
  • Political ads are covered by a separate part of the Center and are not included here.

Frequently asked questions

Is scraping the Ads Transparency Center allowed? The Center is a public transparency service Google publishes to meet ad disclosure obligations. It needs no account and no API key. This actor reads the same public data your browser does.

How is this different from just using the Ads Transparency Center myself? The website shows you one advertiser at a time, in a browser, with no export, no history and no way to tell how long an ad has run without reading dates off individual cards. This gives you every advertiser at once, as JSON, CSV or Excel, with daysRunning computed and changes tracked between runs.

Does it work for advertisers outside the US? Yes. Set the country to any two-letter code, such as GB, DE, AE, IN, BR or ZA.

Can I find a competitor's YouTube ads? Yes. Video creatives appear with format: "video" and a preview URL.

How much does a typical run cost? Ten competitors at 200 ads each is 2,000 ads, which is $4.00, plus change events on later runs. A weekly schedule over ten competitors runs to a few dollars a month.

Why do I sometimes see several advertisers for one domain? Google ties ads to the advertiser account that paid, not to the domain. Resellers, regional subsidiaries and agencies all show up under the domain they point at. The advertiserName and advertiserId fields tell them apart.

What happens if Google changes the format of its data? The actor validates the shape of every response and fails loudly with a clear message rather than quietly reporting zero ads. A silent zero would be the worst possible outcome for a monitoring tool.

Other actors you might need