Every price monitoring project starts with the same question: how often do we need to check? Check too rarely and you miss the changes you are paying to see. Check too often and you spend money recording prices that have not moved.
The answer depends on how fast prices actually change, and that has been measured carefully. Economists have spent two decades scraping online prices at scale to study inflation, and their papers contain the most reliable figures available on how often retailers reprice, how that has changed, and how the way you sample distorts what you see.
This study brings those figures together. Every number below comes from the paper’s own text or tables; the sources are listed at the end.
Key takeaways
- Online prices change faster than they used to. At large US multi-channel retailers, the monthly frequency of regular price changes rose from 15.4% in 2008-2010 to 27.4% in 2014-2017. The typical regular price went from lasting about six and a half months to under four.
- Marketplaces are a different world. On a set of Amazon best-sellers tracked for six weeks, only 13% of products kept the same Buy Box price, and half changed more than 14 times.
- The 2022-2023 inflation surge more than doubled the frequency of online price changes across sectors and countries, after years of stable behaviour.
- Daily and weekly checks see almost the same changes at retailers. Monthly checks miss many of them, and averaging prices over a week invents small changes that never happened.
- The right cadence depends on the channel: weekly to daily for retailer sites, hourly or faster for contested marketplace listings.
How price changes are measured
Two measures appear throughout the research.
- Frequency is the share of observations in which a product’s price differs from the previous observation. A monthly frequency of 20% means one product in five changes price in a typical month.
- Implied duration converts frequency into how long a price typically lasts. Most papers use the formula -1/ln(1 - f), which assumes a constant chance of a change each period; some use the simpler 1/f. The two give different numbers for the same frequency, so compare durations only within one paper.
The research also distinguishes posted prices, which include temporary sales, from regular prices, which filter sales out. A product that drops for a weekend sale and returns to its old price counts as two changes in posted prices and none in regular prices.
What retailer prices do
The most detailed evidence comes from Alberto Cavallo’s work at MIT and the Billion Prices Project, which by 2010 was collecting five million prices a day from more than 300 retailers in 50 countries. His 2018 study of large US multi-channel retailers, using daily data aggregated to monthly frequencies, shows how much faster pricing became over a decade:
| Period | Monthly frequency of regular price changes | Implied duration | Price increases | Price decreases | Average size of a change |
|---|---|---|---|---|---|
| 2008-2010 | 15.4% | 6.5 months | 6.9% | 8.9% | 17.5% |
| 2011-2013 | 22.4% | 4.5 months | 10.3% | 12.1% | 16.2% |
| 2014-2017 | 27.4% | 3.7 months | 12.5% | 15.0% | 15.0% |
Source: Cavallo (2018), “More Amazon Effects”, Table 1. Durations use 1/f.
Including sales, the monthly frequency rose from 21% to over 31% over the same period. Changes became more frequent and slightly smaller.
The speed-up was not even across categories. The duration of regular prices for recreation and electronics fell from 13.1 to 5.5 months, and for furnishings and household goods from 14.2 to 5.9 months. Food and non-alcoholic beverages stayed flat at 6.4 months. The categories that changed fastest are the ones where online competition grew most.
Competition shows up at the product level too. For about 50,000 Walmart products tracked daily from 2016 to 2018, those also sold on Amazon had prices that lasted around 20% less time than the rest. In clothing and footwear, the gap was much larger.
Online and offline prices move together more than many assume. In a separate study of 56 large multi-channel retailers in 10 countries, the online price matched the in-store price 72% of the time, and the weekly frequency of price changes online (7.6%) was not significantly different from offline (6.8%). For retailers that sell both ways, the website is usually a reliable view of the shelf. Our guide to detecting geo-personalized and dynamic pricing covers the cases where it is not.
What marketplace prices do
Marketplaces are where the fastest pricing happens. A 2016 study by researchers at Northeastern University tracked 1,641 Amazon best-sellers, recording the top 20 sellers of each product every 25 minutes. Over six weeks:
| Measure | Result |
|---|---|
| Products whose Buy Box price never changed | 13% |
| Products with more than 14 Buy Box price changes | 50% |
| Products whose Buy Box winner never changed | 31% |
| Sellers detected using algorithmic pricing | 543, or 2.4% of all sellers |
| Share of sellers with 20+ price changes on a product that were algorithmic | 38% |
Source: Chen, Mislove and Wilson (2016).
Some products saw hundreds of Buy Box changes in six weeks, many more than one a day, while most individual sellers never changed their price at all. A small group of algorithmic sellers drives most of the movement. Products with algorithmic sellers almost never kept a static Buy Box price (2%), against 20% of products without them.
Repricing tools are now common well beyond Amazon. In the European Commission’s 2017 e-commerce inquiry, 53% of retailers said they tracked competitors’ online prices. Two thirds of those used software to do it, and 78% of the retailers using software then adjusted their own prices in response. For how this plays out in practice, see our guide to building a real-time competitive price feed.
What happened during the inflation surge
Price-setting is not fixed. Using daily scraped prices from the US and several European countries, Cavallo, Lippi and Miyahara found that the frequency of online price changes was broadly stable until 2021 and then “increased significantly in 2022 and 2023, more than doubling across all sectors and countries.”
The starting point was slow. Before the surge, in 2019-2021, food and beverage retailers changed their regular prices about 1.9 times a year on average, from 0.8 times in the UK to 2.3 in the Netherlands.
The same pattern appears in official consumer price data, which mostly covers physical stores:
- United States: the monthly frequency of price changes excluding sales rose from around 10% before the pandemic to a peak slightly above 20% in early 2022, and was back to around 13% in 2024 (Federal Reserve Board, 2025).
- Euro area: the monthly frequency rose from an average of 8% in 2010-2019 to 12% in 2022, then fell back in 2023 and 2024 (Banca d’Italia, 2026). The same study found that online prices in the German data tend to change more often than offline ones.
A monitoring cadence that was enough in 2019 was not enough in 2022. Cadence should be revisited when the market changes, not set once.
Online against the offline benchmark
For context, the classic studies of US consumer price data put the median duration of a price at 4.3 months including sales and 5.5 months excluding them (Bils and Klenow, 2004). For regular prices only, the median was 8 to 11 months over 1988-2005 (Nakamura and Steinsson, 2008).
Against that benchmark, the 3.7-month regular-price duration at large US online retailers in 2014-2017 is roughly two to three times faster. The two use different data and methods, so the comparison is approximate, but the direction is clear.
What this means for monitoring cadence
The most useful finding for monitoring teams comes from Cavallo’s 2018 study comparing the same scraped data sampled at different intervals:
| Sampling | US implied duration | What happens |
|---|---|---|
| Daily | 2.68 months | Baseline |
| Weekly | 2.91 months | Almost identical: “few products have more than one price change per week” |
| Monthly | 4.7 months | ”Many price changes within the month are not observed” |
| Weekly averages | About half the duration of weekly prices | Averaging creates small, false changes |
Source: Cavallo (2018), “Scraped Data and Sticky Prices”, published version.
Four practical rules follow.
- For retailer websites, weekly captures most changes and daily captures nearly all of them. Going from weekly to daily makes little difference to what you measure. Going from weekly to monthly makes a large one.
- Never average prices before measuring changes. Weekly averages halve both the measured duration and the measured size of changes, because a single price cut part-way through a week becomes two smaller steps. Store every observed price.
- For marketplaces, minutes and hours matter. Contested Buy Box prices can change several times a day. The Northeastern team settled on 25 minutes after finding that one-minute crawling mostly picked up brief flickers from the marketplace’s own systems rather than real repricing.
- Record availability as well as price. In Cavallo’s daily data, 22% to 37% of daily observations were missing because a product was out of stock or the page could not be collected, and stockouts themselves turned out to be a useful signal: they surged during the pandemic, from around 14% to over 35% in the US. A gap in your data is information, not just noise.
| Channel | Suggested starting cadence |
|---|---|
| Retailer websites, stable categories (groceries, household) | Weekly, daily around promotions |
| Retailer websites, fast categories (electronics, home goods) | Daily |
| Marketplace listings with several sellers | Hourly, faster for best-sellers |
| Travel fares and hotel rates | Daily per departure or stay date, more often close to the date |
Measuring it on your own data
If you already collect prices, you can measure your own market’s volatility instead of relying on averages from other people’s samples. The function below computes frequency, implied duration, the share of increases and the median size of a change from daily observations:
import math
from collections import defaultdict
def change_stats(observations, min_change=0.0):
"""observations: (product_id, day, price) tuples from a daily scrape.
Compares each price with the product's previous observed price on the day
before. Gaps are skipped, not filled: a price carried across a missing day
would hide changes, and an interpolated one would invent small ones.
"""
by_product = defaultdict(dict)
for product, day, price in observations:
by_product[product][day] = price
pairs = changes = increases = 0
sizes = []
for prices in by_product.values():
for day in sorted(prices):
previous = prices.get(day - 1)
if previous is None:
continue
pairs += 1
change = (prices[day] - previous) / previous
if abs(change) > min_change:
changes += 1
increases += change > 0
sizes.append(abs(change))
frequency = changes / pairs if pairs else 0.0
sizes.sort()
return {
"daily_pairs": pairs,
"frequency": round(frequency, 4),
# Mean days between changes if each day were an independent draw.
"implied_duration_days": round(-1 / math.log(1 - frequency), 1) if 0 < frequency < 1 else None,
"share_increases": round(increases / changes, 3) if changes else None,
"median_abs_change": round(sizes[len(sizes) // 2], 4) if sizes else None,
}
It compares each price only with the price on the day before. A gap is skipped rather than filled, because carrying the last price forward hides changes and filling the gap with an estimate invents small ones. That is the same distortion the research found in averaged data.
A small example:
from price_changes import change_stats
observations = [
("sku-1", 1, 19.99), ("sku-1", 2, 19.99), ("sku-1", 3, 17.99), ("sku-1", 4, 17.99),
("sku-2", 1, 5.49), ("sku-2", 2, 5.49), ("sku-2", 4, 5.79), ("sku-2", 5, 5.79),
("sku-3", 1, 249.00), ("sku-3", 2, 239.00), ("sku-3", 3, 249.00), ("sku-3", 4, 249.00),
]
print(change_stats(observations))
{'daily_pairs': 8, 'frequency': 0.375, 'implied_duration_days': 2.1, 'share_increases': 0.333, 'median_abs_change': 0.0418}
The second product’s price rose from 5.49 to 5.79 across a missing day, so that change is not counted. With real data the missing days are the out-of-stock and failed-collection days, and you should report how many there were alongside the result. Collecting cleanly in the first place helps: a missing observation caused by a block looks the same as one caused by a stockout. Our guide to the cost per clean record covers how failure rates feed into monitoring budgets.
Run the function per category and per competitor. A category whose implied duration is a few days needs daily or faster collection. One measured in months can be checked weekly without losing anything.
FAQ
How often do online prices change?
At large US multi-channel retailers, about 27% of products changed their regular price in a typical month in 2014-2017, so a regular price lasted about four months. Marketplace prices change much faster: half of the Amazon best-sellers in one study changed their Buy Box price more than 14 times in six weeks.
Is daily price monitoring necessary?
For most retailer websites, weekly monitoring captures most changes, and research comparing daily and weekly sampling found almost the same results. Daily monitoring matters for fast categories, promotions and marketplaces. Monthly monitoring misses many changes.
Do online prices change more often than in-store prices?
At retailers that sell both online and in stores, prices are identical about 72% of the time and change at similar rates. Online-only competition, especially on marketplaces, is where prices change most often.
Did inflation change how often prices change?
Yes. The frequency of online price changes more than doubled in 2022 and 2023, and official price data in the US and euro area show similar rises, followed by a partial return toward earlier levels.
The bottom line
Online prices change faster than they did a decade ago, much faster on marketplaces than on retailer sites, and faster again when inflation rises. The research gives a clear rule for monitoring: at retailer sites, weekly collection captures most of what daily collection does, monthly collection misses a great deal, and averaged data distorts the picture. Measure your own categories, set the cadence by how fast they actually move, and revisit it when the market changes.
Sources and references
- Cavallo, A. (2018). More Amazon Effects: Online Competition and Pricing Behaviors. NBER Working Paper 25138.
- Cavallo, A. (2018). Scraped Data and Sticky Prices. Review of Economics and Statistics 100(1).
- Cavallo, A. (2017). Are Online and Offline Prices Similar? Evidence from Large Multi-Channel Retailers. American Economic Review 107(1).
- Cavallo, A. and Rigobon, R. (2016). The Billion Prices Project: Using Online Prices for Measurement and Research. NBER Working Paper 22111, published in the Journal of Economic Perspectives 30(2).
- Cavallo, A., Lippi, F. and Miyahara, K. (2023). Large Shocks Travel Fast. NBER Working Paper 31659.
- Cavallo, A. and Kryvtsov, O. (2023). What Can Stockouts Tell Us About Inflation? Evidence from Online Micro Data. NBER Working Paper 29209.
- Chen, L., Mislove, A. and Wilson, C. (2016). An Empirical Analysis of Algorithmic Pricing on Amazon Marketplace. WWW 2016.
- European Commission (2017). Final report on the E-commerce Sector Inquiry and staff working document.
- Montag, H. and Villar, D. (2025). Post-Pandemic Price Flexibility in the U.S. Federal Reserve Board, FEDS 2025-024.
- Gautier, E. et al. (2026). Consumer price stickiness in the euro area during an inflation surge. Banca d’Italia, Temi di discussione 1524.
- Bils, M. and Klenow, P. (2004). Some Evidence on the Importance of Sticky Prices. Journal of Political Economy 112(5).
- Nakamura, E. and Steinsson, J. (2008). Five Facts About Prices: A Reevaluation of Menu Cost Models. Quarterly Journal of Economics 123(4).
Several of the Cavallo studies use data from PriceStats, which he co-founded; the papers disclose this.