FlowKit

Tracking competitor prices in e-commerce with n8n and AI

Published 3 September 2026 · 7 min read

A competitor drops their price by 8% on your flagship product on a Friday night, and you only find out Monday morning while browsing their site by chance. That lost weekend of conversions doesn't come back. On the other hand, manually watching prices across thirty competitors on hundreds of SKUs simply isn't humanly sustainable beyond a handful of strategic products. n8n lets you build this pricing watch without subscribing to an expensive repricing tool: regular scraping, reliable AI-based price extraction, and an alert the moment a gap crosses your threshold — the final call staying in your hands.

Why manual price monitoring fails fast

Three limits show up consistently once you go past a handful of hand-tracked products:

  • Time doesn't scale with volume. Opening ten competitor product pages every morning is doable; tracking a hundred becomes a full-time job that adds no human value.
  • Prices move without warning. A competitor already running a repricing algorithm can adjust prices several times a day — the manual reaction window is structurally too slow.
  • Information arrives incomplete. A price recorded without context (was the product out of stock? did the displayed price include a one-off discount?) leads to wrong repricing decisions.

This is a scale-and-consistency problem, exactly the kind of task automation handles better than a human, on the same principle as our RSS-based competitive monitoring guide — except here the source isn't a blog post but a price shown on a product page, a far more volatile data point far more directly tied to revenue.

Architecture of the price-monitoring pipeline

The workflow runs in five steps, repeated on a schedule for each tracked SKU:

Schedule Trigger (every X hours)
        │
        ▼
List of competitor URLs to monitor (Sheets / Supabase)
        │
        ▼
Fetch the page (HTTP Request or headless browser)
        │
        ▼
AI price extraction (structured output)
        │
        ▼
Compare against the last known price
        │
        ▼
Gap > threshold? ── no ──► silent history update
        │ yes
        ▼
Slack/email alert + suggested new price

The list of tracked products

Everything starts from a table (Google Sheets to get going, Supabase to handle scale) that maps each of your products to one or more competitor URLs, along with the last known price and when it was recorded. This table, and only this table, is the source of truth: the workflow never compares two readings against each other on the fly — it always compares against the last stored price.

The scheduled trigger

A Schedule Trigger polls the list on a regular cadence — daily for most of the catalog, hourly for a handful of strategic or volatile SKUs. Setting the frequency, timezone, and business days follows the same principles detailed in our Schedule Trigger and timezones guide: an explicit, documented cron expression beats an approximate interval that drifts over time.

Fetching the page

For a site that renders its price server-side, a plain HTTP Request node followed by an HTML node targeting the price block is enough, following the approach in our content extraction with the HTML node guide. Many modern sites instead render the price client-side in JavaScript: that calls for a headless browser, covered in our Browserless and Playwright with n8n guide, with the general methodology — delays, blocks, robots.txt — detailed in our AI-assisted web scraping guide for n8n.

AI-based price extraction

This is the step that makes the pipeline resilient to layout changes. Rather than a brittle CSS selector that breaks the moment the competitor redesigns their site, an LLM receives the raw HTML (or extracted text) of the product area and, via a Structured Output Parser, returns a structured object: displayed price, currency, presence of a discount, stock status (in stock, out of stock, pre-order). A price read off an out-of-stock product should never trigger an adjustment on your side — that's exactly what the structured output lets you filter out before any alert fires.

Comparison and the alert threshold

The new reading is compared against the last known price for the same product at the same competitor, following the approach already detailed in our Compare Datasets node guide. A percentage threshold (say, 3%) rather than an absolute value avoids triggering an alert over a one-cent difference on an €8 product while staying sensitive on an €800 one.

Alert, don't reprice blindly

Once the pipeline is running, the temptation is to wire the new competitor price directly into your own catalog via your e-commerce platform's API. That's risky without a safeguard: two repricing algorithms responding to each other in a loop can drive prices down well past what margin can absorb, a phenomenon documented by Fisher, Gallino, and Li in their 2018 study published in Management Science (“Competition-Based Dynamic Pricing in Online Retailing: A Methodology Validated with Field Experiments”): their real-world field experiment shows that a calibrated best-response strategy — not a mechanical adjustment to every competitor move — generated 11% additional revenue while respecting a margin target set in advance. The winning repricing approach, then, isn't the most reactive one, but the most calibrated one.

