[{"data":1,"prerenderedAt":92},["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":54,"next":57,"toc":58,"takeaways":91},"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","\u003Ch1>The 30-Day Lowest Price Rule: What EU Retailers Actually Need to Prove a Discount\u003C/h1>\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\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\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=\"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\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\u003Caside class=\"article__inline-cta\">\u003Cp class=\"article__inline-cta-text\">Try ScrapeWise on your own URL — \u003Cstrong>extract in 24s\u003C/strong>, no credit card.\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=\"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/scrape-javascript-heavy-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 there&#39;s no self-serve free tier for this — coverage is scoped to your competitor set and markets, so it&#39;s a &quot;get a quote&quot; conversation, not a credit-card signup.\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 Retailers Must Prove (2026)","The Omnibus Directive requires the lowest price from the prior 30 days on any discount. After the ALDI SÜD ruling, here's how retailers actually prove compliant price reductions.","Siim Brazier",null,"/img/team/siim.jpg","Pricing",7,[38,43,48],{"slug":39,"title":40,"image":41,"date":5,"category":35,"excerpt":42},"building-materials-price-monitoring-diy-trade-2026","Building Materials Price Monitoring: Why DIY and Trade Catalogs Break Standard Tools","/img/news/building-materials-price-monitoring-diy-trade-2026.png","Building materials and DIY pricing breaks standard tools: per-metre units, cut-to-length, login-gated trade tiers, and quantity breaks. Here's why — and how to monitor prices that aren't per-item.",{"slug":44,"title":45,"image":46,"date":5,"category":35,"excerpt":47},"nordic-price-monitoring-prisjakt-pricerunner-2026","Price Monitoring in the Nordics: Prisjakt, PriceRunner, and Why Standard Tools Break","/img/news/nordic-price-monitoring-prisjakt-pricerunner-2026.png","Nordic price monitoring means SEK, NOK, DKK and EUR, four VAT regimes, and Prisjakt/PriceRunner as the reference layer. Here's why standard price tools break and how to do it right.",{"slug":49,"title":50,"image":51,"date":52,"category":35,"excerpt":53},"product-matching-price-monitoring-2026","Product Matching for Price Monitoring: Why Competitor Data Breaks [2026]","/img/news/product-matching-price-monitoring-2026.png","22 July 2026","You can't reprice against a competitor product you matched wrong. How product matching methods compare — exact ID, fuzzy, attribute, AI — and where each breaks.",{"slug":55,"title":56},"2captcha-vs-capsolver-vs-capmonster-web-scraping-2026","2Captcha vs Capsolver vs CapMonster: Best CAPTCHA Solver for Scraping [2026]",{"slug":44,"title":45},[59,63,66,69,72,76,79,82,85,88],{"level":60,"text":61,"id":62},2,"What the Omnibus Directive Actually Requires","what-the-omnibus-directive-actually-requires",{"level":60,"text":64,"id":65},"The ALDI SÜD Ruling Made the Rule Sharper","the-aldi-sd-ruling-made-the-rule-sharper",{"level":60,"text":67,"id":68},"Why This Is a Data Problem, Not a Legal One","why-this-is-a-data-problem-not-a-legal-one",{"level":60,"text":70,"id":71},"How to Build the Price History You Need","how-to-build-the-price-history-you-need",{"level":73,"text":74,"id":75},3,"Layer 1: Capture and retain your own prices","layer-1-capture-and-retain-your-own-prices",{"level":73,"text":77,"id":78},"Layer 2: Monitor competitor price history","layer-2-monitor-competitor-price-history",{"level":73,"text":80,"id":81},"Layer 3: Make the history queryable","layer-3-make-the-history-queryable",{"level":60,"text":83,"id":84},"Quick Reference: Is Your Discount Compliant?","quick-reference-is-your-discount-compliant",{"level":60,"text":86,"id":87},"Where ScrapeWise Fits — and Where It Doesn&#39;t","where-scrapewise-fits-and-where-it-doesn39t",{"level":60,"text":89,"id":90},"Conclusion","conclusion",[],1786537654840]