Google Ads Transparency Center Scraper & API
Pricing
from $2.00 / 1,000 ad results
Google Ads Transparency Center Scraper & API
Scrape ads from the Google Ads Transparency Center by brand, domain or advertiser. Get creatives, dates, days active and per-country reach. No login. Independent tool, not affiliated with Google.
Pricing
from $2.00 / 1,000 ad results
Rating
5.0
(1)
Developer
Scrape Sage
Maintained by CommunityActor stats
3
Bookmarked
3K
Total users
1.4K
Monthly active users
2.4 hours
Issues response
6 hours ago
Last modified
Categories
Share
Google Ads Transparency Center Scraper
Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Google LLC or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. "Google Ads Transparency Center" is referenced only to describe the publicly available website this Actor collects data from.
Extract every ad a company runs through Google (Search, YouTube, Shopping, Maps and Play) straight from the Google Ads Transparency Center. Search by brand name, exact domain, or advertiser ID and get clean creative data: image/video previews, first- and last-shown dates, days active, advertiser identity with country and verification, per-country activity and, for ads shown in the EU, how many times each ad was shown, on which platforms, and which audience targeting the advertiser used.
No login, no cookies, no Google account required.
Why this ad-transparency scraper?
- No login, no cookies, no Google account
- Two modes: full ad creatives or one-row advertiser summaries (ad-check)
- Target by brand name, exact domain, advertiser ID, or pasted start URLs
- Built-in monitor mode that returns only newly-launched ads on a schedule
- Optional full creative detail: every A/B variation, every country with its dates, and Google's EU reach and audience data
- Advertiser country, legal name and verified badge on every ad row
- Filter by platform, format, region, and date window
Use cases
- Competitive ad intelligence: see exactly what creatives a competitor is running right now, on which Google surfaces, and how long each has been live via
shownForDays. - Reach and media-mix research: for ads shown in the EU, compare how many times each ad was shown per country and per platform (Search, YouTube, Shopping, Maps), and which audience criteria the advertiser selected.
- Ad-check & lead generation: feed a list of company names or websites in
advertisersmode to find out which ones actively run Google Ads, under which advertiser accounts, and roughly how many ads, in one cheap pass. - Creative & messaging research: pull image and video ad previews at scale for swipe files, trend analysis, or model training.
- Geographic reach analysis: turn on full creative detail to map every country each ad ran in, with its first- and last-shown dates.
- Brand & compliance monitoring: track when an advertiser launches or retires ads in a given country, and who the verified legal entity behind each ad is.
How to use
- Sign up for Apify. The free plan is enough to try this actor.
- Open the Google Ads Transparency Center Scraper, fill in the inputs you need, and click Start.
- Watch results stream into the dataset table as each page of ads is saved.
- Export as JSON, CSV, Excel, XML, or RSS, or pull results programmatically via the Apify API.
Input
You can target ads four ways and mix them freely: free-text queries, exact domains, advertiserIds, or pasted startUrls.
{"queries": ["Nike"],"domains": ["hellofresh.com"],"resultType": "ads","region": "US","platforms": ["YOUTUBE", "SEARCH"],"adFormat": "VIDEO","startDate": "2026-01-01","endDate": "2026-06-01","maxAdsPerSearch": 200,"includeDetails": false,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
queries: free-text brand names (e.g.Nike) or websites (e.g.nike.com). A brand name is matched to advertiser names through the Transparency Center's search; a website is looked up as that website, so you get the ads that point to it (or, inadvertisersmode, the accounts running them) and never another company that only shares the name.domains: exact domains. Inadsmode you get every ad that points at that domain, from any advertiser account; inadvertisersmode you get the advertiser accounts running those ads.advertiserIds: specific advertiser IDs that start withAR, found on an advertiser's Transparency Center page URL.startUrls: paste advertiser, creative, or domain-search URLs copied from the website; they are parsed automatically. You can also import a list from a file withurlsFromFile.resultType:ads(individual creatives, default) oradvertisers(one summary row per advertiser with approximate ad counts, country, legal name and verified badge, found by brand name, website or advertiser ID; ideal for ad-checks).region: two-letter ISO country code (e.g.US,GB,DE) orANYWHERE. Platform filters only apply to ads shown on/after 2023-09-04.platforms: any ofSEARCH,YOUTUBE,SHOPPING,MAPS,PLAY; leave empty for all.adFormat:ALL,TEXT,IMAGE, orVIDEO.startDate/endDate:YYYY-MM-DDdate window: ads shown at any point inside it. Google keeps the last 12 months of ad dates, so the window must end inside them (a range that ends earlier stops at once and bills nothing). Either date works on its own: a start runs up to today, an end covers the 12 months before it.maxAdsPerSearch(default 100) andmaxAdvertisersPerQuery(default 5): cap collection per target and per brand-name query.includeDetails: fetch full creative detail (every variation, every country with its dates, and the EU reach and audience data); one extra request per ad, billed per ad. Tune parallelism withdetailConcurrency(default 6).includeAdText(off by default): adds the words of each ad where Google's preview holds them: the headline, description and display URL of text ads, the business name of local ads and the product title of Shopping ads. Billed per ad via the separate Ad Text event, only where text is found.
Output
In ads mode, each ad creative is one dataset item:
{"creativeId": "CR09405416287280037889","advertiserId": "AR16735076323512287233","advertiserName": "Nike, Inc.","domain": "nike.com","format": "IMAGE","firstShown": "2022-11-30T15:26:06.000Z","lastShown": "2026-06-10T00:00:00.000Z","shownForDays": 898,"previewType": "image","imageUrl": "https://tpc.googlesyndication.com/archive/simgad/15682570092434089175","previewUrl": null,"width": 380,"height": 467,"googleCreativeId": "761207694135","googleCustomerId": "1287649103","adGroupId": "181405790069","versionId": null,"adUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR09405416287280037889?region=US","region": "US","advertiserCountry": "US","advertiserLegalName": "Nike, Inc.","advertiserVerified": true}
shownForDaysis a strong "this ad is working" longevity signal for competitive analysis.advertiserCountry/advertiserLegalName/advertiserVerifiedcome from the advertiser's own Transparency Center record: where the paying advertiser is based, its registered legal name, and whether Google verified its identity. Useful for spotting agencies and resellers running ads for a brand.googleCreativeId/googleCustomerId/adGroupId/versionIdare stable internal IDs parsed from the preview (present for text/video/rich ads;nullfor plain image ads). UsegoogleCustomerIdto group ads from the same ad account, oradGroupIdto cluster ads from the same campaign.imageUrlis a direct CDN link for image ads; text, video and rich-media ads expose a Google-hostedpreviewUrlinstead of a raw asset URL.
With includeDetails on, each ad also carries every A/B variation, every country it ran in and, for ads shown in the EU, Google's reach and audience data:
{"variationCount": 2,"variations": [{ "type": "image", "imageUrl": "https://...", "width": 380, "height": 467, "googleCreativeId": "761207694135", "adGroupId": "181405790069" }],"regionsShown": [{ "region": "US", "lastShownDate": "2026-10-17" },{"region": "DE", "lastShownDate": "2026-10-17", "firstShownDate": "2024-06-12", "firstShownOnOrBefore": false,"impressionsMin": 30000, "impressionsMax": 35000,"platformImpressions": [{ "platform": "SEARCH", "impressionsMin": 25000, "impressionsMax": 30000 },{ "platform": "YOUTUBE", "impressionsMin": 2000, "impressionsMax": 3000 }]}],"impressionsMin": 30000,"impressionsMax": 35000,"platformImpressions": [{ "platform": "SEARCH", "impressionsMin": 25000, "impressionsMax": 30000 },{ "platform": "YOUTUBE", "impressionsMin": 2000, "impressionsMax": 3000 }],"platforms": ["SEARCH", "YOUTUBE"],"audienceSelection": {"demographicInfo": "included","geographicLocations": "included and excluded","contextualSignals": "included and excluded","topicsOfInterest": null,"customerLists": null}}
impressionsMin/impressionsMax: Google's "Times shown" range, in total and per country and platform.impressionsMaxisnullfor Google's top bucket (for example 10 million or more).audienceSelection: the audience criteria the advertiser selected for the ad's most recent campaign, per category:included,excluded,included and excluded, ornullwhen that category was not used.firstShownDateper country, withfirstShownOnOrBefore: truewhen Google only says the ad was first shown "on or before" that date (its records start on 1 March 2023).
With includeAdText on, each ad also carries its words where Google's preview holds them:
{"advertiserName": "Hubspot, Inc.","format": "TEXT","adTextKind": "search","adHeadline": "HubSpot AI Sales Prospecting - Automate Lead Research - Leading LLM Technology","adDescription": "Automate prospect research and focus on what matters: closing deals and growing revenue.","adDisplayUrl": "www.hubspot.com/","adBusinessName": null,"adTextLines": ["HubSpot AI Sales Prospecting - Automate Lead Research - Leading LLM Technology", "Automate prospect research and focus on what matters: closing deals and growing revenue.", "HubSpot", "www.hubspot.com/"],"adHeadlineDynamic": false}
-
adHeadlineDynamic:truefor a Dynamic Search Ad, whose headline Google writes from the landing page each time the ad is shown, so the preview holds no headline:adHeadlineis thennulland the ad is billed only for its real description. The Ad text dataset view shows these columns as a table. -
adTextKind:search(text ads: headline, description, display URL),local(adds the business name) orshopping(the product title asadHeadline, the merchant asadBusinessName). -
adTextLines: every distinct line of text in the ad's preview, in order (up to 40). A Shopping preview can also hold the neighbouring products of its carousel, so read the product fromadHeadline. -
Image and video ads keep their words inside the picture, so their ad text fields stay
nulland they are not billed for it. How many ads have text depends on the brand's mix of formats: text and Shopping ads carry it, image and video ads do not.
In advertisers (ad-check) mode, each row is an advertiser summary:
{"advertiserId": "AR16735076323512287233","name": "Nike, Inc.","countryCode": "US","approxAdCountLow": 10000,"approxAdCountHigh": 20000,"matchedQuery": "Nike","region": "US","advertiserUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233?region=US","legalName": "Nike, Inc.","verified": true,"matchedVia": "advertiser name","matchedDomain": null}
Websites work too. Many brands advertise under another account name (a parent company, a regional entity or an agency), so a name search can come back empty. Put the brand's website in domains (or as a query that matches no advertiser name) and advertiser mode returns the accounts behind the ads that point to that site, most ads first, with matchedVia: "website" and matchedDomain set. A site with no Google ads in the region is named on the run card instead, which answers an ad-check on its own.
Set includeRawData to attach the raw decoded API objects to each result for debugging.
Good to know
- Reach, platform and audience data exist only for ads shown in the EU. Google publishes them under the EU Digital Services Act. Searches in EU countries get them on nearly every ad that has detail. Outside the EU you get them only on ads that also ran in an EU country, which is common for global brands and rare for local advertisers. For other ads these fields are
null. - "Times shown" figures are Google's own ranges and Google refreshes them periodically, so they can trail
lastShownby weeks or months. They are a scale indicator, not an exact count. - Pasted ad links return everything Google shows on the ad's own page. The
domain,firstShownandshownForDayscolumns come from search results, so they stay empty for ads you paste directly. - Ad counts on advertiser summaries are Google's approximate ranges, surfaced as-is.
- If Google stops answering for a target part-way through, the actor keeps every ad already collected and says on the run card which target stopped and after how many ads.
Monitoring: get only new ads
Turn on onlyNewAds to output only ads not seen in previous runs. The actor remembers every creative ID it has seen in a named key-value store, so a scheduled (daily/weekly) run returns just newly-launched ads, ideal for competitor new-ad alerts.
- The first run returns everything and seeds the memory; later runs return only genuinely new ads (and are cheaper, since you're billed only for new ads).
- Set
monitorStoreName(defaultads-transparency-monitor) to a distinct name per monitoring target so their histories don't mix. - Pair it with Apify Schedules and a notification integration to turn the actor into a standing watch on any brand's, domain's, or advertiser's Google ad activity.
How much does it cost to scrape Google Ads Transparency Center?
This Actor uses Apify's pay-per-event pricing: you are charged only for the results it delivers, with no monthly rental and no start fee. The events it can charge are:
- Ad Result - Charged for each ad creative returned in the dataset.
- Full Creative Detail - Charged per ad only when "Fetch full creative details" is on - adds every variation + full per-country reach/dates.
- Advertiser Record - Charged for each advertiser summary in advertiser (ad-check) mode.
- Ad Text - Charged per ad only when "Include ad text" is on and the ad's headline, description or product title was found in its preview.
The advertiser country, legal name and verified badge on ad rows are included at no extra charge.
Ad Text is an optional add-on, off by default, so nothing changes or costs more unless you switch it on. It is billed only for ads where text is found: image and video ads keep their words inside the picture, so they have no text to add and no Ad Text charge.
The current price of each event is shown on the Pricing tab of this page. Set a maximum total charge on the run if you want a hard cap on spend, and use the input limits to control how much the Actor fetches.
Automate & schedule
Run this actor on autopilot and pull results into your own stack:
- Apify API: start runs, fetch datasets, and manage schedules over REST.
- apify-client for JavaScript and apify-client for Python: official SDKs.
- Schedules: run it on a cron to keep your data fresh.
- Webhooks: trigger downstream actions the moment a run finishes.
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });const run = await client.actor('scrapesage/google-ads-transparency-scraper').call({queries: ['Nike'],resultType: 'ads',region: 'US',platforms: ['YOUTUBE', 'SEARCH'],adFormat: 'VIDEO',maxAdsPerSearch: 200,onlyNewAds: false,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Got ${items.length} records`);
Integrate with any app
Connect the dataset to 5,000+ apps, no code required:
- Make: multi-step automation scenarios.
- Zapier: push new records straight into your CRM or sheet.
- Slack: get notified when a run finds something new.
- Google Drive / Sheets: auto-export every run to a spreadsheet.
- Airbyte: pipe results into your data warehouse.
- GitHub: trigger runs from commits or releases.
Use with AI assistants (MCP)
The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server: ask your assistant to "find every YouTube video ad Nike is currently running in the US and how long each has been live" and let it run this scraper for you.
Agent-ready: autonomous payments (x402 & Skyfire)
This actor is agent-ready: AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:
- x402: an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server, with no account and no API key.
- Skyfire: agent-to-service payments for fully autonomous AI-agent workflows.
Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.
More scrapers from scrapesage
Need data from other sources? Try these:
- Facebook Ad Library Scraper: Meta/Instagram competitor ad intelligence.
- Bark Listing Scraper: Bark.com service-provider directory listings.
- SAM.gov Scraper: US federal contract opportunities & contacts.
- Eventbrite Scraper: events plus organizer leads with contacts.
- LinkedIn Jobs Scraper: filter-based LinkedIn job postings, no login.
- Telegram Scraper: channels, messages, media & search.
Tips
- For large or repeated runs, keep the default residential
proxyConfiguration; it is recommended for reliable access at scale. - Use
advertisersmode for a fast, cheap ad-check across many companies before deciding which ones to pull full creatives for. - Enable
includeDetailswhen you need A/B variations, per-country dates, or the EU reach and audience data; it adds one extra (separately billed) request per ad. RaisedetailConcurrencyto speed those detail runs up. - For reach data on a global brand, search an EU
region(for exampleDEorFR) withincludeDetailson. - For monitoring, give every target its own
monitorStoreNameso seen-ID histories don't mix, then schedule a daily or weekly run withonlyNewAdson. - Remember platform filtering only covers ads shown on or after 2023-09-04; narrow with
region,adFormat, and thestartDate/endDatewindow for tighter results.
FAQ
Which Google surfaces are covered? Search, YouTube, Shopping, Maps and Play. Filter to specific ones via platforms, or leave it empty for all.
Do I need to log in or supply a Google account? No. The actor reads the public Google Ads Transparency Center: no login, no cookies, no account.
How is it billed? Pay-per-event: a fee per ad creative returned, a separate fee per advertiser record in ad-check mode, and an extra per-ad fee only when full creative detail is on. You pay for the data you actually receive, and monitor mode only charges for new ads.
Why are the reach and audience fields empty on some ads? Google publishes them only for ads shown in the EU. Ads that never ran in an EU country have no such data anywhere, so these fields are null for them.
Why are some ID fields null? googleCreativeId, adGroupId and similar IDs are present for text/video/rich ads but are null for plain image ads. Image ads still return a direct imageUrl.
Is the data accurate and complete? It reflects exactly what Google currently publishes in its Transparency Center, including approximate ad-count and times-shown ranges, which are surfaced as-is.
What export formats can I get? JSON, CSV, Excel, XML, or RSS from the dataset, or programmatically via the Apify API.
Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Google LLC or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.
"Google Ads Transparency Center" and any related marks are the property of their respective owners and are used here only in a descriptive, nominative sense - to identify the publicly accessible website from which this Actor collects data. This Actor is not an official Google Ads Transparency Center product, is not authorised or certified by Google LLC, and does not distribute Google Ads Transparency Center software. It collects only publicly available information; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the terms of the source website.
Need help?
Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome: this actor is actively maintained.