Content and discovery
See a competitor's launch the week it happens
Watching a competitor is a permissions question before it is a technical one. Meta requires express written permission for automated data collection, so an Instagram scraper is not an option here — the documented endpoints are. What that leaves is narrower than the promise usually made: their public professional account through business_discovery, whatever the Ad Library will return, their own site where its terms and robots.txt allow an automated read, and the notices they send you. Narrow and permitted beats broad and actionable-against.
- Triggers
- Two
- Runs
- Daily
- Stack
- 4 tools
- Durable execution
- Not required
The flow
The top track reads only sources you are permitted to read, and keeps a dated copy. The bottom track compares, and one threshold decides whether anybody hears about it.
Every morning
n8n schedule
Read the permitted sources
Instagram Graph API · Ad Library API
Store today's copy
Sheets · Airtable
Their newsletter arrives
n8n · Make
Compare with yesterday
n8n
New listing or price cut?
n8n IF
Tell whoever sets price
Slack · WhatsApp
Leave the file as is
—
Step by step
- 01
Every morning
n8n scheduleOnce a day. A launch is a weekly-scale event, so polling harder buys nothing and starts to look like the thing the terms prohibit.
- 02
Read the permitted sources
Instagram Graph API · Ad Library APITheir professional account through business_discovery, their ads through the Ad Library API, and their own catalogue page only where that site's terms and robots.txt allow an automated read. Anything behind a login, and any platform whose terms prohibit automated collection, stays off the list — including Instagram itself outside these endpoints.
- 03
Store today's copy
Sheets · AirtableOne dated row per source, with the source named on the row. The value compounds: a year of rows shows how often they launch and how they price, which no single read can give you.
- 04
Their newsletter arrives
n8n · MakeThe second source, and the one they want you to have. Route it into the same comparison instead of a folder, so it is checked against yesterday rather than skimmed.
- 05
Compare with yesterday
n8nField by field against the previous row. Compare the values, not the page — a template change is not a launch, and a flow that cannot tell the difference will cry wolf until it is muted.
- 06
New listing or price cut?
n8n IFSet a floor. A new colourway of an existing product is not a launch, and a rounding difference is not a price cut. The floor is a judgement about your category, and it is the only part of this flow you cannot copy from someone else.
- 07
Tell whoever sets price
Slack · WhatsAppName the product, the old and new price, the date first seen, and the source it came from. The source matters most: a claim the recipient cannot re-check themselves is not intelligence, it is a rumour with a timestamp.
What the platform will not allow
This is the case where the limits are the design. Read them before deciding whether to build it, not after.
"You will not engage in Automated Data Collection without first obtaining Meta's express written permission or in any manner that is not explicitly authorized by Meta." Scraping a competitor's Instagram or Facebook presence is therefore off the table. This flow reads Meta only through the documented endpoints below.
Meta — Automated Data Collection Termsbusiness_discovery is the documented way to read another Instagram Business or Creator account, returning public fields such as follower count, media count and per-media engagement. "Data about age-gated Instagram Business IG Users will not be returned", and it requires instagram_basic, instagram_manage_insights and pages_read_engagement. A competitor on a personal account is simply out of scope.
Instagram Platform — IG User business_discoveryThe Ad Library API returns "archived ads from the Meta Ad Library based on keyword searches of text, images, audio from video, and the call-to-action button", but "ads that did not reach any location in the EU will only return if they are about social issues, elections or politics". For a competitor advertising only in Asia, expect this source to be largely empty — which is the opposite of how it is usually described.
Meta Graph API — ads_archive (Ad Library API)robots.txt lets "service owners control how content served by their services may be accessed, if at all, by automatic clients", and the RFC states plainly that "these rules are not a form of access authorization". A path not disallowed is still governed by that site's terms; robots.txt tells you where a crawler may go, never that you are permitted to be there.
RFC 9309 — Robots Exclusion ProtocolXiaohongshu publishes an open API reference, but it covers merchant operations — orders, products, inventory, logistics — with nothing for reading another brand's notes, and we found no published terms permitting automated collection of them. That side of the watch stays manual: a person looking, on a schedule.
小紅書開放平台 — API 文件導覽
When this is not worth building
Three cases where the upkeep costs more than the surprise.
You have one competitor and they announce everything to a list you are already on. Subscribing is the whole workflow, and the rest is decoration around an email.
Nothing you would do about it can happen inside a week. If price is set by contract and stock is ordered a quarter ahead, knowing early only lengthens the time you spend unable to act.
The only place the answer lives is behind a login, or on a platform whose terms forbid automated collection. The honest version is then a person looking on a schedule, and a workflow that pretends otherwise creates a legal exposure to save ten minutes a week.