UK Grocery Price Monitor - Sainsbury's & Asda Price Drop Feed
Pricing
from $10.00 / 1,000 change detecteds
UK Grocery Price Monitor - Sainsbury's & Asda Price Drop Feed
Scheduled price-drop and promo change feed for UK supermarkets: what dropped price, went on Rollback or Nectar Price, or came back in stock at Sainsbury's and Asda since your last run. Emits only changes - not full catalogue dumps.
Pricing
from $10.00 / 1,000 change detecteds
Rating
0.0
(0)
Developer
Daniel Matthee
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
UK Grocery Price Monitor — Sainsbury's & Asda Price-Drop Feed
A scheduled change feed for UK supermarket prices: every run tells you what dropped price, went on Rollback or promotion, rose in price, or came back in stock at Sainsbury's and Asda since your last run — and nothing else. No full-catalogue dumps to diff yourself: you pay per change detected, not per page scraped.
Point it at the search terms or category pages you care about, schedule it (daily works well — grocery prices move on overnight repricing), and read the dataset as an alerts-ready diff.
Why a monitor and not a scraper
Plenty of actors will dump Sainsbury's or Asda product pages. None of them tells you what changed. If you are:
- a repricing / price-intelligence team benchmarking against the UK mults ("alert me when Asda drops any SKU in fresh milk by 5%+"),
- an FMCG brand or category manager watching shelf price and promo compliance for your products ("did our promotion actually start today?"),
- a deal-hunter app, cashback or affiliate site that needs fresh price-drop content the moment it happens ("Rollback feed for the snacks aisle"),
then the diff is the product, and this actor emits exactly that.
Tesco is deliberately not covered. Tesco raw data is already saturated on the Apify store (the leading Tesco scraper has 400+ users) — if you want Tesco dumps, they exist. This monitor covers the two big chains where change-feed coverage did not exist at all, and watches them properly.
What one change record looks like
{"store": "asda","productId": "4836254","name": "Vintage Dundee Orange Marmalade 340g","brand": "Mackay's","priceNow": 1.47,"priceWas": 1.90,"dropPercent": 22.63,"unitPrice": "£4.32/KG","changeType": "price-drop","promoText": "Rollback","categoryPath": "Food Cupboard > Jams & Spreads > Marmalade","productUrl": "https://www.asda.com/groceries/product/4836254","imageUrl": "https://asdagroceries.scene7.com/is/image/asdagroceries/0637793000919","detectedAt": "2026-08-31T04:00:00Z"}
changeType is one of price-drop, price-rise, promo-started,
promo-ended, back-in-stock. Sainsbury's promo text includes Nectar
member prices (e.g. "Nectar Price £2.00") alongside offer strap lines.
First run seeds — it emits nothing (by design)
The first run over a watch set stores a baseline of every product it sees and pushes zero records — there is nothing to compare against yet. The log says so explicitly. From the second run on, you get only changes. Keep the same watch set between runs; that is what "since last run" means.
Input options
| Field | Default | What it does |
|---|---|---|
queries | ["milk"] | Search terms watched on each selected store. Every product they return is monitored. |
categoryUrls | [] | Sainsbury's category URLs (.../c:1019823) and/or Asda aisle URLs (contain a numeric taxonomy id). Routed to the right store automatically. |
stores | ["sainsburys", "asda"] | Which chains to run. |
changeTypes | all five | Emit only the change kinds you want. |
minDropPercent | 0 | Suppress price-drops smaller than this %. Rises, promos and stock changes are never filtered by it. |
maxItems | 1000 | Cap on products tracked per store per run and on emitted records. |
proxyConfiguration | Apify residential GB | Sainsbury's blocks non-UK traffic; keep GB residential proxies on. |
How it behaves when things go wrong
- One chain failing (blocked, changed, down) degrades: the other chain still runs, and the failed chain's baseline is untouched — no false "back in stock" storms when it recovers.
- Both chains failing fails the run loudly instead of pretending it was a quiet day.
- 429/blocked responses back off exponentially and rotate to a fresh proxy session without losing state.
- A schema change at a chain logs one clear warning naming the field and the run continues.
Pricing
Pay-per-event: a flat fee per run start ($0.005), a small per-product tracking fee ($0.0002 — this is what a quiet run costs), and $0.01 per change record emitted. A daily watch of ~1,000 products with typical grocery churn lands in the low dollars per month.
Update promise
Endpoint schemas are re-checked when drift warnings appear in run logs; the field set above is stable and versioned. Found a gap or want another chain (Morrisons is next on the list)? Open an issue on the actor page.
Changelog
- 0.1 — Initial release: Sainsbury's + Asda, five change types, per-chain state isolation, GB proxy support.