Export and monitor public Google Ads Transparency Center creatives across 178 countries and regions, with format, platform, status, and date filters plus downloadable media when Google exposes it.
Use this actor when you need a repeatable CSV, JSON, Excel, or API export of public ad records for competitor research, creative monitoring, market analysis, ad intelligence, or AI-agent workflows.
At a glance
- Input: Advertiser names, brand names, domains, direct
AR…advertiser IDs, or Transparency Center advertiser URLs. - Output: Advertiser, creative, status, format, platform, dates, media, regional impression ranges, and scrape time.
- Filters: 178 countries and regions, Google platform, creative format, active or historical status, date range, and result limit.
- Best for: Google Ads Transparency exports, competitor ad monitoring, creative research, and ad-library workflows.
- No login required: Uses public Google Ads Transparency Center data.
What can it do?
- Export Google ads transparency data: Save public ad records from Google Ads Transparency Center.
- Collect advertiser context: Capture advertiser names, IDs, regions, and ad dates when available.
- Inspect creatives: Save ad text, headlines, descriptions, images, videos, landing pages, and snapshot URLs when exposed.
- Filter by Google platform and format: Narrow results to Search, YouTube, Shopping, Maps, Play, text, image, or video creatives.
- Preserve creative assets: Optionally download exposed image and video files to the run key-value store.
- Analyze transparency statistics: Collect published regional dates, impression ranges, and platform breakdowns where available.
- Detect campaign changes: Compare this run with a previous dataset and get new, removed, and unchanged ad IDs.
- Understand filtered runs: Use per-query scanned, filtered, duplicate, detail, and scan-limit diagnostics.
- Track competitors: Schedule repeat runs for the same brands or keywords.
- Use as a Google Ads Transparency API alternative: Run from the Apify UI, API, schedules, webhooks, or the official Apify MCP server.
Common workflows
- Competitor ad research: Export ads for a brand and compare active creative themes.
- Creative swipe files: Save image, video, headline, and landing-page fields for review.
- Market monitoring: Track public ad activity by country and date range.
- Landing-page analysis: Export ad landing pages for downstream crawling or classification.
- AI-agent briefings: Let an agent collect public ad examples before summarizing messaging patterns.
Input example
{
"queries": ["Nike, Inc.", "adidas.com", "AR16735076323512287233"],
"country": "US",
"platforms": ["GOOGLE_SEARCH", "YOUTUBE"],
"formats": ["text", "video"],
"adStatus": "active",
"dateFrom": "2026-01-01",
"dateTo": "2026-07-01",
"maxResultsPerQuery": 20,
"maxAdsScannedPerQuery": 500,
"compareDatasetId": "OPTIONAL_PREVIOUS_DATASET_ID",
"includeAdDetails": true,
"includeTransparencyStats": true,
"downloadMedia": false,
"proxyConfiguration": { "useApifyProxy": true }
}
Output example
{
"query": "Nike, Inc.",
"country": "US",
"advertiserName": "Nike, Inc.",
"advertiserId": "AR123456789",
"adId": "CR987654321",
"adUrl": "https://adstransparency.google.com/advertiser/...",
"adText": "Shop the latest running shoes.",
"headline": "Nike Running Shoes",
"description": "Performance styles for every run.",
"imageUrls": ["https://tpc.googlesyndication.com/..."],
"videoUrl": null,
"landingPageUrl": "https://www.nike.com/",
"platforms": ["Google Search"],
"regions": ["US"],
"adStatus": "active",
"impressionsLowerBound": 1000,
"impressionsUpperBound": 2000,
"regionStats": [],
"downloadedMediaKeys": [],
"firstShownDate": "2026-06-10",
"lastShownDate": "2026-07-01",
"snapshotUrl": "https://adstransparency.google.com/advertiser/...",
"creativePageUrl": "https://adstransparency.google.com/creative/...",
"format": "text",
"rawCreativeType": 2,
"scrapedAt": "2026-07-03T10:00:00.000Z"
}
Tips for best results
- Use a direct
AR…advertiser ID for repeat monitoring; it skips the advertiser suggestion step. - Search exact advertiser names when possible, and try both brand names and domains if the first query returns sparse results.
- Use country filters deliberately; the same advertiser can show different ads by region.
- Leave detail, statistics, and media downloading off for fast discovery runs. Enable them only when the richer fields matter.
- Platform-filtered Google results cover ads shown from September 4, 2023 onward.
- Use date filters to narrow recurring monitoring jobs.
- For scheduled monitoring, pass the previous run's dataset ID as
compareDatasetIdto receive a machine-readable change summary. - Keep
maxAdsScannedPerQueryclose to your expected workload when using narrow combinations such as active video ads.
Limits and caveats
- The actor exports public Google Ads Transparency Center data. It is not an official Google API.
- Some ads expose only partial creative details.
- Narrow post-filters can return fewer rows than
maxResultsPerQuery; checkRUN_SUMMARY.queryResults[].diagnosticsto see why. - Impression ranges and platform breakdowns are available only where Google publishes extra transparency data; empty values do not mean zero impressions.
- This Actor searches the general Ads Transparency Center. Google's separate political-ad archive, demographic targeting, and spend reports are not included.
- Logged-out public access can return fewer ads than a signed-in Google session, especially for restricted creatives.
- Google can temporarily rate-limit bursts across separate runs. The Actor paces the next run in proportion to the preceding run's RPC volume. Retries then escalate from direct access to standard proxy rotation and, when you did not choose a custom proxy group, a target-country residential fallback. If all transport tiers remain blocked, the cooldown is extended.
RUN_SUMMARY.transportreports residential attempts and wait time; no input or result data is stored in the anonymous account-level coordination record. Residential proxy traffic can add Apify platform proxy charges. - A temporary block that outlasts the bounded run budget, or a source change, can still cause a query to fail. Other queries continue, and
RUN_SUMMARYrecords each outcome. - Older API clients can continue using
searchTerms,regions,adFormats, andmaxItems; new clients should use the primary field names shown above.
API usage
Node.js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/google-ads-transparency-scraper').call({
queries: ['Nike, Inc.', 'AR16735076323512287233'],
country: 'US',
maxResultsPerQuery: 20,
includeAdDetails: false
});
console.log(run.defaultDatasetId);
Python
from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/google-ads-transparency-scraper').call(run_input={
'queries': ['Nike, Inc.', 'AR16735076323512287233'],
'country': 'US',
'maxResultsPerQuery': 20,
'includeAdDetails': False,
})
print(run['defaultDatasetId'])
cURL
curl "https://api.apify.com/v2/acts/fetch_cat~google-ads-transparency-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"queries": ["Nike, Inc."],
"country": "US",
"maxResultsPerQuery": 20,
"includeAdDetails": false
}'
MCP and AI agents
You can run this actor through the official Apify MCP server at https://mcp.apify.com.
Claude Code setup:
claude mcp add apify "https://mcp.apify.com?tools=fetch_cat/google-ads-transparency-scraper"
Claude Desktop, Cursor, or VS Code JSON setup:
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/google-ads-transparency-scraper"
}
}
}
Agent-friendly inputs are queries, advertiserIds, country, platforms, formats, adStatus, dateFrom, dateTo, maxResultsPerQuery, maxAdsScannedPerQuery, compareDatasetId, includeAdDetails, includeTransparencyStats, downloadMedia, and proxyConfiguration.
Example prompts:
- "Export the latest public Google ads for Nike in the United States."
- "Use this Google advertiser ID and return 20 ad creatives without detail enrichment."
- "Compare public ad dates and formats for these three competitor domains."
Support
If a run fails, returns no data, or a field looks wrong, open an issue from the Actor page.
Please include the Apify run ID or run URL, input JSON, one example public URL, query, or input item, what you expected, and what the dataset returned. Small reproducible inputs make parsing or site-layout issues much faster to fix.
Privacy and data handling
This Actor runs with Apify limited permissions and only processes data needed for the documented run. It uses search/query inputs and public search, trend, app, patent, news, or profile results to produce the output dataset and sends requests to public Google Ads Transparency pages/endpoints; results are stored in Apify run storage for your account. FetchCat does not use your inputs or outputs for advertising, does not use them for model training, and does not retain them outside the Apify run except for transient support debugging when you explicitly share run details. You are responsible for using the Actor lawfully, respecting the target site's terms, and avoiding unnecessary personal or sensitive data in inputs.