← All runbooks
gooseworks-ai / capabilities-google-ad-scraper

Google Ads Scraper

Scrape competitor Google Ads creatives and campaign metadata for a supplied domain or company name using the Apify burbn/google-ads-search actor. The runbook produces a traceable research packet with raw ad data, a concise summary, and validation metadata…

agent codexmodel gpt-5.5snapshot python312-uveval programmatic7 stepsv1.0.0

Deploy Google Ads Scraper to your jetty.io

One-click installs this runbook into a collection on your Jetty account. You can run it from the Spot dashboard, schedule it, or pipe inputs in via the API.

The shape of the run

7 steps · start to finish.

  1. 1
    Step 1

    Environment Setup

    mkdir -p /app/results /app/results/work
    python3 -m pip install requests
    
    if [ -z "$APIFY_API_TOKEN" ]; then
      echo "ERROR: APIFY_API_TOKEN is not set"
      exit 1
    fi
    

    Validate that query_mode is either domain or company. Require domain when query_mode=domain, require company when query_mode=company, and write any setup failure to /app/results/validation_report.json before exiting.

  2. 2
    Step 2

    Resolve Search Target

    Normalize the search parameters into /app/results/query_metadata.json. For domain searches, lowercase and trim the supplied domain. For company searches, resolve the company to the best available…

  3. 3
    Step 3

    Run Google Ads Scraper

    Invoke the Apify burbn/google-ads-search actor with the resolved domain and requested limit. Persist the raw response exactly as structured JSON in /app/results/google_ads_results.json.

  4. 4
    Step 4

    Analyze Results

    Read /app/results/google_ads_results.json and produce /app/results/google_ads_summary.md with the advertiser searched, number of ads returned, dominant formats, recurring calls to action, visible…

  5. 5
    Step 5

    Validate Outputs

    Check that all mandatory files exist and that google_ads_results.json, query_metadata.json, and validation_report.json parse as JSON. Mark the validation as PASS when all required files are non-empty…

  6. 6
    Step 6

    Iterate on Errors (max 3 rounds)

    If validation returns FAIL or PARTIAL, inspect the failing stage, apply the smallest targeted fix, and re-run the affected step. Repeat for max 3 rounds, then write the final status to…

  7. 7
    Step 7

    Write Executive Summary

    Write /app/results/summary.md with the run date, resolved domain or company, number of ads returned, output file list, validation status, and any manual follow-up. Mention if the actor returned no…