Practice
How to monitor competitor prices without drowning in data
Monitoring competitor prices means observing a defined set of rival offers for a defined set of your own products, on a schedule fast enough to catch the changes that matter, with alerts tuned so only actionable moves reach a human. The work is four decisions: which competitors, which SKUs, how often, and what fires an alert.
Competitor price monitoring is a set of four decisions, made once and maintained: which competitors you watch, which of your own SKUs you watch them on, how often you check, and what threshold turns an observation into an alert. Get those wrong and you end up with either a dashboard nobody opens or a Slack channel everybody mutes. This guide is the procedure for getting them right, with the arithmetic shown.
Start from the decision, not from the data
Before you pick a single competitor, write down the decision the data has to support. There are only a few, and they need different data.
- Do we change this price? Needs accurate matched prices on a small, high-revenue SKU set, refreshed fast enough that the number on screen is still true when you act on it.
- Are we drifting out of position? Needs a stable basket, in-stock filtering and a weighted price index. Speed matters less; consistency matters more.
- Is a reseller advertising below our floor? Needs full seller coverage on marketplaces and dated evidence, not a price average. That is a different program, covered in how to monitor MAP violations.
- Where are we losing on assortment, not price? Needs stock status and promotion capture as much as price, so an out-of-stock competitor is not read as a lost sale.
Most programs stall because they were built to answer all four at once and ended up answering none well. Pick the first decision, build for it, and add the others after it runs for a month. If you have not chosen a tool yet, the software selection rubric weights the criteria that matter for this procedure.
How to monitor competitor prices: the seven-step loop
- 1
1. Name the decision and its owner
One sentence: who acts on this data, how often, and what action is available to them. If pricing changes go through a monthly committee, hourly refresh is wasted money. If a merchandiser can change a price today, refresh speed becomes the constraint that matters.
- 2
2. Score the competitor candidates and cut the list
Run every candidate through the rubric below. Keep the ones that score into the core band and the secondary band. A list of twenty competitors is a list nobody maintains, and each extra competitor multiplies the matching work by the number of SKUs you monitor.
- 3
3. Choose the monitored SKU set with an explicit rule
Three buckets: the revenue spine, the price-perception items, and the contested SKUs. Everything else is excluded on purpose and written down as excluded, so nobody spends a quarter wondering why a product is missing.
- 4
4. Match products, then confirm the matches
Identifier joins first, then title and attribute comparison, then image comparison. Review anything that lands below the auto-accept band before it feeds a decision. This is the step that silently ruins price data, and it is covered in depth in the product matching guide.
- 5
5. Set refresh frequency to category velocity
Measure how often prices actually move in your category, then set the check interval below that. Your interval is a hard ceiling on what you can see: a promotion that starts and ends between two checks leaves no trace at all.
- 6
6. Set alert thresholds, routes and duration rules
Every alert names a person and an expected action. Add a persistence rule so a change has to survive one full refresh cycle before it fires, and a de-duplication rule so one SKU cannot generate nine messages in a day.
- 7
7. Run the weekly review and log the decisions
Thirty to forty-five minutes, same agenda, data health checked before anything else. Record what you decided and why. The log is what turns a monitoring tool into a pricing capability, because next quarter you can tell which moves worked.
Choosing competitors: a rubric that cuts the list
The instinct is to monitor everyone who sells what you sell. That produces a wide, shallow dataset with a large matching burden and no clear signal. A competitor earns a slot when their price affects a buying decision you can respond to. Score each candidate on six criteria and sort.
| Criterion | The question to answer | Score 0 | Score 3 | Weight |
|---|---|---|---|---|
| Catalog overlap | What share of our top 100 revenue SKUs do they carry? | Under 10 percent | Over 60 percent | x3 |
| Substitutability | Would our buyer treat their listing as the same purchase? | Different segment, service model or lead time | Same item, same delivery promise, same condition | x3 |
| Visibility where buyers look | Do they appear above us in search results, shopping ads or the buy box? | Rarely visible in the channels we sell through | Present on nearly every comparison surface we appear on | x2 |
| Price leadership | When they move, does anyone follow? | Their moves pass unnoticed by the rest of the market | Two or more competitors reprice within a few days | x2 |
| Actionability | If they undercut us, can we do anything about it? | Contract, MAP or margin floor prevents any response | We can match, bundle, promote or change the offer | x2 |
| Data feasibility | Can their price be observed reliably and repeatedly? | Price only shown after login or in the cart | Price published on the product page in structured data | x1 |
Bands: 30 and above is a core competitor, monitored on the full SKU set at full refresh. 20 to 29 is secondary, monitored on the revenue spine only. Below 20, leave it off and re-score in a quarter.
Worked example, using the fictional demo tenant Northline Supply. Voltbay scores 3, 3, 3, 2, 3, 3 across the six criteria, which weights to 9 + 9 + 6 + 4 + 6 + 3 = 37 and lands comfortably in the core band. Harborline scores 2, 3, 1, 1, 3, 3, weighting to 6 + 9 + 2 + 2 + 6 + 3 = 28, so it is secondary and gets watched on spine SKUs only. The marketplace seller DealVault scores 1, 2, 3, 0, 1, 2, weighting to 3 + 6 + 6 + 0 + 2 + 2 = 19. Highly visible, completely unresponsive to anything you do, so it moves to a marketplace watchlist instead of the pricing list.
Competitor prices — Audio & Small appliances
| Product | You | Voltbay | Harborline | PrimeDeck | Casa & Kin | Belmont Direct | Position |
|---|---|---|---|---|---|---|---|
| Aurora H7 Noise-Cancelling HeadphonesNL-1000 | $249.00 | $254.75 | $257.46 | $263.24 | $260.16 | — | Lowest |
| Aurora H7 Noise-Cancelling Headphones — BlackNL-1007 | $275.83 | $255.57 | $295.14 | $273.40 | $261.36 | $274.54 | Above |
| Aurora H7 Noise-Cancelling Headphones — Midnight BlueNL-1014 | $275.90 | $243.97 | $299.78 | $294.42 | $280.25 | $272.53 | Above |
| Aurora H7 Noise-Cancelling Headphones — SandNL-1021 | $273.31 | $265.33 | $265.90 | $247.33 | $259.81 | $288.91 | Above |
| Aurora Buds ProNL-1028 | $149.00 | $162.74 | $169.34 | $159.11 | $167.18 | $154.28 | Lowest |
| Aurora Buds Pro — BlackNL-1035 | $165.68 | $165.93 | $187.17OOS | $173.29 | $174.95 | $177.90 | Matched |
| Aurora Buds Pro — Midnight BlueNL-1042 | $165.19 | $148.24 | $183.85 | $161.72 | $162.17 | $167.73 | Above |
Out-of-stock listings are struck through and excluded from position and repricing decisions.
Choosing SKUs when you cannot monitor everything
Nobody monitors a full catalog well. The cost is not only the subscription, it is the matching and the review. Three buckets cover almost every useful case, and the fourth rule is what keeps the set small.
Bucket 1: the revenue spine
Sort SKUs by trailing twelve-month revenue and take the set producing roughly the first 80 percent. Example: a 6,000 SKU catalog where the top 500 SKUs produce $4.2M of $6.0M in annual revenue. That is 70 percent of the money covered by 8.3 percent of the catalog, because 500 / 6,000 = 0.083. Run this on your own data before buying a plan size. It usually says the plan you need is smaller than you assumed.
Bucket 2: price-perception SKUs
The items a buyer checks before deciding whether your store is expensive: well-known commodity products, anything you advertise, and the entry item in a category people shop by price. These often carry thin margin and low revenue, and they still belong in the set, because they set the belief that governs the rest of the basket.
Bucket 3: contested SKUs
SKUs where you have lost share, lost the buy box, or seen unusual price movement this quarter. This bucket is dynamic: add to it from the weekly review, remove once the contest resolves.
The exclusion rule
- Private label and exclusives with no comparable competitor offer. A fabricated comparison is worse than no data.
- SKUs below a gross-margin-dollar floor. A product generating $180 of gross margin a year does not deserve a monitoring slot or a minute of match review.
- Discontinued products and anything with less than a quarter of sell-through remaining.
- Anything under an enforced MAP floor you cannot price below anyway. Monitor those for compliance in a separate queue, not for repricing.
Setting refresh frequency to match category velocity
Refresh frequency is not a preference, it is a measurement. Count distinct price changes per SKU over 30 days across your observed set, take the median, and set the interval below the typical gap between changes. The rule that governs everything here: any price movement shorter than your check interval is invisible to you, permanently. There is no recovering it later.
| Category behaviour | How to recognise it | Refresh that keeps up | What a daily check misses |
|---|---|---|---|
| Stable | Fewer than one price change per SKU per month, moving on cost changes and season turns. Specialty hardware, furniture, industrial supply. | Daily | Almost nothing. Paying for more refresh here is waste. |
| Moderate | One to four changes per SKU per month, clustered around weekends and promotional calendars. Home improvement, sporting goods, pet. | Twice daily | Weekend promotions that start Saturday morning and end Sunday night, which is when the discounting happens. |
| Fast | Several changes per week per SKU, competitors running automated repricing, frequent short promotions. Consumer electronics, small appliances. | Four times daily | Most promotional windows, and any price moved down in the morning and back up by evening. |
| Volatile | Intra-day movement, marketplace buy box rotation, algorithmic repricers reacting within minutes. | Hourly | Practically the whole picture. A daily number in a volatile category is a random sample presented as a fact. |
Refresh tiers map to plans: daily on Starter, twice daily on Growth, four times daily on Scale, hourly on Enterprise. Velocity varies by category inside one catalog, so measure per category rather than picking one number for the business.
Two practical notes. Faster refresh raises cost on almost every pricing model in this category, so measure before you upgrade. And refresh frequency is worthless without freshness visibility: a plan that promises four times daily but shows no per-source timestamp cannot tell you whether one specific competitor has been checked since Tuesday. Ask for the last successful check time per source, which is what the data quality view exists to show.
Setting alert thresholds that do not create noise
The design principle is one line long: one alert equals one decision a named person is expected to make. Everything else goes in a digest or stays in the dashboard. Alerting on every price change is the single most common way a monitoring program gets muted in its first month.
The arithmetic makes the point. Suppose you monitor 800 SKUs against 5 competitors at four checks a day: 800 x 5 x 4 = 16,000 observations daily. If even 2 percent of those are a change, that is 320 change events a day, and nobody reads 320 messages. Filter to undercuts deeper than 3 percent, on the 120 spine SKUs only, held for one refresh cycle, capped at one message per SKU per day, and the queue becomes clearable before lunch.
| Alert | Fires when | Starting threshold | Route and cadence | Noise it prevents |
|---|---|---|---|---|
| Undercut on a spine SKU | An in-stock competitor offer sits below our price and stays there for one full refresh cycle | 3 percent or $5.00 below, whichever is greater | Slack channel, immediate, one message per SKU per day | Penny-level repricer flapping and five-minute pricing errors |
| Deep undercut, any SKU | Any monitored competitor is far below us on any monitored SKU | 10 percent below | Slack and email, immediate, no batching | Nothing. This one is meant to interrupt you, and should stay rare |
| Competitor out of stock | A competitor that normally carries a contested SKU shows out of stock | Confirmed on two consecutive checks | Daily digest to merchandising | Stock flicker during restock and cart-level availability quirks |
| Price index drift | The revenue-weighted index for a category moves outside its band | 1.5 index points week over week | Weekly digest to pricing | Day-to-day wobble caused by basket changes rather than price changes |
| Below-MAP listing | An advertised price falls below the MAP in force for that SKU on that date | 1 percent or $1.00 below, held for the grace window | Immediate to the channel manager, with the timestamped capture attached | Rounding artefacts and feed glitches that cure themselves within the hour |
| Match confidence dropped | A confirmed match falls below the auto-accept band after a page changed | Any fall below the accept band | Daily queue to the data owner | Silent substitution of the wrong product into a live price feed |
| Source degraded | A source returns fewer successful checks than its established baseline | Below 95 percent of expected checks for that source | Immediate to the data owner | The worst failure of all: an empty dashboard that looks perfectly calm |
Thresholds are starting points. Review them at week four: if a rule has fired more than twenty times without producing an action, it is measuring something you do not act on.
Three mechanics keep these rules quiet. Persistence: a condition must survive one full refresh cycle before it fires, which removes almost all transient noise. De-duplication: cap alerts per SKU per day. Hysteresis: once fired, the condition must clear by a wider margin before it can fire again, so a price sitting on the threshold does not toggle all day.
Alerts — last 24 hours
Voltbay cut Aurora H7 by 12%
18 min ago$249.00 → $219.00. You are now $30.00 above the market low.
New MAP violation — DealVault
42 min agoIronside 20V Brushless Drill Kit listed 23.4% below MAP. Evidence captured.
Harborline feed recovered automatically
3 hours agoLayout change detected at 04:12, new extraction recipe live at 04:19. No gap in history.
PrimeDeck out of stock on 4 tracked products
5 hours agoAudio category. Repricing rules now ignore these listings.
Casa & Kin raised 9 prices overnight
8 hours agoHome & kitchen, average +4.2%. Margin headroom opened on 6 of your SKUs.
New seller detected on 3 products
11 hours agoRivermark Trading appeared on PrimeDeck. Not in your authorised reseller list.
The weekly review that turns data into decisions
Same agenda, same day, thirty to forty-five minutes. Data health is checked first, before anyone looks at a price, because reviewing prices from a feed you have not verified is how a program loses credibility in one meeting.
- 1Data health, 5 minutes. Coverage and freshness by source: anything below baseline, any match that dropped out of the accept band, any competitor whose last successful check predates the refresh interval. Fix these first, or note which numbers today are not trustworthy.
- 2Position, 10 minutes. Revenue-weighted price index by category, plus the position mix of lowest, matched and above. Compare against the same basket as last week, not whatever the basket is today.
- 3Exceptions, 15 minutes. The ten deepest undercuts on spine SKUs and the ten largest index movers. Each gets one of three outcomes: change the price, hold with a reason, investigate.
- 4Decisions and rules, 10 minutes. Record every decision with the date, the SKU, the observed competitor price and the reasoning. Update repricing rules and thresholds. Add or retire contested SKUs. If this meeting consistently overruns, the exception list is too broad and the thresholds need tightening.
Data quality — source health
Coverage
98.8%
of tracked URLs
Checks today
1,106
Auto-healed (7d)
7
▲ no data gaps
Human queue
2
awaiting review
| Source | Method | Coverage | Last full pass | Status |
|---|---|---|---|---|
| Voltbay | Structured data | 100% | 38 min ago | Healthy |
| Harborline | Domain recipe | 98.4% | 1 h 12 m ago | Self-healed Recipe regenerated 3 h ago after a layout change |
| PrimeDeck | Marketplace API | 99.6% | 22 min ago | Healthy |
| Casa & Kin | Domain recipe | 96.1% | 2 h 04 m ago | Degraded 12 URLs returning 404 — queued for re-discovery |
| Belmont Direct | Structured data | 100% | 51 min ago | Healthy |
Incident log
- Today 04:12HarborlinePrice selector returned null on 214 URLs.New extraction recipe generated and validated — live 04:19
- Today 01:50Casa & Kin12 product URLs returned 404.Re-discovery queued via GTIN lookup
- Yesterday 19:31PrimeDeckRate limit reached.Backed off and completed the cycle 22 min late
Programs that quietly die
- Twenty competitors on the list, four of them actually relevant
- Every price change generates an alert, so the channel gets muted in week three
- Matches accepted in bulk at onboarding and never reviewed again
- Nobody notices that one competitor stopped returning data in March
Programs that stick
- Five to eight scored competitors, re-scored each quarter
- Alerts tied to a named owner and a possible action, everything else in a digest
- Low-confidence matches reviewed as a standing queue, with corrections fed back
- Coverage and freshness checked first, every single week
The failure modes worth naming out loud
- Silent data decay. A retailer moves price into a JavaScript-rendered component, or renames a class. The scraper still returns HTTP 200 and now finds nothing, or finds the crossed-out reference price instead of the sale price. Nothing errors. Your index drifts and you trust it. The defence is a freshness and plausibility check on every stored price, plus an alert when a source drops below its baseline.
- Wrong matches feeding repricing. A 6-quart model matched to an 8-quart model looks like a $40 undercut, and a repricing rule obeys it. Guardrails such as a margin floor limit the damage. Match review prevents it.
- Out-of-stock prices treated as live. A competitor showing $189 on a product they cannot ship is not a $189 competitor. Filter unavailable offers out of any average before it reaches a decision.
- Comparing advertised price to your delivered price. If the competitor shows $199 plus $14 shipping and you show $209 delivered, the comparison as displayed is wrong. Pick advertised or delivered as your standard and hold it constant everywhere, including in competitor price monitoring reports that other teams read.
14 days
Free trial, no credit card
4 refresh tiers
Daily, twice daily, four times daily, hourly
0
Features gated behind a plan upgrade
Run this procedure on your own catalog
Load your SKUs, add your scored competitor list, and see matched prices with stock status and freshness on every row. 14-day free trial, no credit card.
Frequently asked questions
How do I monitor competitor prices without breaking anything?
Define the decision the data supports, score competitors and keep five to eight, choose SKUs in three buckets (revenue spine, price-perception items, contested SKUs), match products and confirm the low-confidence matches, set refresh to your category velocity, then set alerts that fire only on moves someone will act on. Review weekly, checking data health first.
How many competitors should I monitor?
Five to eight for most mid-market retailers. Beyond that, the matching and review workload grows faster than the insight, because every added competitor multiplies by your SKU count. Score candidates on catalog overlap, substitutability, visibility, price leadership, whether you can respond, and whether their price is observable at all. Keep the core band and re-score quarterly.
How often should competitor prices be checked?
Match the interval to how fast prices move in your category. Fewer than one change per SKU per month means daily is enough. One to four changes a month with weekend promotions calls for twice daily. Several changes a week calls for four times daily. Marketplace-driven intra-day movement calls for hourly. Any movement shorter than your interval is invisible permanently.
What should trigger a competitor price alert?
An undercut deeper than 3 percent or $5.00 on a revenue-spine SKU, held for one full refresh cycle, is a reasonable starting rule. Add a separate immediate alert for undercuts deeper than 10 percent. Everything else belongs in a daily or weekly digest. Cap alerts at one per SKU per day so a single flapping price cannot fill a channel.
Which products should I monitor if I cannot afford to monitor them all?
The SKUs producing roughly the first 80 percent of revenue, plus the items buyers price-check before trusting your store, plus any SKU currently contested. Exclude private label with no comparable, discontinued lines, and anything below a gross-margin-dollar floor. Writing the exclusions down matters as much as the inclusions.
Is it legal to monitor competitor prices?
Observing publicly displayed prices is ordinary competitive research and is widely practised. The legal questions concern how data is collected, such as terms of service, account access and rate of requests, rather than the fact of looking at a published price. See our guide on whether web scraping is legal. This is educational information, not legal advice.
How do I know my competitor price data is still accurate?
Check coverage and freshness before you read any price. Coverage is the share of expected checks that succeeded; freshness is the time since the last successful check per source. A source that silently returns nothing after a site redesign looks identical to a source with no news. Alerting on degradation, not just on price changes, is what catches it.
Keep reading
- Competitor price monitoring softwareThe capability behind this procedure: matched prices, stock status and freshness on every row.
- Product matching guideStep four in depth. Bad matches are the fastest way to make good data useless.
- Price index and price positioningHow to turn matched prices into a weighted index you can actually report on.
- How to choose price monitoring softwareThe scoring rubric for the tool, if you have not picked one yet.
- Data qualityCoverage, freshness and self-healing extraction, which is what step one of the weekly review reads.
- Repricing softwareWhat to do with an undercut once you have detected it, with guardrails on every rule.
Start monitoring in the next ten minutes
Connect your store, match your catalogue and get your first competitor comparison in the same session.
14 days, no credit card, cancel in one click.