Pricing & loyalty tiers
Both tiers, because only one of them is what shoppers pay.
- Shelf price and loyalty price
- Digital coupon and clipped offer value
- Computed effective price
- Multi-buy and threshold offers
- Price change events with dates
With loyalty pricing captured, because that is what shoppers actually pay.
In several grocery markets the loyalty price is now the real price, and the shelf price is a reference number almost nobody pays. A dataset that reports only shelf price is measuring a fiction.
Free pilot on your own sources, returned in 48 hours. No card, no trial clock — and you keep the sample data either way.
Last verified 5 August 2026 by the Actowiz Solutions Data Engineering team.
Grocery data scraping is the automated collection of structured data from supermarket websites and online grocery platforms: shelf price, loyalty or member price, promotional mechanics, unit price, pack size, category placement, private label status and availability.
The category has changed fundamentally in the last few years, and many datasets have not caught up. The shift is loyalty-gated pricing: several major grocers now operate a two-tier structure where the displayed shelf price applies to non-members and a materially lower price applies to loyalty members — who are the large majority of shoppers.
Shelf price and loyalty price are separate fields, and we compute an effective_price representing what a member actually pays. Where a market has digital coupons rather than member pricing, those are captured and applied the same way. Where a retailer shows member pricing only after login, we record that the field is unavailable with a reason code rather than substituting the shelf price and quietly corrupting your comparison.
Grocery pricing varies by store more than most categories — convenience formats, regional pricing zones and local competitive response all move prices. Where a retailer exposes store-level or fulfilment-area pricing, we collect at that level and keep it on the record. Where only national online pricing exists, we say so rather than implying a granularity the source never provided.
Most engagements start with pricing and promotions on a defined category, then extend into private label and availability.
Both tiers, because only one of them is what shoppers pay.
The layer where pack strategy is won or lost.
Structured, not banner text.
The competitive dynamic that defines modern grocery.
What is actually purchasable, where.
Where products sit and how they are found.
A managed engagement, not a tool licence. We own the pipeline and everything that breaks in it.
Every engagement delivers a documented schema. These are the core fields; the full dictionary runs to 150+ and is agreed during scoping.
| Field | Type | What it captures | Refresh |
|---|---|---|---|
retailer / store_ref / fulfilment_area |
string | Retailer plus store or fulfilment area where the retailer exposes it | Every run |
sku_name / brand / is_private_label |
string / boolean | Product as listed, brand parsed, and own-label flagged | Weekly |
gtin / retailer_sku |
string | Identifiers where published, which anchor cross-retailer matching | Weekly |
pack_size / pack_count |
decimal / int | Parsed pack size and count, required for unit price and pack analysis | Weekly |
shelf_price / loyalty_price |
decimal | Both pricing tiers as separate fields, never blended | Daily |
digital_coupon / effective_price |
decimal | Coupon value where applicable and the price a member actually pays | Daily |
unit_price_per_kg / per_l / per_unit |
decimal | Normalised unit pricing for cross-pack and cross-brand comparison | Daily |
promo_mechanic / promo_ends |
enum / date | Offer structure classified into standard mechanics, with end date where shown | Daily |
in_stock / substitution_offered |
boolean | Availability and whether the retailer offered a substitute | Daily |
own_label_equiv |
object | Comparable own-label SKU with its price and index against the branded item | Weekly |
category_path / search_rank |
array / int | Category placement and rank for a tracked keyword set | Daily |
Where a retailer shows loyalty pricing only behind a login, the field arrives null with a reason code. We never substitute shelf price for member price, because that single silent substitution can invert a competitive conclusion.
Grocery is intensely national. Coverage is built market by market, with store-level availability confirmed per retailer.
Store-level pricing exposure varies sharply by retailer. Some publish per-store prices, some price by fulfilment area, and some publish one national online price. We confirm which applies per retailer during scoping rather than promising uniform granularity. Request a source we don't list →
We deliver into 40+ countries. These are the markets where this particular service is requested most, and the reason demand concentrates there.
| Market | Why demand concentrates here |
|---|---|
| United Kingdom | The most advanced loyalty-gated pricing market, which makes two-tier price capture essential rather than optional. |
| United States | Digital coupon mechanics plus regional pricing zones, with heavy private label competition across chains. |
| Germany, France & Netherlands | Hard discounter pressure and strong own-label ranges drive private label indexing demand. |
| India & GCC | Fast-growing online grocery with rapid range expansion and frequent promotional activity. |
We run production collection across 40+ countries. Coverage depth varies by market and by source, so we confirm what is actually available for your specific markets during scoping rather than claiming uniform global coverage. Ask about a market we don't list →
FMCG brands and grocery retailers dominate, with private label suppliers and analysts close behind.
Pack and price architecture decisions need unit-price and loyalty-tier visibility across retailers that internal data cannot supply.
Unit-normalised pricing at both tiers across every retailer, with pack architecture and own-label indexing per category.
Price mix realisation
Promotional compliance and competitive intensity are assessed from retailer reports and field visits, both incomplete.
Daily promotional capture with mechanics classified and depth measured, including loyalty-gated offers most tools miss entirely.
Promotional ROI
Competitor pricing must be tracked at the tier shoppers actually pay, across thousands of SKUs, daily.
Competitor shelf and loyalty pricing with effective price computed, matched at SKU level and delivered before each pricing run.
Price index versus market
Own-label range and price positioning against branded and competitor own-label needs systematic comparison.
Private label identification and tiering across retailers with price indexing against branded equivalents by category.
Own label penetration
Online out-of-stocks and delistings surface late, often through a sales conversation rather than data.
Daily availability and range tracking per retailer and area, with delisting detection and substitution signals.
On-shelf availability %
Food price analysis needs SKU-level evidence with unit prices, not lagged basket indices.
Longitudinal SKU-level price panels with unit normalisation and pack-size change detection for shrinkflation analysis.
Signal lead time
Four patterns, with the outcome each is judged on.
Shelf and loyalty prices are collected separately and an effective price computed, so a basket or category index reflects what members actually pay. Because unit prices are normalised, comparisons hold across differing pack sizes between retailers.
Outcome: Price index that matches shopper reality rather than shelf-price theory.
Promotions are captured daily with mechanics classified and depth measured against base price, including loyalty-gated offers. Category-level promotional intensity is then comparable across retailers and over time.
Outcome: Promotional planning informed by observed competitor intensity, including the loyalty offers other tools miss.
Own-label SKUs are identified and tiered, then indexed against comparable branded items per category, with new own-label launches detected as events.
Outcome: Own-label encroachment quantified per category before it shows in share data.
Pack size and count are parsed and tracked over time, so size reductions at held prices become visible as events, with unit price movement quantified.
Outcome: Pack changes documented with dates and unit-price impact, for both commercial and regulatory purposes.
Clients rarely permit naming. These are real engagement shapes with identifying detail removed, so you can judge whether the work resembles your situation.
Competitive indexing used shelf prices only, concluding the brand was priced competitively, while member pricing at key retailers told a different story entirely.
Shelf and loyalty prices captured as separate fields with effective price computed, and unit prices normalised across differing pack sizes.
The index inverted once member pricing was included, changing the pack and price plan for the following cycle.
The supplier compared its retailer own-label lines against branded equivalents using spreadsheets built from occasional store visits.
Automated own-label identification and tiering across retailers with price indexing against branded equivalents per category, refreshed weekly.
Positioning reviews moved from periodic manual work to a standing dataset.
Examples are anonymised at client request. Named references are available on request under NDA. See published case studies →
Before you commit to anything, we run this service against your own sources and send you the output. If the coverage isn't there, the sample will show you that too — which is the point. We would rather lose the deal at the pilot than at month three.
Same collection pipeline and same QA underneath. The difference is who holds the schedule and how the data reaches you.
We own the collection, the QA and the delivery. You receive clean data on a schedule and never touch a scraper.
Best fit: Teams who need the data, not the infrastructure.
The same collection pipeline exposed as an authenticated REST endpoint your systems query directly.
Best fit: Product and engineering teams building on live data.
A defined pull for a specific question — market sizing, diligence, a pitch, a one-off audit.
Best fit: Research, strategy and diligence work with a deadline.
Every engagement is quoted individually, because the honest answer depends on your scope: how many sources, how many records, how often, and how the data reaches you. We scope it with you, run a free pilot on your own sources, and then quote a fixed monthly figure — no per-request metering and no overage billing when volumes move. Request a quote and you will have a number after one call.
Loyalty tiers, unit price parsing and own-label identification are where in-house grocery builds consistently fall short.
| Consideration | In-house scraping team | Generic proxy / DIY tool | Actowiz managed feed |
|---|---|---|---|
| Time to first usable data | 6–12 weeks of engineering before anything is trustworthy | Days, but output needs manual cleanup before use | Free pilot in 48 hours, production in 5–10 business days |
| Who fixes it when a source changes | Your engineers, at the cost of their roadmap | You do — tools report failures, they don't resolve them | We do, same business day, inside the retainer |
| Data quality assurance | Whatever your team has time to build | None beyond HTTP success | Schema validation plus sampled human QA on every run |
| Compliance documentation | Rarely produced, then requested urgently by legal | Not provided; terms risk sits with you | Sources, method and lawful basis documented for review |
| Accountability | Distributed across a team with other priorities | A support ticket queue | A named engineer and an account owner |
| True annual cost | Engineer salaries, proxies, hosting, ongoing maintenance | Low licence fee plus significant hidden analyst time | One fixed monthly retainer, quoted after scoping |
Unit price seems trivial: divide price by pack size. In grocery it is one of the most error-prone fields in the dataset, and because every cross-pack and cross-retailer comparison depends on it, errors propagate everywhere.
We parse pack size and count as separate fields, compute unit price ourselves on a consistent basis per category, and retain the retailer's displayed unit price separately so discrepancies are visible rather than hidden. Variable-weight items are flagged as such rather than presented as fixed weights.
Our parse rate is 98.4% and we publish it, because the residual 1.6% is not evenly distributed — it clusters in fresh, bakery and counter categories. Knowing where the gap sits is more useful than a rounded-up headline figure.
Grocery price monitoring conventions were built when shelf price was the price. In several markets that is no longer true, and datasets built on the old assumption now produce systematically wrong conclusions rather than merely incomplete ones.
Major grocers introduced loyalty-gated pricing: members pay materially less on a large share of SKUs, and membership penetration is high enough that the member price is the modal transaction price. The shelf price has become a reference figure that a minority actually pays.
Both tiers as separate fields, always, plus a computed effective price. Digital coupons are treated as the same phenomenon where that is the local mechanism. Where member pricing sits behind a login we do not access it — the field arrives null with a reason code, and we tell you during scoping which retailers in your markets expose member pricing publicly and which do not.
That honesty matters: a vendor silently substituting shelf price for missing member price gives you a clean-looking dataset with an inverted conclusion inside it. If you also track quick commerce, this pairs with quick commerce data, where the same categories carry very different pricing.
Retailers, categories and granularity are scoped first, including confirming which retailers expose store-level and loyalty pricing publicly.
You send us target sites, regions, SKUs or keywords. We return a field-level schema proposal, coverage estimate and refresh recommendation — usually within two working days.
We extract a real sample from your actual targets so you can inspect field fill rates, edge cases and match quality before any commitment.
Our engineers build extractors, then wire validation rules: type checks, range checks, duplicate detection and golden-record comparison against a manually verified subset.
Feeds run at your chosen cadence and land in the warehouse or bucket you already use. Schema changes are versioned and announced before they ship.
We watch coverage drift, fill rates and source changes daily. A named engineer owns your account, and layout breaks are fixed by us — not queued for you.
JSON, JSONL, CSV, Parquet or XLSX, delivered to Amazon S3, Google Cloud Storage, Azure Blob, SFTP, Snowflake, BigQuery, Databricks or a REST/GraphQL endpoint. Webhooks fire on completion, and every batch ships with a manifest containing row counts, schema version and QA results so your pipeline can fail loudly instead of silently ingesting a bad file.
We collect publicly accessible grocery catalogue and pricing pages, including publicly displayed loyalty prices. We do not create loyalty accounts, use customer credentials or access member-only areas behind a login. Shopper and customer personal data is never part of the deliverable, and methodology is documented per retailer and market.
These are contractual, not marketing copy. They appear in the engagement document.
| Commitment | What we hold ourselves to |
|---|---|
| Pilot turnaround | A real sample from your own sources within 48 hours of scoping, at no cost. |
| Go-live | Production collection running within 5–10 business days of sign-off. |
| Delivery punctuality | 99.5% on-schedule delivery, measured monthly and reported to you. |
| Breakage response | Source layout changes triaged same business day; critical sources inside 4 hours. |
| Data quality | Schema validation on every run plus sampled human QA before any delivery leaves us. |
| Escalation | A named engineer and an account owner, not a shared ticket queue. |
| Change requests | Field additions and source changes handled inside the retainer, not re-quoted. |
| Exit | Your historical data exported in full on request. No lock-in, no export fee. |
Plain definitions of the terms used on this page, so procurement and legal reviewers are working from the same vocabulary as your data team.
What FMCG and retail teams ask during evaluation.
Yes, wherever it is publicly displayed — and this is now the most important field in grocery data. Shelf price and loyalty price are separate fields, with a computed effective price representing what a member actually pays. Digital coupons are handled the same way in markets where those are the mechanism.
Where a retailer shows member pricing only after login, we do not access it. The field arrives null with a reason code, and we never substitute shelf price — that single silent substitution can flip a competitive index from above-market to below-market.
It depends entirely on the retailer, and we confirm which applies per retailer during scoping. Some expose genuine per-store pricing, some price by fulfilment area or postcode district, and some publish a single national online price.
We collect at the finest granularity a retailer actually exposes and record which level it was, rather than implying store-level precision the source never provided. In-store-only prices that never appear online cannot be collected from the web at all, and any vendor claiming otherwise is inferring.
98.4% parse rate, and we publish it because the residual matters. Failures cluster in fresh, bakery and counter categories where pack sizes are approximate or variable-weight.
We parse pack size and count separately, compute unit price on a consistent basis per category, and retain the retailer's own displayed unit price as a separate field so discrepancies are visible. Multipacks are handled as count times size — a common source of six-fold errors when parsers read only the size.
Yes, with tiering. Own-label SKUs are flagged and classified into value, standard and premium tiers, then indexed against comparable branded items within the category.
Own-label identification is not always obvious — many retailer brands do not carry the retailer's name, and some are exclusive brands from third parties. We maintain retailer-specific own-label brand mappings rather than relying on name matching, and new own-label launches are detected as events.
Yes. Pack size and count are parsed as structured fields on every run, so a size reduction at a held price is detected as an event with a date, and the unit-price impact is quantified automatically.
This has become a common request from both commercial teams and public bodies. The constraint is history: detection requires having observed the product before the change, so it works from your collection start date forward. Where we already hold archive coverage for a retailer and category, we can look back.
GTIN where published and verified, then brand, pack size and attribute matching with title similarity, with pack size treated as a hard constraint. Every match carries a confidence score and you set the threshold.
Grocery has a specific trap: retailer-exclusive pack sizes. A brand may supply 400g to one retailer and 415g to another, deliberately, so direct comparison is not possible. We flag near-matches on differing pack sizes rather than forcing them together, and unit price is the correct comparison basis in those cases.
We collect publicly accessible catalogue and pricing pages, including publicly displayed loyalty prices, without creating accounts or using credentials. Public price display is generally treated as accessible information, though retailer terms often restrict automated access, and we state that rather than glossing over it.
Each engagement includes a written methodology document per retailer and a DPA before signature, so your counsel can assess your specific use case. Notably, grocery price monitoring is also conducted by statistical agencies and competition authorities in several countries, which is context worth having in that conversation.
Base prices move slowly — weeks to months. Promotions move on weekly cycles in most markets, and loyalty offers frequently rotate weekly with fixed start dates. Availability changes daily.
Daily collection is right for most engagements, timed to land before your pricing or trading meeting. Sub-daily adds value mainly during major promotional events and in categories with volatile fresh pricing. Full-catalogue hourly collection is rarely worth its cost, since most SKUs are unchanged hour to hour.
We quote individually. The drivers are retailer count, category or SKU scope, granularity — national versus store or area level — and refresh frequency. Store-level collection multiplies volume substantially, so it is worth deciding deliberately whether you need it.
A defined category across a handful of retailers at national online granularity, daily, sits at the lighter end. Multi-market coverage across full catalogues at store level sits considerably higher. One scoping call, a free pilot on your own category and retailers within 48 hours, then a fixed monthly quote with retailers and categories added inside the retainer. Request a quote.
Send us a category and the retailers you track. We return SKU-level pricing with loyalty tiers, unit prices and own-label indexing within 48 hours.
Free pilot, no card, no obligation. We'll confirm which retailers in your markets expose loyalty and store-level pricing publicly.Our web scraping expertise is relied on by 4,000+ global enterprises including Zomato, Tata Consumer, Subway, and Expedia — helping them turn web data into growth.
Watch how businesses like yours are using Actowiz data to drive growth.
From Zomato to Expedia — see why global leaders trust us with their data.
Backed by automation, data volume, and enterprise-grade scale — we help businesses from startups to Fortune 500s extract competitive insights across the USA, UK, UAE, and beyond.
We partner with agencies, system integrators, and technology platforms to deliver end-to-end solutions across the retail and digital shelf ecosystem.
Wegmans Grocery Product Data Extraction helps retailers track prices, products, availability, and assortment changes to improve grocery market intelligence and decisions.
Track Scrape Ready-to-Cook Cut Veg Product Data from Blinkit TN to monitor prices, availability, SKUs, and trends for smarter retail insights.
Brazil Car Rental Pricing Intelligence Report 2026 reveals rental price trends, market shifts, competitor rates, and opportunities for smarter pricing.
Whether you're a startup or a Fortune 500 — we have the right plan for your data needs.