Google Ads Transparency Scraper — Competitor Ads & Creatives
Pricing
from $0.80 / 1,000 ads
Google Ads Transparency Scraper — Competitor Ads & Creatives
Every ad an advertiser runs on Google (Search, YouTube, Display) from the public Ads Transparency Center: format, first and last shown dates, days running and the ad image. Run it again or on a schedule to get only the new ads since the last run. By name, website, advertiser ID or link. No login.
Give it advertisers — a company name, a website, an advertiser ID or an Ads Transparency Center link — and get every ad they run on Google (Search, YouTube and Display) as clean rows: format, first and last shown date, days running, the ad image and a link to the ad. Filter by country and format. $1 per 1,000 ads, no login, no API key, no cookies.
Run it again — or put it on a daily schedule — and every ad also says whether it is new since the last run. That turns the Transparency Center into a competitor ad alert: switch on Only new ads and each run returns just the creatives that started after the previous one (the first run saves the starting point and returns the advertiser summary only).
What you get
Rows have a type. Every row has input (what you typed) and observedAt.
Row type | One row per | Fields |
|---|---|---|
ad | ad (creative) | advertiser, advertiserId, creativeId, url, format (text, image or video), firstShown, lastShown (dates), daysRunning, lastShownDaysAgo, previewUrl, region, isNewSinceLastRun |
advertiser | input (free) | advertiserName, advertiserId, advertisersFound, country, adsRead, adsTotalMin, adsTotalMax, newSinceLastRun, previousRunAt, region, formatFilter, complete, alternatives, note |
error | input that failed (free) | message |
formatis the ad type Google lists:text,imageorvideo. Google shows most text ads as a picture of the ad, sopreviewUrlis that picture for text and image ads. It is empty for ads Google draws with a script (some image, video and rich ads): openurlto see them.daysRunningcounts calendar days fromfirstShowntolastShown, both included.lastShownDaysAgoof 0 or 1 means the ad is running now.adsTotalMin/adsTotalMaxare Google's own range for how many ads the advertiser has under your filters (it only gives a range, for example 8,000 to 9,000), so you can see how muchmaxAdsPerAdvertiserleft out.alternativeslists other advertisers that matched a company name, so you can pick the exact one by ID.
Since the last run (null on the first run):
| Field | On | What it is |
|---|---|---|
isNewSinceLastRun | ad | true for an ad that was not in your previous run and started running after it, false otherwise |
newSinceLastRun, previousRunAt | advertiser | how many ads are new and when your previous run of the same advertiser, region and format was |
Use it for
- Competitor ad alerts — schedule it daily with Only new ads and see every new creative a competitor launches
- Creative research — what a brand runs on Search, YouTube and Display, how long each ad has been running (long-running ads usually work)
- Agencies and sales — show a prospect their competitors' ads, or check what ads run in a country before a pitch
Input
{ "advertisers": ["nike.com", "Adidas", "AR16735076323512287233"], "region": "US", "format": "all", "maxAdsPerAdvertiser": 100, "onlyNew": false }
- Advertisers — a company name (matched to the advertiser with the most ads), a website (ads whose landing page is on that site, from any advertiser: the summary row names the one with the most ads and
advertisersFoundcounts them), an advertiser ID (AR…, the exact way) or anadstransparency.google.com/advertiser/AR…link. - Region —
anywhereor a country code (US,GB,JP,DE…): only ads shown in that country. - Format —
all,text,imageorvideo. - Max ads per advertiser — 1 to 2,000, most recently shown first.
What you saw is remembered per advertiser, region and format in a named key-value store in your Apify account, so the second run already shows what is new. Schedule it (Apify → Schedules) for a daily alert.
Pricing
$1 per 1,000 ads, plus $0.01 per run. Advertiser summary rows and error rows are free. With Only new ads you pay only for the new ads: the first run of an advertiser only saves the starting point and costs nothing but the $0.01 run-start fee. The $0.01 run-start fee is the one charge every run pays, even one that returns nothing.
Notes
- Public data only: what anyone sees on adstransparency.google.com. Advertiser names are published by Google as shown there (companies, and some individuals and sole traders who run ads). The rows hold no ad text and no contact details: only IDs, dates, the format and the address of the ad image.
- Order and "new". Google lists the most recently shown ads first. A big advertiser (Nike has thousands) read with a small limit shows a different slice each day, so an ad counts as new only when its ID was not in your previous run and it first ran in the days around that run (two days of slack for Google's publishing delay). Raise Max ads per advertiser for large advertisers.
- Region is a real filter, not a hint: the same advertiser returns different ads and counts per country (checked on 8 October 2026 from one address, Nike, Inc.: about 7,000 to 8,000 text ads for
US, 10 ads in total forJP).regionon each row is the filter you used, not the list of countries an ad ran in. - Google rate limits fast callers. The Actor asks for one page of 40 ads every 3 seconds (an advertiser with 2,000 ads takes about 2.5 minutes) and retries twice; if Google still refuses, you get the ads read so far (
complete: false) and an error row, and you can run again later. - With a Format other than
all, the Actor also checks the format of every ad it gets back, so you never receive another format by mistake. - A company name that Google cannot match gives an error row instead of a guess; use the advertiser ID from the Transparency Center link then.
For keyword ideas to bid on or write ads for, see Keyword Suggestions — Google, YouTube & Amazon Autocomplete.
For AI agents
{"advertisers": ["nike.com"], "maxAdsPerAdvertiser": 5} returns one advertiser summary row and up to 5 ad rows with format, first and last shown dates and the ad image. Rows have type: ad, advertiser or error. Run it again with "onlyNew": true to get only the ads that appeared since the previous run.