UK PPE & Safety Equipment Shelf Monitor
Pricing
from $3.00 / 1,000 trade shelf rows
UK PPE & Safety Equipment Shelf Monitor
The whole priced UK safety-equipment trade catalogue in seconds: ex-VAT and inc-VAT price, minimum order quantity, unit, brand, category and the product lifecycle stage that flags a discontinuation early. Delta mode annotates every row with what moved.
Pricing
from $3.00 / 1,000 trade shelf rows
Rating
0.0
(0)
Developer
Sami
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 hours ago
Last modified
Categories
Share
UK PPE & Safety Equipment Shelf Monitor — The Whole Trade Catalogue (2026)
The complete priced catalogue of the UK's largest safety-equipment distributor, in about eight seconds: ex-VAT trade price, inc-VAT price, minimum order quantity and order interval, unit, brand, category, promotion, product URL — and the field nobody else exposes, the product lifecycle stage.
Measured on 2026-07-25: 14,843 catalogue entries in 16 requests, 8.2 seconds. No API key to obtain, no browser, no proxy.
Why the lifecycle field is the reason to run this
Every line carries one of four stages, populated on 100% of rows:
| Stage | Count (measured) | What it tells you |
|---|---|---|
ESTABLISHED | 12,524 | Core range |
INTRO 1 / INTRO 2 | 1,514 / 359 | New lines entering the range — what your competitor just started stocking |
EXIT1 | 387 | Being discontinued |
A SKU moving ESTABLISHED → EXIT1 is a discontinuation warning that arrives weeks before the line disappears from the shelf. If you buy, sell or specify safety equipment, that is the difference between resourcing calmly and being told a product is gone when you order it. And it exists nowhere as a feed — only by comparing today's catalogue against a stored one, which is exactly what delta mode does.
What a row looks like
{"sku": "5535821","productName": "Arco Medium-Duty Sack Truck Solid Wheel","brand": "ARCO","category": "Manual Handling","netPriceExVat": 89.50,"grossPriceIncVat": 107.40,"vatRatePct": 20.0,"currency": "GBP","minOrderQuantity": 2,"orderQuantityInterval": 1,"unit": "Each","productLifecycle": "ESTABLISHED","promotion": null,"isPriceable": true,"suspiciousPrice": false,"productUrl": "https://www.arco.co.uk/products/5535821","scrapedAt": "2026-07-25T21:40:00Z"}
Delta mode — every row says what moved
With deltaMode: true, the first run records a baseline and every later run returns the shelf annotated:
changeType | Meaning |
|---|---|
lifecycle_change | Stage transition, with previousLifecycle — the discontinuation warning |
price_up / price_down | Trade price moved, with priceChange and priceChangePct |
supply_terms_change | Minimum order quantity or order interval moved — a supply signal |
promo_change | Promotion on the line changed |
new / delisted | Line entered or left the catalogue |
Deliberately, the default returns the WHOLE shelf every run, with movement as an annotation — because a price file you cannot join to yesterday's is not a price file. If you are feeding an alerting pipeline that already holds the catalogue, returnChangesOnly: true gives you just the movers. Unchanged rows are billed at the ordinary row rate, never the change rate.
delisted only fires after a full sweep. On a filtered run the Actor sees a subset by design, and calling those SKUs delisted would be a lie.
{"maxProducts": 20000,"deltaMode": true,"deltaStateKey": "weekly-shelf"}
Who this is for
| Buyer | Job |
|---|---|
| Safety and PPE brands | Where your lines sit against competitors on the biggest UK trade shelf, at what trade price, and which of your SKUs the distributor has moved to EXIT |
| Distributors and resellers | A complete competitor price file, refreshed weekly, with MOQ and pack terms included |
| Procurement and facilities teams | Benchmark quoted prices against the published trade price, and catch discontinuations before a reorder fails |
| Industrial and construction analysts | Assortment breadth, own-brand share and price movement across ~15,000 SKUs as an input-cost read |
| Marketplace sellers | Sourcing terms — MOQ, order interval, unit — in one normalised grid |
Sizing your run
| Setup | Requests | Rows | At $0.003/row |
|---|---|---|---|
| Full catalogue, one-off | 16 | ~14,800 | $44 |
| Full catalogue, weekly cron | 16/week | ~14,800/week | ~$192/month |
| One brand (e.g. 3M) | 1-2 | a few hundred | cents |
Only the lines being discontinued (product_lifecycle:"4 EXIT1") | 1 | ~390 | $1.17 |
That last row is the cheapest useful query on this Actor: one request tells you everything the distributor is dropping.
Pricing
| Event | Price | What it is |
|---|---|---|
product-row | $0.003 | One catalogue line, full field set |
shelf-change | $0.02 | One line that moved in delta mode, with its previous values |
Index entries with no name or price are skipped and never charged (59 of 14,843 when measured).
Limitations, stated plainly
- This is one distributor's catalogue — the UK's largest safety-equipment supplier, which is what most UK PPE pricing is benchmarked against, but it is one source and the data says so.
- Some lines carry placeholder prices. A sack truck at £0.01 is not a bargain, it is a catalogue artefact. Those rows are returned with
suspiciousPrice: trueso they never poison an average. - Trade prices are list prices, not your negotiated account price. That is precisely what makes them a benchmark.
- Ordinary pagination does not work on this source — page 2 returns zero rows with a success status. This Actor walks a price watermark instead, which is why it gets the whole catalogue where a naive scraper would silently return 1,000 rows and look fine.
- No history before your first run. Prices and lifecycle stages cannot be backfilled.
- If the storefront rotates its public search key, the run fails loudly with that reason and charges nothing — it does not return an empty catalogue.
FAQ
Do I need a proxy? No. Verified from an ordinary IP with no challenge.
Why does the full catalogue only take 16 requests? Because it is harvested by price watermark at 1,000 rows a request, rather than page by page.
Can I get just the discontinued lines? Yes — filterExpression: product_lifecycle:"4 EXIT1". One request, ~390 rows.
Why is my first delta run the whole shelf? It is the baseline, billed at the row rate. From the second run every row carries what moved.
Other scrapers by Zhorex
- UK Tyre Price & Fitment Monitor — the same delta pattern on UK tyre shelves
- DE/AT Pharmacy Price & Stock Monitor — OTC pharmacy prices, RRP breaches and stock
- Hostelworld Rate & Availability Monitor — forward-dated accommodation rates
Legal
This Actor reads publicly visible commercial catalogue data: product names, trade prices, order terms and lifecycle stages. It collects no personal data and places no orders. Respect the distributor's terms and applicable law in your jurisdiction, and use the data for analysis rather than redistribution.