Install in seconds
Install this skill
Copy the command and run it in your terminal. You can review the source before installing.
terminal
git clone https://github.com/gooseworks-ai/goose-skills

Works with Git. The repository opens in your current directory.

🔍
AutomationPython

Google Ads Scraper

by gooseworks-ai

Scrape competitor ads from Google Ads by domain to get ad creatives, formats, and campaign details. Use for competitive ad research and messaging analysis.

1.1K stars194 forksAdded 2026/07/20
claudeclaude-skillsclaudecodeclaudecode-skillscodexcursorgtmskills

Documentation

README

Scrape ads from Google Ads using the Apify burbn/google-ads-search actor. Search by domain to get ad creatives, formats, and campaign details.

Quick Start

Requires APIFY_API_TOKEN env var (or --token flag).

# Search by domain (recommended)
python3 skills/google-ad-scraper/scripts/search_google_ads.py \
  --domain "hubspot.com"

# Search by company name (resolves to domain via transparency center)
python3 skills/google-ad-scraper/scripts/search_google_ads.py \
  --company "Nike"

# 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 \
  --domain "stripe.com" --output summary

How It Works

  1. Domain Input: Pass the target company's domain directly via --domain
  2. Company Name Resolution (optional): If only --company is provided, the script searches Google Ads Transparency Center using Apify's web-scraper (Puppeteer) to resolve the company name to advertiser info
  3. Ad Scraping: Calls the Apify burbn/google-ads-search actor with {"domain": "...", "maxItems": N}
  4. Output: Returns ads as JSON or human-readable summary

CLI Reference

Flag Default Description
--domain none Company domain (e.g. hubspot.com) — recommended
--company none Company name (resolved to domain via transparency center)
--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 or --domain is required.

Output Fields

Each ad in the output contains:

{
  "advertiserId": "AR13129532367502835713",
  "advertiserName": "Nike, Inc.",
  "creativeId": "CR12345678901234567890",
  "originalUrl": "https://www.nike.com/",
  "imageUrl": "https://...",
  "variantFormat": "TEXT",
  "variantContent": "Shop the latest Nike shoes...",
  "variants": [...],
  "variantCount": 3,
  "startDate": "2026-01-15"
}

Output fields:

Field Description
advertiserId Google Ads advertiser ID
advertiserName Company/advertiser display name
creativeId Unique ID for the ad creative
originalUrl Destination URL the ad links to
imageUrl URL of the ad image (if applicable)
variantFormat Ad format (TEXT, IMAGE, VIDEO, etc.)
variantContent Ad copy/text content
variants Array of ad variants
variantCount Number of variants for this creative
startDate Date the ad first appeared

Cost

  • Ad scraping: Varies by actor pricing, typically a few cents per domain
  • Company name resolution (optional): ~$0.05 (one web-scraper page)

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

# Run for each competitor domain
for domain in "competitor1.com" "competitor2.com" "competitor3.com"; do
  python3 skills/google-ad-scraper/scripts/search_google_ads.py \
    --domain "$domain" --max-ads 50
done

Limitations

  • Company name resolution uses Puppeteer-based web scraping of Google's SPA. It may occasionally fail — use --domain for best results.
  • Ad coverage: Google only shows ads from verified advertisers. Some smaller advertisers may not appear.
  • Historical data: Primarily shows recently active ads.

More from gooseworks-ai

Other Claude Code skills by this author in the directory.

🎨
1w ago

Create FAL Image

Generate or edit images using any FAL AI model (nano-banana, gpt-image, flux, etc.) routed through a proxy for billing. Ideal for keyframes, product hero edits, and flat-cover transforms.
Automation
+1%1.1K194
🖼️
1w ago

GPT Image via Fal

Generate photoreal or designed images using OpenAI's gpt-image models through fal.ai. Supports text-to-image and edit-from-reference with gpt-image-1 and gpt-image-2, ideal for character anchors, scene keyframes, and storyboards.
AI Engineering
+1%1.1K194
🎵
1w ago

Music Generation

Generates instrumental music beds for video ads using ElevenLabs Music, routed through a proxy for billing. Trims intros, normalizes loudness, and fades tails according to a template recipe.
Automation
+1%1.1K194
🎥
1w ago

FAL Video Generator

Generates videos from images or text using FAL AI models like Kling, Seedance, or Veo. Routes through the GooseWorks proxy for billing and is ideal for creating base clips for video ads.
AI Engineering
+1%1.1K194
🎙️
1w ago

ElevenLabs Voiceover

Generates a voiceover clip using ElevenLabs text-to-speech through a proxy that bills the Ads agent. The template recipe provides the voice ID and script text; used for spoken narration in video ad formats.
Automation
+1%1.1K194
📡
1w ago

Media Proxy

Shared helper that routes all paid media generation (FAL image/video, ElevenLabs music) through the GooseWorks proxies so every call bills the Ads agent. Provides crash-resume protection to avoid double-billing and ensures correct auth.
Automation
+1%1.1K194