Google Ad Scraper

Pulls a competitor's live Google Ads by domain via an Apify actor; needs an Apify token

Works with setup

Test report

Verdict
Works with setup
Score
6.4/10
Tested
Jul 21, 2026
Environment
Claude Code 2.x (agent harness)
Upstream re-checked
Aug 10, 2026 · 85a821c

Found the skill at skills/ads/capabilities/google-ad-scraper/ (SKILL.md, scripts/search_google_ads.py, skill.meta.json all HTTP 200) and ran the script locally: --help, missing-args and missing-token paths all behave as documented, and format_summary rendered correctly on a mock dataset shaped per the documented schema. I could not run a real scrape (needs APIFY_API_TOKEN plus a paid Apify actor run), so outputMeasured is false; I did verify the baseline alternative is genuinely blocked — curl of adstransparency.google.com returns a 2.5 MB JS bundle where the only "hubspot" hits are the echoed query param, zero creatives. Two concrete defects found by execution, not just reading: stubbing a successful advertiser lookup shows the --company flag can never work, because resolve_advertiser_id returns {advertiser_id, advertiser_name, url} while main() requires result["domain"] and exits 1 ("Could not resolve company name to domain"); and the recommended --output summary table drops variantContent, the ad copy field that the skill's own "messaging analysis" use case depends on. No dangerous patterns (no curl|sh, no base64, no secret exfiltration, no injection text), though the API token is passed as a ?token= URL query param and is sent to api.gooseworks.ai when GOOSEWORKS_API_KEY is set.

Scored on four weighted criteria — install, triggering, output vs. baseline, docs. How scoring works

  • Installs cleanly 4/5
  • Triggers reliably 5/5
  • Output vs. baseline 4/10
  • Docs & honesty 3/5

What Google Ad Scraper does

Wraps a Python CLI that calls the Apify `burbn/google-ads-search` actor to fetch the ads a given domain is currently running on Google, returning advertiser ID, creative ID, ad format, ad copy, destination URL and start date as JSON or a table. Triggers when you ask to scrape or look up a competitor's Google Ads, research their ad creatives, or analyze the messaging behind their search and display ads. Requires an APIFY_API_TOKEN (or a Gooseworks API key) and a paid Apify run per domain.

How to install Google Ad Scraper

git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git /tmp/google-ad-scraper-src
mkdir -p ~/.claude/skills
cp -R /tmp/google-ad-scraper-src/skills/ads/capabilities/google-ad-scraper ~/.claude/skills/google-ad-scraper
# pip3 install requests   # undeclared dependency, no requirements.txt in the skill
# export APIFY_API_TOKEN=apify_api_...   # or GOOSEWORKS_API_KEY=... to route via api.gooseworks.ai
# Run: python3 ~/.claude/skills/google-ad-scraper/scripts/search_google_ads.py \
#        --domain hubspot.com --max-ads 30 --output summary
# Note: SKILL.md's examples use skills/google-ad-scraper/scripts/... which matches neither the repo layout nor the install dir.

Skills live in ~/.claude/skills/ (global) or .claude/skills/ (per-project). Restart Claude Code after installing.

Commands — how to trigger Google Ad Scraper

  • /google-ad-scraper Pulls a competitor's live Google Ads by domain via an Apify actor; needs an Apify token

It also activates on plain-language prompts like these:

  • Scrape our competitor's Google Ads by domain
  • Show me what ad formats this competitor is running
  • Research competitor messaging from their Google ads

Frequently asked questions

Is the Google Ad Scraper skill free?
Yes. The skill itself is free from gooseworks-ai/goose-skills. SkillProof publishes the install command and an independent test verdict at no cost.
Does Google Ad Scraper work with Claude Code?
We tested it with Claude Code 2.x (agent harness) on Jul 21, 2026. Verdict: Works with setup. Found the skill at skills/ads/capabilities/google-ad-scraper/ (SKILL.md, scripts/search_google_ads.py, skill.meta.json all HTTP 200) and ran the script locally: --help, missing-args and missing-token paths all behave as documented, and format_summary rendered correctly on a mock dataset shaped per the documented schema. I could not run a real scrape (needs APIFY_API_TOKEN plus a paid Apify actor run), so outputMeasured is false; I did verify the baseline alternative is genuinely blocked — curl of adstransparency.google.com returns a 2.5 MB JS bundle where the only "hubspot" hits are the echoed query param, zero creatives. Two concrete defects found by execution, not just reading: stubbing a successful advertiser lookup shows the --company flag can never work, because resolve_advertiser_id returns {advertiser_id, advertiser_name, url} while main() requires result["domain"] and exits 1 ("Could not resolve company name to domain"); and the recommended --output summary table drops variantContent, the ad copy field that the skill's own "messaging analysis" use case depends on. No dangerous patterns (no curl|sh, no base64, no secret exfiltration, no injection text), though the API token is passed as a ?token= URL query param and is sent to api.gooseworks.ai when GOOSEWORKS_API_KEY is set.
What is the Google Ad Scraper SkillProof Score?
6.4/10 — installs cleanly 4/5, triggers reliably 5/5, output vs. baseline 4/10, docs & honesty 3/5.
How do I install Google Ad Scraper?
Copy the install command from this page, run it in your terminal, and restart Claude Code. Skills live in ~/.claude/skills/ (global) or .claude/skills/ inside a project.
Can I use Google Ad Scraper with Cursor, Copilot, Gemini CLI, Codex or other AI tools?
The SKILL.md format is native to Claude (Claude Code, Desktop, claude.ai). The instructions inside adapt to other assistants: Cursor rules, GitHub Copilot instructions, Windsurf rules, Custom GPTs, AGENTS.md for OpenAI Codex, and GEMINI.md for Google Gemini CLI — our conversion guides cover each, and the free converter on the tools page does the wrapping for you.