Agent skill
google-ad-scraper
Scrape competitor ads from Google's Ads Transparency Center (Search, YouTube, Display, Gmail).
Filed under Positioning and messaging.
From edupegoretti/fluidz-skills · 116 skills · 0 · pushed 2026-03-11
What it does when it runs
Scrape competitor ads from Google's Ads Transparency Center (Search, YouTube, Display, Gmail). Search by company name, domain, or advertiser ID. Returns ad creatives, formats, targeting regions, and campaign details. Use for competitive ad research and messaging analysis.
Read from the skill and the 2 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- APIFY_API_TOKEN
- Hosts it reaches
- adstransparency.google.com
- api.apify.com
- www.nike.com
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It does act, so it runs under whatever permissions your session already grants. - Actions present in the files
- shellnetwork
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/edupegoretti/fluidz-skills.git /tmp/fluidz-skills git -C /tmp/fluidz-skills sparse-checkout set "skills/capabilities/google-ad-scraper" mkdir -p ~/.claude/skills/google-ad-scraper cp -R "/tmp/fluidz-skills/skills/capabilities/google-ad-scraper/." ~/.claude/skills/google-ad-scraper/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
Before you install: this skill will not complete its job on a bare agent. It needs APIFY_API_TOKEN, which you have to obtain separately.
The skill
Source on GitHub ↗Reproduced in full from edupegoretti/fluidz-skills/blob/a2cf697e2e8ec2ea517d85496e2d5c7f5dc44cd3/skills/capabilities/google-ad-scraper/SKILL.md, which is licensed MIT (repository). 602 words, 22 headings.
Google Ads Transparency Scraper
Scrape ads from Google's Ads Transparency Center using the Apify xtech/google-ad-transparency-scraper actor. Covers Search, YouTube, Display, and Gmail ads.
Quick Start
Requires APIFY_API_TOKEN env var (or --token flag). Install dependency: pip install requests.
# Search by company name (auto-resolves advertiser ID)
python3 skills/google-ad-scraper/scripts/search_google_ads.py \
--company "Nike"
# Search by domain (more precise)
python3 skills/google-ad-scraper/scripts/search_google_ads.py \
--domain "nike.com"
# Direct advertiser ID (skip lookup step)
python3 skills/google-ad-scraper/scripts/search_google_ads.py \
--advertiser-id "AR13129532367502835713"
# With region filter
python3 skills/google-ad-scraper/scripts/search_google_ads.py \
--company "Shopify" --region US
# Limit results
python3 skills/google-ad-scraper/scripts/search_google_ads.py \
--domain "hubspot.com" --max-ads 30
# Human-readable summary
python3 skills/google-ad-scraper/scripts/search_google_ads.py \
--company "Stripe" --output summary
How It Works
- Advertiser Resolution (if no
--advertiser-idprovided):- Takes company name or domain
- Searches Google Ads Transparency Center using Apify's web-scraper (Puppeteer)
- Extracts advertiser ID(s) from search results (format:
AR+ 20 digits)
- Ad Scraping:
- Constructs transparency center URL for the advertiser
- Calls the Apify
xtech/google-ad-transparency-scraperactor - Polls until complete, fetches dataset
- Output: Returns ads as JSON or human-readable summary
Advertiser ID Resolution
The script handles the name → ID lookup automatically:
- By domain (
--domain nike.com): Searchesadstransparency.google.com/?domain=nike.com. Most reliable method. - By name (
--company "Nike"): Searchesadstransparency.google.com/?text=Nike. May return multiple matches. - Direct ID (
--advertiser-id AR...): Skips lookup entirely. Use when you already have the ID.
Finding the Advertiser ID Manually
If auto-resolution fails:
- Go to https://adstransparency.google.com
- Search for the company
- Click on the advertiser
- Copy the ID from the URL:
https://adstransparency.google.com/advertiser/AR17828074650563772417 - Pass it via
--advertiser-id AR17828074650563772417
CLI Reference
| Flag | Default | Description |
|---|---|---|
--company | none | Company name to search |
--domain | none | Company domain (e.g. nike.com) — more precise |
--advertiser-id | none | Google Ads advertiser ID(s), comma-separated (skips lookup) |
--region | anywhere | Region filter (US, GB, DE, etc. or "anywhere") |
--max-ads | 50 | Maximum number of ads to return |
--output | json | Output format: json or summary |
--token | env var | Apify token (prefer APIFY_API_TOKEN env var) |
--timeout | 300 | Max seconds to wait for Apify run |
At least one of --company, --domain, or --advertiser-id is required.
Output Fields
Each ad in the output may contain (varies by ad format):
{
"advertiser_name": "Nike, Inc.",
"advertiser_id": "AR13129532367502835713",
"ad_format": "TEXT",
"headline": "Nike.com - Official Site",
"description": "Shop the latest Nike shoes, clothing...",
"display_url": "nike.com",
"destination_url": "https://www.nike.com/",
"region": "United States",
"last_shown": "2026-02-20",
"first_shown": "2026-01-15",
"image_url": "https://...",
"video_url": "https://..."
}
Cost
- Advertiser lookup: ~$0.05 (one web-scraper page)
- Ad scraping: Varies by actor pricing, typically a few cents per advertiser
Common Workflows
1. Competitor Ad Research
python3 skills/google-ad-scraper/scripts/search_google_ads.py \
--domain "competitor.com" --max-ads 100 --output summary
2. Compare Multiple Competitors
# Get IDs first, then scrape in one run
python3 skills/google-ad-scraper/scripts/search_google_ads.py \
--advertiser-id "AR111,AR222,AR333" --max-ads 50
3. Regional Ad Targeting Analysis
# See what ads run in specific regions
python3 skills/google-ad-scraper/scripts/search_google_ads.py \
--domain "shopify.com" --region US --output summary
python3 skills/google-ad-scraper/scripts/search_google_ads.py \
--domain "shopify.com" --region GB --output summary
Limitations
- Advertiser ID lookup uses Puppeteer-based web scraping of Google's SPA. It may occasionally fail — use
--domainfor best results or provide--advertiser-iddirectly. - Ad coverage: Google only shows ads from verified advertisers. Some smaller advertisers may not appear.
- Historical data: The Transparency Center primarily shows recently active ads.
Configuration
See references/apify-config.md for detailed API configuration, token setup, and rate limits.
Files bundled with it
These load only when the skill asks for them, so they cost nothing until it runs.
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- google-ads by OpenClaudia · 664
- google-ads-report by OpenClaudia · 664
- google-analytics by OpenClaudia · 664
- google-reviews by OpenClaudia · 664
- google-ads by thatrebeccarae · 119
- google-analytics by thatrebeccarae · 119
- google-tag-manager by thatrebeccarae · 119
Need help setting it up?
This page tells you what google-ad-scraper does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.