How to Monitor Competitor Prices on Shopify (2026 Guide)
Every public Shopify store exposes its full product catalog at /products.json - including all prices, variants, availability, and the exact timestamp each product was published. You can fetch a competitor's complete pricing data right now in a browser, with no login or scraping required. The challenge is not accessing the data. It is monitoring it continuously, filtering the noise, and acting on the changes that actually matter.
Key Takeaways
- →Every public Shopify store exposes its full product catalog at /products.json, including prices, variants, availability, and launch timestamps - publicly accessible to anyone.
- →At 3 competitors with 200 SKUs each, manual tracking means 600 data points to check every cycle. Automated monitoring runs every 5 to 15 minutes while you focus on the business.
- →90.76% of raw price change events are sub-1% noise. Set a 5% minimum threshold before your first alert fires or you will mute the channel within a week.
- →Full catalog monitoring via products.json is almost always better than adding individual product URLs. It catches new launches and stockouts, not just price changes.
- →When an alert fires, the first question is not "should I match?" - it is "does this product overlap with my catalog and does this change threaten my revenue?"
Every public Shopify store publishes its full product catalog
Any public Shopify store has its complete product catalog available at a JSON endpoint: yourdomain.com/products.json. This is not a vulnerability or a data leak. It is intentional. Shopify uses it to power search apps, storefronts, and third-party integrations. As a result, every public Shopify merchant inadvertently publishes their full catalog, including prices and availability, to anyone who asks.
Try it on any Shopify competitor right now. Open a browser and navigate to competitor.myshopify.com/products.json (or their custom domain). You will see a JSON file listing every product they sell, every variant, the current price, the compare-at price, and whether each variant is in stock.
What products.json actually contains
- Product title and handle: the SKU name and URL slug used for their product page
- Variants: every size, color, or configuration as a separate object with its own price
- Price and compare_at_price: both the current price and the crossed-out original, so you can detect when something is on promotion without visiting the page
- Available: true or false per variant, which is how stockout detection works
- published_at: the timestamp when the product was first added to the store, which powers new product launch detection
What you do not get: internal traffic, conversion rates, revenue, or inventory quantity. But price, availability, and launch date are the three signals that matter most for competitive response.
Why manual tracking fails at scale
The spreadsheet approach works for one competitor with a small, stable catalog. It breaks down as soon as you add a second competitor, or when a competitor has more than a few dozen SKUs.
A competitor running a flash sale from 9am to 6pm and restoring prices by evening will never appear in daily manual checks. Automated monitoring with a 15-minute interval catches the window. Weekly spreadsheet reviews miss it entirely.
The value of price monitoring is not knowing what your competitors charge today. It is knowing when they change, how fast they move, and whether the pattern is strategic or reactive.
What to look for in an automated monitoring setup
Before picking a tool, decide what you actually need. The wrong setup floods you with alerts that train you to ignore them, which is worse than no monitoring at all. Four criteria separate a useful setup from one you will abandon: check frequency, noise filtering, coverage scope, and where alerts route.
Check frequency
For primary competitors in fast-moving niches (supplements, electronics accessories, skincare), check every 5 to 15 minutes. For secondary competitors or stable categories, every hour is enough. Daily checks miss flash sales entirely.
Noise filtering
Not every price change is worth an alert. Sub-1% moves are almost always rounding artifacts, currency fluctuations, or bundle price recalculations. After analyzing 468,451 price change events across 511 Shopify stores monitored on Beaconmon, we found that 90.76% of raw price change events are sub-1% moves requiring no action. Without a threshold filter, you will mute your monitoring channel within a week.
Full catalog vs. selected products
For Shopify competitors, full catalog monitoring via products.json is almost always the right choice. You want to know about new products and stockouts, not just price changes on the SKUs you already know about. Selected product monitoring (adding individual URLs) is for non-Shopify competitors where there is no feed to attach to.
Where alerts go
An alert that lands in a dashboard you check weekly is useless. Route competitor alerts to the channel your team actually monitors, usually Slack, with a daily digest as a fallback for everything that did not warrant an immediate alert.
Setting up Shopify competitor price monitoring
Beaconmon's Shopify competitor monitoring is built around the products.json feed. Add a competitor domain once and Beaconmon auto-discovers the product catalog. No individual product URLs needed.
- Go to Monitors and click "Add competitor." Paste the competitor's Shopify domain.
- Beaconmon detects the Shopify platform and attaches to the products.json feed automatically, pulling the full product catalog on the first check.
- Set your check interval. Five minutes is the default for competitor monitors on the Growth plan. Fifteen minutes works well for secondary competitors.
- Configure an alert threshold. A 5% price change is a reasonable floor for most niches. Below that and you are mostly seeing noise.
- Connect Slack or email. Enable the Intelligence Digest for a daily summary of all competitor moves instead of per-change instant alerts.
Adding a Shopify competitor domain once covers their entire catalog automatically via products.json. You never need to add individual product URLs for a Shopify store.
For non-Shopify competitors, Beaconmon falls back to CSS selector price targeting. You add the specific product page URL and point it at the price element on the page. Beaconmon extracts the value on each check and alerts when it changes.
What to do when an alert fires
Receiving an alert is the beginning, not the end. A price drop does not automatically mean you should match it. A new product in a competitor's catalog does not automatically mean you need a competing SKU.
Before reacting, ask: Is this product in my catalog? By how much did the price change? Is this an isolated move or part of a pattern? Is this competitor targeting the same customers as me, or a different segment?
The answers determine your response. For a structured way to work through it, see the ignore, match, counter, leapfrog framework we use to classify every competitor move in Beaconmon's Decision Layer.
- Every public Shopify store publishes its full product catalog at /products.json, including prices, availability, and publish dates.
- Manual tracking breaks down at 3 or more competitors with large catalogs. Automated monitoring runs checks every 5 to 15 minutes while you focus elsewhere.
- Set a minimum price change threshold (5% is a good start) to avoid alert fatigue from rounding artifacts and minor adjustments.
- Route alerts to Slack and enable a daily Intelligence Digest for lower-priority competitors.
- When an alert fires, evaluate before you react. Match, counter, or leapfrog based on the move's actual significance, not reflex.
Frequently asked questions
Can I access a Shopify competitor's product prices for free?
Yes. Every public Shopify store exposes its full product catalog at domain.com/products.json. The file includes all products, variants, prices, compare-at prices, and availability. You can fetch it manually in a browser right now. The limitation is that you get no history, no alerts, and no diffs without tooling on top.
How often does products.json update?
Near-instantly. When a Shopify merchant changes a price or publishes a new product, the products.json feed reflects it within seconds. Checking once daily leaves a 24-hour blind spot. Most monitoring setups run every 5 to 15 minutes.
What is the difference between price monitoring and competitor intelligence?
Price monitoring tells you that a price changed. Competitor intelligence tells you what it means. A good system classifies the change (significant or noise), checks catalog overlap (does this competitor sell what you sell?), and suggests a response. Price tracking is one input into competitor intelligence, not a substitute for it.
Do I need to add every competitor product URL individually?
For Shopify competitors, no. One monitor on the competitor domain covers their entire product catalog via products.json. You add the domain once, Beaconmon finds the feed automatically, and you get alerts across their full catalog. For non-Shopify competitors you do need to add individual product URLs.
What if a competitor blocks access to their products.json?
Most Shopify stores leave products.json public because it powers search apps and third-party integrations. When a store does block it, Beaconmon falls back to CSS selector targeting on individual product pages. You add the specific product URLs you care about and Beaconmon extracts the price element directly from the HTML on each check.
Haimanot built Beaconmon after watching Shopify merchants lose sales to competitors they never saw coming. He writes about competitive intelligence, ecommerce pricing strategy, and how merchants can turn competitor data into decisions that protect margin.