[{"data":1,"prerenderedAt":98},["ShallowReactive",2],{"$fvZr6vA8W7Y_2fqoMU4iqhnRCmYQs4OVpOkTbTo-N20k":3},{"title":4,"date":5,"dateModified":6,"datePublished":7,"dateModifiedISO":7,"image":8,"content":9,"faq":10,"metaTitle":30,"metaDescription":31,"author":32,"authorBio":33,"authorLinkedin":33,"authorTitle":33,"authorPhoto":34,"lastReviewed":33,"researchBasis":33,"category":35,"readingTime":36,"related":37,"prev":55,"next":58,"toc":61,"takeaways":97},"The 30-Day Lowest Price Rule: What EU Retailers Actually Need to Prove a Discount (2026)","12 Aug 2026","12 AUG 2026","2026-08-12","/img/news/omnibus-directive-price-history-compliance-2026.png","\u003Ch2 id=\"the-30-day-lowest-price-rule-what-eu-retailers-actually-need\">The 30-Day Lowest Price Rule: What EU Retailers Actually Need to Prove a Discount\u003C/h2>\n\u003Cp>Your marketing team wants to run a &quot;-40%&quot; banner on Friday. Legally, that number is only allowed if you can prove what the price actually was for the previous 30 days. Not what you&#39;d like it to have been. Not the RRP on the box. The genuine lowest price the product sold for in your own store over the prior month.\u003C/p>\n\u003Cp>Most retailers treat the EU&#39;s Omnibus Directive as a legal question for the compliance team. It isn&#39;t. It&#39;s a data-retention question, and if you can&#39;t answer it with records, no amount of legal review will save the campaign. You cannot display a 30-day low you never recorded.\u003C/p>\n\u003Cp>This guide explains what the rule requires after the September 2024 ALDI SÜD ruling, why it quietly became a data problem, and how to build the price history — your own and your competitors&#39; — that keeps discount claims defensible.\u003C/p>\n\u003Caside class=\"article__usecase-card\">\u003Cdiv class=\"article__usecase-label\">Related use case\u003C/div>\u003Ch3 class=\"article__usecase-title\">Competitor price tracking\u003C/h3>\u003Cp class=\"article__usecase-blurb\">Automated price monitoring across marketplaces. 97% accuracy, no per-SKU fees.\u003C/p>\u003Ca class=\"article__usecase-link\" href=\"/use-cases/competitor-price-tracking\">See how it works →\u003C/a>\u003C/aside>\u003Ch2 id=\"what-the-omnibus-directive-actually-requires\">What the Omnibus Directive Actually Requires\u003C/h2>\n\u003Cp>The \u003Ca href=\"https://commission.europa.eu/law/law-topic/consumer-protection-law/consumer-law-rules/omnibus-directive_en\">Omnibus Directive\u003C/a> amended the EU&#39;s Price Indication Directive and has been in force across member states since May 2022. The core rule is deceptively simple: whenever you announce a price reduction, you must also state the prior price, and that prior price must be the \u003Cem>lowest\u003C/em> price you applied during the 30 days before the reduction.\u003C/p>\n\u003Cp>The intent is to kill &quot;fake discounts&quot; — the practice of inflating a reference price for a few days so a permanent &quot;sale&quot; looks like a saving. Before Omnibus, a retailer could set a &quot;was €129&quot; tag it never seriously sold at, then run &quot;now €79&quot; indefinitely. The directive makes that illegal by anchoring the reference to real, recent selling history.\u003C/p>\n\u003Cp>A few specifics that trip teams up:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>The reference is the lowest, not the last.\u003C/strong> If the item bounced between €99 and €89 over the month, your legal reference is €89 — even if it was sitting at €99 the day before the sale.\u003C/li>\n\u003Cli>\u003Cstrong>It applies to every announced reduction\u003C/strong>, including percentage claims, strike-through prices, and &quot;lowest price ever&quot; style messaging.\u003C/li>\n\u003Cli>\u003Cstrong>Progressive discounts have a carve-out.\u003C/strong> If you increase a discount continuously during a campaign, you may keep referencing the pre-campaign price. Stop and restart, and the 30-day clock re-applies.\u003C/li>\n\u003Cli>\u003Cstrong>Loyalty and personalised prices\u003C/strong> are treated differently by different national regulators — check your specific market&#39;s guidance.\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"the-aldi-sd-ruling-made-the-rule-sharper\">The ALDI SÜD Ruling Made the Rule Sharper\u003C/h2>\n\u003Cp>For two years, retailers argued about \u003Cem>how\u003C/em> the reference price should be calculated when a percentage discount was shown against a strike-through price. ALDI SÜD&#39;s German stores advertised products with a &quot;lowest price in 30 days&quot; figure but calculated the headline percentage against a higher, more recent price.\u003C/p>\n\u003Cp>In September 2024, the Court of Justice of the EU (Case C-330/23) settled it: \u003Cstrong>the advertised reduction must be calculated on the lowest price from the prior 30 days\u003C/strong>, not on a more recent, higher price. Showing the 30-day low as a footnote while computing the percentage off a different number does not comply.\u003C/p>\n\u003Cp>The practical takeaway is uncomfortable for a lot of promotional calendars. Your percentage, your strike-through, and your &quot;you save €X&quot; all have to trace back to the same genuine 30-day low. And &quot;trace back to&quot; means you need the data to prove it if a regulator or competitor challenges you.\u003C/p>\n\u003Caside class=\"article__inline-cta\">\u003Cp class=\"article__inline-cta-text\">Try ScrapeWise on your own URL. \u003Cstrong>Your first 5 requests are free.\u003C/strong>\u003C/p>\u003Ca class=\"article__inline-cta-btn\" href=\"https://portal.scrapewise.ai/login\" target=\"_blank\" rel=\"noopener\">Start Free →\u003C/a>\u003C/aside>\u003Ch2 id=\"why-this-is-a-data-problem-not-a-legal-one\">Why This Is a Data Problem, Not a Legal One\u003C/h2>\n\u003Cp>Here&#39;s the part legal reviews miss. Compliance with the 30-day rule depends entirely on having a reliable, timestamped record of your own prices — and, increasingly, your competitors&#39;.\u003C/p>\n\u003Cp>Consider what you actually need to be able to produce on demand:\u003C/p>\n\u003Col>\n\u003Cli>\u003Cstrong>Your own price history, per SKU, per market, going back at least 30 days\u003C/strong> — with enough granularity to catch intraday changes if you reprice dynamically.\u003C/li>\n\u003Cli>\u003Cstrong>Proof the reference price is the genuine low\u003C/strong>, not a value someone typed into the CMS the morning of the sale.\u003C/li>\n\u003Cli>\u003Cstrong>The same records for localised variants\u003C/strong> — the .de, .fr and .fi versions of the same product may have diverged.\u003C/li>\n\u003C/ol>\n\u003Cp>If your prices live only in the current state of your e-commerce platform — where each change overwrites the last — you have no history to prove anything. Most platforms store the \u003Cem>current\u003C/em> price beautifully and the \u003Cem>past\u003C/em> price nowhere. That&#39;s the gap.\u003C/p>\n\u003Cp>There&#39;s a second, less obvious exposure: \u003Cstrong>your competitors&#39; claims.\u003C/strong> Omnibus applies to them too. A rival running an inflated &quot;-50%&quot; that never held for 30 days is making an illegal claim you can report — but only if you captured their price history to prove the reference never existed. Competitive price history turns a vague &quot;that looks like a fake discount&quot; into evidence.\u003C/p>\n\u003Ch2 id=\"how-to-build-the-price-history-you-need\">How to Build the Price History You Need\u003C/h2>\n\u003Cp>There are three layers, and most retailers need all three.\u003C/p>\n\u003Ch3 id=\"layer-1-capture-and-retain-your-own-prices\">Layer 1: Capture and retain your own prices\u003C/h3>\n\u003Cp>Stop overwriting. Every price change should be written to an append-only log — SKU, market, currency, old price, new price, timestamp. This is a small engineering task on your own systems, but it is the foundation. Without it, you are relying on memory and screenshots.\u003C/p>\n\u003Cp>If you reprice dynamically, log every change, not a daily snapshot. A daily snapshot can miss a two-hour dip that becomes your legal 30-day low.\u003C/p>\n\u003Ch3 id=\"layer-2-monitor-competitor-price-history\">Layer 2: Monitor competitor price history\u003C/h3>\n\u003Cp>You cannot see inside a competitor&#39;s database, so you reconstruct their history by observing their storefront on a schedule. This is a \u003Ca href=\"https://scrapewise.ai/blogs/price-scraping-ecommerce-guide-2026\">price scraping\u003C/a> problem: collect each competitor SKU&#39;s displayed price at a regular interval, store it with a timestamp, and you build the same append-only history for them that you keep for yourself.\u003C/p>\n\u003Cp>The frequency matters. Monitoring once a week will not reliably catch a competitor&#39;s genuine 30-day low, and it certainly won&#39;t catch a two-day fake-reference spike. Daily is the practical minimum; for fast-moving categories, twice daily. The technical challenge is that this data has to be complete and accurate over long windows — a scraper that silently fails for four days leaves a hole exactly where the low might have been. That&#39;s where \u003Ca href=\"https://scrapewise.ai/blogs/self-healing-scraper-infrastructure-2026\">self-healing scraper infrastructure\u003C/a> earns its keep: compliance evidence with gaps is not evidence.\u003C/p>\n\u003Ch3 id=\"layer-3-make-the-history-queryable\">Layer 3: Make the history queryable\u003C/h3>\n\u003Cp>Raw logs are not proof until someone can query them. Structure the data so a category manager can answer &quot;what was the lowest price for SKU X between date A and date B&quot; in seconds, and so the answer is auditable. This is the same \u003Ca href=\"https://scrapewise.ai/blogs/competitive-pricing-database-mid-market-retailers-2026\">competitive pricing database\u003C/a> most teams build for margin decisions — the compliance use case comes almost for free once the history exists.\u003C/p>\n\u003Ch2 id=\"quick-reference-is-your-discount-compliant\">Quick Reference: Is Your Discount Compliant?\u003C/h2>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Check\u003C/th>\n\u003Cth>What &quot;compliant&quot; looks like\u003C/th>\n\u003Cth>Where the data comes from\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>Reference price\u003C/td>\n\u003Ctd>The genuine lowest price in the prior 30 days\u003C/td>\n\u003Ctd>Your own append-only price log\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Percentage claim\u003C/td>\n\u003Ctd>Calculated off that 30-day low (post-ALDI SÜD)\u003C/td>\n\u003Ctd>Same log, queried per SKU/market\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Per-market accuracy\u003C/td>\n\u003Ctd>Each localised store checked separately\u003C/td>\n\u003Ctd>Logs segmented by domain/currency\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Intraday dips\u003C/td>\n\u003Ctd>Captured, not averaged away\u003C/td>\n\u003Ctd>Change-level logging, not daily snapshots\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Competitor claims\u003C/td>\n\u003Ctd>Their reference verifiable against real history\u003C/td>\n\u003Ctd>Scheduled competitor price monitoring\u003C/td>\n\u003C/tr>\n\u003C/tbody>\u003C/table>\n\u003Ch2 id=\"where-scrapewise-fits-and-where-it-doesn39t\">Where ScrapeWise Fits — and Where It Doesn&#39;t\u003C/h2>\n\u003Cp>ScrapeWise handles Layer 2 and feeds Layer 3: we collect competitor price history on a schedule from any storefront — including \u003Ca href=\"https://scrapewise.ai/blogs/how-to-scrape-javascript-ecommerce-websites-2026\">JavaScript-heavy sites\u003C/a> and localised domains — and deliver it as clean, timestamped, queryable data. That gives you the competitor 30-day lows you need to benchmark against and to challenge illegal claims.\u003C/p>\n\u003Cp>\u003Cstrong>Honest limitations:\u003C/strong> ScrapeWise does not log \u003Cem>your own\u003C/em> internal prices — Layer 1 is a change you make in your own systems, and it&#39;s the one you must not skip. We&#39;re also not a legal service; we provide the price evidence, not the compliance sign-off. And scoping still matters here — which competitors, which markets, and how often they&#39;re checked is a conversation worth having up front, even though the billing itself is simply pay-as-you-go per delivered page.\u003C/p>\n\u003Ch2 id=\"conclusion\">Conclusion\u003C/h2>\n\u003Cp>The 30-day lowest price rule looks like a legal constraint and behaves like a data requirement. The retailers who run discounts confidently in 2026 aren&#39;t the ones with the best lawyers — they&#39;re the ones who kept the history. Log your own prices append-only, monitor your competitors&#39; prices on a reliable schedule, and make both queryable. Do that, and every &quot;-40%&quot; banner comes with its own proof attached.\u003C/p>\n\u003Cp>If you want the competitor side of that history collected and delivered clean, \u003Ca href=\"https://scrapewise.ai/use-cases/competitor-price-tracking\">that&#39;s what we do\u003C/a> — get a quote scoped to your markets and competitor set.\u003C/p>\n",{"title":11,"description":12,"badge":13,"benefits":14},"Frequently asked questions","Omnibus Directive 30-day lowest price rule — compliance and price history questions","FAQ",[15,18,21,24,27],{"title":16,"description":17},"What is the 30-day lowest price rule?","Under the EU Omnibus Directive, whenever you announce a price reduction you must display the prior price — and that prior price must be the lowest price the product was sold at during the 30 days before the discount. It exists to stop retailers inflating a reference price to make a permanent sale look like a genuine saving.",{"title":19,"description":20},"What did the ALDI SÜD ruling change?","In September 2024 the Court of Justice of the EU (Case C-330/23) confirmed that an advertised percentage reduction must be calculated on the lowest price from the prior 30 days, not on a more recent higher price. Showing the 30-day low only as a footnote while computing the discount off a different number does not comply.",{"title":22,"description":23},"Do I need to record my own price history to comply?","Yes. Compliance depends on having a timestamped, append-only record of your own prices per SKU and per market going back at least 30 days. If your e-commerce platform only stores the current price and overwrites past prices, you have no evidence to prove the reference price is the genuine 30-day low.",{"title":25,"description":26},"How does competitor price monitoring help with Omnibus compliance?","Omnibus applies to your competitors too. By capturing competitor prices on a daily schedule and storing them with timestamps, you can verify whether a rival's advertised reference price actually held for 30 days. That turns a suspicion of a fake discount into reportable evidence, and it benchmarks your own reference lows.",{"title":28,"description":29},"How often do I need to collect prices to catch the 30-day low?","Daily is the practical minimum. Weekly monitoring will miss short-lived dips that can legally become the 30-day low, and it won't catch a two-day inflated-reference spike. If you or your competitors reprice dynamically, you need change-level or twice-daily capture rather than a single daily snapshot.","Omnibus 30-Day Lowest Price Rule: What to Prove (2026)","The Omnibus Directive requires the lowest price of the prior 30 days on any discount. After the ALDI SÜD ruling, how retailers prove compliance.","Siim Brazier",null,"/img/team/siim.jpg","Pricing",7,[38,44,49],{"slug":39,"title":40,"image":41,"date":42,"category":35,"excerpt":43},"competitor-price-monitoring-case-study-2026","Competitor Price Monitoring Case Study: 100,000 SKUs, 88% Fewer Requests","/img/news/competitor-price-monitoring-case-study-2026.png","30 Sep 2026","How we set up daily competitor price monitoring for a retailer in two EU markets: API first, HTML last, and 88% fewer requests per day.",{"slug":45,"title":46,"image":47,"date":42,"category":35,"excerpt":48},"price-per-unit-comparison-pack-sizes-2026","Price per Unit: How to Compare Competitor Prices Across Pack Sizes","/img/news/price-per-unit-comparison-pack-sizes-2026.png","A yarn retailer's competitors sell 25 g, 50 g, 100 g and 226 g balls. How we turned their competitor links into one comparable price per 50 g.",{"slug":50,"title":51,"image":52,"date":53,"category":35,"excerpt":54},"price2spy-vs-wiser-price-monitoring-2026","Price2Spy vs Wiser: Which Price Monitoring Tool Should You Choose in 2026?","/img/news/price2spy-vs-wiser-price-monitoring-2026.png","24 Sep 2026","Price2Spy vs Wiser in 2026: which has the more comprehensive feature set, why refresh speed is worthless without match accuracy, and the 50-SKU test to run.",{"slug":56,"title":57},"2captcha-vs-capsolver-vs-capmonster-web-scraping-2026","2Captcha vs Capsolver vs CapMonster: Best CAPTCHA Solver for Scraping [2026]",{"slug":59,"title":60},"nordic-price-monitoring-prisjakt-pricerunner-2026","Price Monitoring in the Nordics: Prisjakt, PriceRunner, and Why Standard Tools Break",[62,66,69,72,75,78,82,85,88,91,94],{"level":63,"text":64,"id":65},2,"The 30-Day Lowest Price Rule: What EU Retailers Actually Need to Prove a Discount","the-30-day-lowest-price-rule-what-eu-retailers-actually-need",{"level":63,"text":67,"id":68},"What the Omnibus Directive Actually Requires","what-the-omnibus-directive-actually-requires",{"level":63,"text":70,"id":71},"The ALDI SÜD Ruling Made the Rule Sharper","the-aldi-sd-ruling-made-the-rule-sharper",{"level":63,"text":73,"id":74},"Why This Is a Data Problem, Not a Legal One","why-this-is-a-data-problem-not-a-legal-one",{"level":63,"text":76,"id":77},"How to Build the Price History You Need","how-to-build-the-price-history-you-need",{"level":79,"text":80,"id":81},3,"Layer 1: Capture and retain your own prices","layer-1-capture-and-retain-your-own-prices",{"level":79,"text":83,"id":84},"Layer 2: Monitor competitor price history","layer-2-monitor-competitor-price-history",{"level":79,"text":86,"id":87},"Layer 3: Make the history queryable","layer-3-make-the-history-queryable",{"level":63,"text":89,"id":90},"Quick Reference: Is Your Discount Compliant?","quick-reference-is-your-discount-compliant",{"level":63,"text":92,"id":93},"Where ScrapeWise Fits — and Where It Doesn&#39;t","where-scrapewise-fits-and-where-it-doesn39t",{"level":63,"text":95,"id":96},"Conclusion","conclusion",[],1790842418810]