π Log competitor Google Ads transparency snapshots to Google Sheets with Apify
β‘ 0 views Β· π Market Research & Insights
π‘ Pro Tip β HTTP Request scraping tends to break when sites update their markup. If youβre scraping a major platform, check if ScraperNode covers it β it has maintained scrapers for LinkedIn, Instagram, TikTok, YouTube, and 20+ other platforms that return structured data.
Description
Quick overview
This workflow runs daily (or manually) to snapshot Google Ads Transparency results for a single competitor domain via the Apify Google Ads Transparency Scraper, validates the run output, and upserts ad records into a Google Sheets βAdsβ tab to maintain a growing log of observed ads.
How it works
- Runs on a daily 09:00 UTC schedule (or via manual run) and loads the Google Sheets ID, Apify Actor input, and safety limits.
- Validates that the configuration uses a single lowercase domain, βadsβ snapshot mode, and a maximum charge cap before continuing.
- Reads existing ad records from the βAdsβ sheet in Google Sheets to preserve previously saved keys and delivery status.
- Starts the Apify datasmithlab/google-ads-transparency-scraper Actor and polls Apify until the run succeeds or fails.
- Fetches HEALTH and TARGETS records plus the ads dataset from Apify and stops if the results look incomplete or unreliable.
- Builds a scope-specific key for each ad, merges the latest snapshot with saved rows (keeping older rows even if they disappear), and marks new keys as baseline/logged depending on whether this scope is empty.
- Upserts the assembled rows back into the Google Sheets βAdsβ tab and outputs a run summary with counts and coverage notes.
Setup
- Create a Google Sheet with a tab named βAdsβ and add the required header columns (from the provided CSV in the template notes/repo).
- Add Google Sheets OAuth credentials in n8n and select them for the Google Sheets read and write steps.
- Add an Apify API token as HTTP Header Auth (Authorization: Bearer YOUR_APIFY_TOKEN) and select it for all Apify HTTP requests.
- In the Configuration step, replace REPLACE_WITH_SPREADSHEET_ID with your Sheet ID and set the Apify Actor input (one domain, region, and maxItems) plus a maxTotalChargeUsd limit.
- Run the workflow manually at least twice to confirm baseline vs. update behavior, then activate the daily schedule once the sheet keys look stable.
Requirements
- An Apify account with access to the Google Ads Transparency Scraper, an Apify API token stored in n8n Header Auth, Google Sheets OAuth2 credentials, and a dedicated Ads tab with the supplied CSV headers. Actor usage may incur charges; review current pricing before running.
Customization
- Change the competitor domain and region in Configuration. Keep the initial 20-ad snapshot cap and review the per-run charge limit before expanding coverage. Adjust the daily schedule after two successful manual runs. First-seen records indicate discovery by this workflow, not the ad publication date.
Additional info
Setup guide: https://datasmith-lab.github.io/datasmithlab-google-ads-n8n/track-google-ads-google-sheets-n8n.html Source and starter: https://github.com/Datasmith-lab/datasmithlab-google-ads-n8n Actor: https://apify.com/datasmithlab/google-ads-transparency-scraper The downloadable workflow is inactive and contains no credentials or private spreadsheet identifiers. A bounded snapshot does not guarantee complete ad history. Native import and offline engine validation passed; simulated services are distinguished from the previously verified live Google Sheets integration.
π Nodes Used
Google Sheets, HTTP Request, Schedule Trigger
π₯ Import
Download workflow.json and import into n8n:
Workflow menu β Import from File