A second study, published in 2025 in the International Journal of Research in Marketing by Vomberg, Homburg, and Sarantopoulos (“Algorithmic pricing: Effects on consumer trust and price search”), adds an angle that's often overlooked: dynamic algorithmic pricing reduces trust among customers who notice it, and lengthens how long they keep comparing prices elsewhere before buying. Repricing that's too visible or too erratic can cost in trust what it gains in short-term margin.

The safest practice, especially for an SMB with no calibration history, is to route the alert to a human with a suggested price rather than publishing automatically:

  • Small gap (below threshold): silent history update, no alert.
  • Significant gap: a Slack or email notification with the product, the competitor's old and new price, your remaining margin if you matched that price, and a direct link to the product page to edit.
  • Very-low-margin, high-velocity categories (loss leaders, seasonal items): the only case where an automatic adjustment within a pre-approved range (a floor and ceiling set in advance) is justified, once the pipeline has proven itself over several weeks.

Updating your own catalog

Whether the decision is human or automated within the approved range, updating the price in your own catalog follows the same path as any e-commerce integration: the REST API of Shopify, WooCommerce, or PrestaShop lets you push the new price in a single HTTP Request call once approved. If you're already tracking stock levels with n8n, the same Shopify stock sync workflow is the natural place to plug in this update, rather than spinning up a third, isolated pipeline on the same catalog.

Hardening the pipeline for production

  • Respect target sites' terms of use. Scraping too often, or ignoring robots.txt, risks an IP block and raises a compliance question separate from the technical one.
  • Handle fetch failures. A site that changes structure or temporarily blocks your IP should never be interpreted as an out-of-stock signal: a dedicated Error Workflow isolates these cases from valid readings in the log.
  • Watch the AI call cost. Across a catalog checked daily, LLM extraction cost stays modest with an economical model, but it's worth tracking — our guide to tracking AI call costs covers the relevant quota management.
  • Keep the full history. Every reading, not just the latest one, should stay in the database: that's what lets you spot a trend that a simple comparison against the previous reading would never reveal.

Where to start

Start with about ten high-margin or directly-competed products rather than the whole catalog: the pipeline is far quicker to tune and calibrate on a narrow scope, and alert thresholds that make sense for an €800 product don't for a €15 one. Once the mechanics — fetching, AI extraction, threshold, alert — are proven on that first batch, expanding to the rest of the catalog only requires duplicating the list of tracked URLs, not rethinking the workflow. To place this price-monitoring workflow within a broader e-commerce automation setup — orders, stock, returns — our complete n8n guide for e-commerce covers the full chain around this competitive checkpoint.

The same mechanism — structured AI extraction from a web page, scraping, LLM with structured output, an alert threshold — is at the core of the RAG Assistant Pack (€119), which applies a similar logic to ingesting documents rather than product pages. For full traceability of every reading and every repricing decision, the Compliance & Audit Pack (€149) provides a ready-made, timestamped audit trail. All three packs, bundled in the FlowKit Complete Bundle (€269 instead of €347 bought separately), cover, beyond price monitoring, the full set of AI use cases most worth automating first.

FAQ

Frequently asked questions

Is scraping competitor prices legal?

Extracting publicly visible information from a product page (price, availability) is not inherently prohibited under French or EU law, but you must respect the target site's terms of use, avoid circumventing technical protection measures, and limit request frequency so as not to place an excessive load on the target server. If in doubt about a specific site, consult a lawyer rather than generalize an absolute rule.

Do I need automatic repricing or just alerts?

For most SMBs, an alert with a suggested new price, validated by a human before publication, is the right compromise: fully automatic repricing exposes you to downward price loops with competitors who also run algorithms, or to changes on products where margin can't absorb the adjustment. Reserve full automation for very-low-margin categories where velocity matters more than unit margin.

What if a competitor changes prices several times a day?

Increase the check frequency for that specific product rather than for the whole catalog — an hourly Schedule Trigger on a short list of sensitive SKUs costs little and catches fast moves, while hourly scraping across a catalog of several thousand SKUs quickly saturates quotas and AI budget.

Bundle FlowKit Complet

€269