Google Ads Transparency Scraper & API: Competitor Ads
Pricing
from $0.50 / 1,000 ads
Google Ads Transparency Scraper & API: Competitor Ads
Every ad a competitor runs on Google Search, YouTube and Display, by brand name, advertiser ID or domain: format, dates, countries, headline and text, plus which ads are likely working. No login. $1 per 1,000 ads, less on paid plans.
Pricing
from $0.50 / 1,000 ads
Rating
5.0
(1)
Developer
Brainfoods Studio
Maintained by CommunityActor stats
1
Bookmarked
1
Total users
0
Monthly active users
11 hours ago
Last modified
Categories
Security
Limited permissionsShare
Late, but we brought receipts. Every ad comes with when it started, where it ran and what it said. The ones that have run for years are flagged too, because an ad that keeps running is usually an ad that works.
Google Ads Transparency Scraper is an API for the Google Ads Transparency Center, built for competitor research. Get every ad a brand ran on Google Search, YouTube and Display, by advertiser name, advertiser ID or website, in any country, with dates, countries, ad text and a preview, as JSON, CSV or Excel.
No login · No API key · $1 per 1,000 ads, less on paid plans · Independent tool, not affiliated with Google
What does Google Ads Transparency Scraper do?
- Finds the right advertiser by name. Type "nike" and you get Nike, Inc., not one of the small accounts with a similar name.
- Lists every ad for an advertiser or a website: format (text, image or video), first and last shown, preview image and link.
- Adds details on request: every country an ad ran in, with the last date in each, and how many variants it has.
- Reads the ad text: headline and description, straight from Google's own preview.
- Premium intelligence: days live, whether it's running now, and a 0–100 "likely working" score for each ad.
- A free summary per source: ads delivered, Google's approximate total, the format mix and the date span.
Who is it for?
- Marketers and media buyers studying what competitors run, where, and for how long.
- Agencies building competitor decks and pitch research in minutes instead of days.
- Sales and lead-gen teams finding companies that actively spend on Google Ads.
- Researchers and journalists tracking brand or category advertising across countries.
Use cases
| You want to | What to set |
|---|---|
| See every ad a competitor's website runs | domains, with maxAdsPerSource raised |
| Find the ads that are probably working | includeIntelligence and the free winner rows |
| Compare two brands' video ads in one country | Two domains, region, and formats set to video |
| Collect headlines for copy research | includeAdText |
| Check which companies in a list advertise on Google | A list of domains, then read the free summary rows |
| Get an alert when a competitor launches new ads | monitorKey and deliveryWebhookUrl, on a schedule |
Find the right advertiser by name
Advertiser names on Google are messy. Type "nike" and there are many accounts called something like Nike. The actor picks the advertiser with the most ads among those whose name contains what you typed, and if none does, the advertiser with the most ads overall. The other candidates are listed in a free advertiser row, so you can switch to an exact ID.
The choice is shown in a free advertiser row with its ID, country, ad count and verification status, plus up to 5 alternatives. If it picked the wrong one, copy the right ID from alternatives into your next run.
What each ad gives you
- Format: text, image or video.
- First and last shown dates.
- A preview image and the link to the ad on Google's Transparency Center.
- With
includeDetails: the countries where it ran, with the last-shown date in each, and how many variants it has. - With
includeAdText: the headline and description, read from the ad's preview. For example, one Nike text ad gives "Shop Nike® Clearance" and "Save with Nike® clearance. Shop shoes, apparel and accessories on sale." Image and video ads often have no text to read.
Every source also gets a free summary row: ads delivered, Google's approximate total, the mix of formats, and the date span.
What we measured
Live runs on Apify Proxy, 1 November 2026:
| Check | Result |
|---|---|
| Name lookup "nike" | Nike, Inc. (US, 9,000 to 10,000 ads), with the other candidates listed in the free advertiser row |
| Domain nike.com, 50 ads with details | every ad came with the countries it ran in, and the last-shown date for each |
| Ad text, same 50 ads | headline and description for 27 of 38 text ads and 8 of 11 image ads |
| Domain nike.com, region GB, video only | 13 video ads in 23 seconds |
Ad text is read from Google's own ad preview. When a preview has no readable text, the ad still arrives at the plain ad price.
Built to finish the run
- Every request runs in a warmed-up session with its own cookies and proxy address, and requests are paced.
- Rate limits and block pages get up to 4 attempts, with a growing pause. A session that stops working is replaced.
- On Apify Proxy, datacenter addresses are used first. After repeated rate limits, the actor moves to residential addresses if your plan has them.
- A failed lookup never fails the run. It gets an error row, and every other advertiser still finishes.
- If details or text can't be fetched for one ad, the ad still arrives with
detailsErrorortextErrorset, at the plain ad price.
How to use the Google Ads Transparency scraper
- Click Try for free.
- Enter advertisers (names or IDs like
AR16735076323512287233) or domains (likenike.com), up to 50 of each. - Pick a region, or leave it as
anywhere. - Choose the formats you want and how many ads per source.
- Click Start, then download the dataset as JSON, CSV or Excel, or run the actor from the Apify API or on a schedule.
Input example
{"advertisers": ["nike"],"region": "US","formats": ["text", "image", "video"],"maxAdsPerSource": 200,"includeDetails": true,"includeAdText": true}
More ready-to-run inputs
| Use case | Input |
|---|---|
| Every ad for a website | {"domains": ["nike.com"], "maxAdsPerSource": 1000} |
| Competitors' video ads in the UK | {"domains": ["nike.com", "adidas.com"], "region": "GB", "formats": ["video"]} |
| One advertiser by ID, with ad text | {"advertisers": ["AR16735076323512287233"], "includeAdText": true, "maxAdsPerSource": 100} |
Domains are cleaned for you: https://www.nike.com/us becomes nike.com.
Use it from an AI agent
Add the actor to any MCP client (Claude, Cursor, VS Code and others) through Apify's hosted MCP server:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=brainfoods_studio/google-ads-transparency-scraper"}}}
Then ask in plain words: "Show me the text ads Nike ran on Google in the US this month, with their headlines." See Apify's MCP docs.
Integrations
Everything runs on Apify, so it plugs into the tools you already use:
- Apify API and SDKs (JavaScript, Python) to start runs and read results from your own code.
- Schedules to check competitors daily or weekly. Monitor mode then returns only new ads.
- Make, Zapier and n8n to send ads to Google Sheets, a CRM or a database without writing code.
- Webhooks and Slack to get a message when a competitor launches something new.
- MCP for Claude, Cursor and other AI agents, as shown above.
See Apify integrations.
What you get
| Row type | One row per | Main columns |
|---|---|---|
ad | ad | advertiserName, creativeId, format, firstShown, lastShown, previewImageUrl, adUrl, headline, description, displayUrl, regions, regionsLastShown, variantCount |
advertiser | name lookup (free) | advertiserId, name, country, adCountMin, adCountMax, verified, alternatives |
summary | advertiser or domain (free) | ads, approxTotal, formats, firstShown, lastShown, stoppedAt |
error | failed step | stage, source, errorKind, message, attempts |
One ad row, without details or text:
{"type": "ad","source": "nike","sourceType": "advertiser","region": "US","rank": 1,"advertiserId": "AR16735076323512287233","advertiserName": "Nike, Inc.","creativeId": "CR05757739320572116993","format": "text","firstShown": "2023-11-17","lastShown": "2026-11-01","previewImageUrl": "https://tpc.googlesyndication.com/archive/simgad/4471758449974537828","adUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR05757739320572116993?region=US"}
Every ad row has the same columns. Fields you didn't ask for are empty, so the dataset opens cleanly in a spreadsheet.
Premium features
Intelligence: which ads are working?
Set includeIntelligence: true (it switches on details) and every ad gets daysLive and activeNow. Each advertiser or website also gets up to 10 free winner rows: the ads most likely to be working, scored 0–100 from how long they ran, how many variants they have and how many countries they ran in. Long-running ads are the usual sign of an ad that performs. The summary row lists the top 5.
On nike.com (1 November 2026), the top-ranked ads had run for 1,100+ days, in 5 variants, across 96 to 118 countries.
Monitor mode: only what's new
Set monitorKey to any name and run the actor on a schedule. Each run remembers what it returned, and the next run with the same name returns only ads you haven't seen yet, so you pay only for new results. Add deliveryWebhookUrl (a Slack incoming-webhook URL or any HTTPS endpoint) and a short alert with a link to the results is posted whenever something new turns up. The first run only builds the memory and never alerts. Use one monitorKey per schedule.
Pricing
You pay per ad delivered. Advertiser rows, summary rows and error rows are free.
| Result | Free plan | Bronze | Silver | Gold and up |
|---|---|---|---|---|
| Ad | $0.001 | $0.0008 | $0.0006 | $0.0005 |
| Ad with details, text or intelligence | $0.0025 | $0.002 | $0.0017 | $0.0015 |
| Monitor alert, per alert sent | $0.01 | $0.01 | $0.01 | $0.01 |
- Charged only after your results are saved. Never for error rows, advertiser rows or summaries.
- Never past your spending limit. When the limit is reached, the actor stops fetching new pages, and the run still succeeds.
- No extra start fee. Only Apify's standard run start charge of $0.00005 applies.
- If details or text fail for an ad, it's charged at the plain ad price.
- Ads you filter out by format are never charged.
What typical runs cost, before the start charge:
| Run | Free plan | Bronze |
|---|---|---|
| 1 advertiser, 100 ads | $0.10 | $0.08 |
| 1 advertiser, 100 ads with details and text | $0.20 | $0.16 |
| 1 large advertiser, 8,000 ads | $8.00 | $6.40 |
FAQ
Do I need a Google account or an API key?
No. You only need an Apify account. Click Try for free, enter a website or brand and start.
Is this data public?
Yes. Google publishes it in the Ads Transparency Center so anyone can see who advertises and what they show. This actor reads the same public pages.
How many ads can I get?
Up to 10,000 per advertiser or domain per run. The free summary row shows Google's approximate total, so you know how much is there before you raise the limit.
Why is headline empty for some ads?
Ad text is read from the ad's preview. Text ads usually have it; image and video ads often don't. Those ads arrive with headline empty.
Which regions can I search?
Any country, by its 2-letter code, or anywhere. With includeDetails, each ad also lists every country where it ran.
Legal note
This actor reads public transparency data that Google publishes on purpose. It does not solve captchas and does not try to get around anti-bot checks. It respects Google's rate limits by waiting and backing off. Use the data in line with Google's terms, advertisers' rights and the laws where you live.
More from Brainfoods Studio
- Google Trends Scraper: interest over time for up to 100 keywords on one 0–100 scale, plus regions, related queries and trending now.
- Google News Scraper: articles by search, topic or top stories, past the 100-article cap, with real publisher URLs.
- Google Play Scraper: app details and reviews, plus an App health report that shows which release hurt the rating.
Support
We're the new kids on this Store, so every issue gets an answer from the people who wrote the code. Found a problem, or need a field we don't return yet? Open an issue in the Issues tab. And if this actor saved you an afternoon, a review helps the next person find it.
Built and maintained by Brainfoods Studio.