π Monitor competitor brand bidding with Bright Data, GPT-5.6 and Slack
β‘ 5 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 every morning to scrape Google paid search ads for your brand queries using Bright Data, logs all sightings to Google Sheets, tracks advertiser history in an n8n Data Table, and uses OpenAI (GPT-5.6) to classify notable changes before sending alerts and digests to Slack.
How it works
- Runs every day at 07:00 and loads your brand, markets, query modifiers, and Slack/channel settings.
- Builds a fixed grid of brand search queries per market (including city-level location) and calls the Bright Data SERP API for each Google results page.
- Extracts advertisers from both the top and bottom ad blocks, deduplicates results per query/location, and keeps the workflow alive even when no ads are returned.
- Compares the current sweep to an n8n Data Table roster to increment sightings, detect new advertisers or headline rewrites, and mark advertisers as missing or stopped after a configurable number of missed sweeps.
- Appends all real ad sightings to a Google Sheets βsightingsβ tab and upserts the updated roster metrics back into the Data Table.
- Sends only new, rewritten, or newly stopped rival ads to OpenAI (GPT-5.6) to label intent and summarize the creative, then routes items into an escalation (brand named in ad copy), a digest (other notable changes), or a quiet lane.
- Posts a single consolidated Slack message for the escalation or digest lane, or does nothing when there are no noteworthy changes.
Setup
- Create a Bright Data SERP zone and add an HTTP Header Auth credential in n8n, then set the zone name in the workflow settings.
- Add OpenAI credentials (for the GPT-5.6 model) and Slack credentials, and set the target Slack channel name in the settings.
- Create an n8n Data Table named
brand_biddingwith the columnswatch_key,advertiser,query,country,location,first_seen,last_seen,sweeps_seen,misses, andlast_headline. - Create a Google Sheet with a
sightingstab, connect Google Sheets credentials, and replace the spreadsheet URL/ID in the Google Sheets append step. - Update the Settings values for your brand name, your owned domains, authorized partner domains, query modifiers, markets (
country=City,Region,Country), and thresholds likemax_queriesandgone_after.
π Nodes Used
Google Sheets, HTTP Request, Slack, Schedule Trigger, Filter, OpenAI Chat Model
π₯ Import
Download workflow.json and import into n8n:
Workflow menu β Import from File