mcpField
G
google-ad-scraper

google-ad-scraper

github.com/gooseworks-aiMarketing & growth1.3k51 installsUpdated 3d ago
Repository

About google-ad-scraper

A command-line skill that retrieves Google Ads for a company using its domain or name. Marketing teams can inspect ad creatives, formats, destinations, and other campaign details in JSON or a readable summary.

Key features

  1. 01Search ads by company domain
  2. 02Resolve company names to advertiser details
  3. 03Retrieve creatives, formats, and campaign fields
  4. 04Output JSON or a readable summary

Use cases

  1. 01Review a competitor's Google ads
  2. 02Compare ads across several company domains

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/gooseworks-ai/goose-skills --skill google-ad-scraper

After installing, type/google-ad-scraperin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

skill.meta.json
scripts/
search_google_ads.py
tests/
actor-input-contract.json
test_search_contract.py

Details

From the project README

Google Ads Scraper

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": "...", "maxResults": N}
  4. Output: Returns ads as JSON or human-readable summary

Input contract: maxResults is the actor’s documented limit field (official schema). This fallback remains temporary research; it does not create a saved GooseWorks ad-library source. Prefer the confirmed durable Google workflow in competitor-ad-intelligence when saving is requested.

CLI Reference

FlagDefaultDescription
--domainnoneCompany domain (e.g. hubspot.com) — recommended
--companynoneCompany name (resolved to domain via transparency center)
--max-ads50Maximum number of ads to return
--outputjsonOutput format: json or summary
--tokenenv varApify token (prefer APIFY_API_TOKEN env var)
--timeout300Max 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:

FieldDescription
advertiserIdGoogle Ads advertiser ID
advertiserNameCompany/advertiser display name
creativeIdUnique ID for the ad creative
originalUrlDestination URL the ad links to
imageUrlURL of the ad image (if applicable)
variantFormatAd format (TEXT, IMAGE, VIDEO, etc.)
variantContentAd copy/text content
variantsArray of ad variants
variantCountNumber of variants for this creative
startDateDate 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.

Comments

Markdown supported