Track competitor App Store listing changes with Bright Data, GPT-5.6 and Slack

Go to Workflow
0 views
Built by Daniel Shashko Daniel Shashko
Created on August 27, 2026

Description

Quick overview
This workflow runs every Monday, scrapes a list of competitor iOS App Store listings via Bright Data, compares key fields to last week’s snapshot stored in an n8n Data Table, uses OpenAI (GPT-5.6) to explain only the changes, and posts a weekly digest to Slack.

How it works
Runs every Monday morning on a schedule trigger.
Reads a configured list of App Store URLs and sends them to Bright Data’s Web Scraper API to create a listing snapshot job.
Polls Bright Data until the snapshot is ready (or the max poll limit is reached), then downloads the snapshot JSON.
Normalizes each listing into a consistent set of fields (for example version, price, subtitle, description hash/head, screenshot count, languages, rating, and one-star share) and drops errored rows.
Loads the previous run’s values from the n8n Data Table, compares each app to find meaningful changes, and upserts the current values back into the Data Table.
If any apps changed, sends the change JSON for up to the configured maximum to OpenAI (GPT-5.6) to generate short, grounded explanations.
Builds a single Slack-ready digest summarizing what moved and posts it to the configured Slack channel, or does nothing on a quiet week.

Setup
Add a Bright Data HTTP Header Auth credential and ensure you have access to the App Store listing dataset used by the workflow.
Add an OpenAI credential (model set to gpt-5.6-terra) and a Slack OAuth credential.
Create an n8n Data Table named app_listings with columns for the stored listing fields (for example app_id, title, version, price, sub_title, desc_head, desc_hash, screenshots, languages, rating, one_star, and checked_at).
In the Settings node, paste your competitor App Store URLs, set max_polls/max_explained as needed, and set the target slack_channel.
Run the workflow once to seed the Data Table (the first run stores baselines and typically posts no change report).

Nodes Used (5)

Basic LLM Chain
@n8n/n8n-nodes-langchain.chainLlm
Code
n8n-nodes-base.code
HTTP Request
n8n-nodes-base.httpRequest
OpenAI Chat Model
@n8n/n8n-nodes-langchain.lmChatOpenAi
Slack
n8n-nodes-base.slack