DE/AT Pharmacy Price & Stock Monitor
Pricing
from $6.00 / 1,000 article shelf row (per pzn)s
DE/AT Pharmacy Price & Stock Monitor
PZN-keyed OTC shelf data from Europe's largest online pharmacy (DE + AT): price, list-price breach, discount, availability and the marketplace seller undercutting the shop. Delta mode returns only price moves, RRP breaches and stock flips.
Pricing
from $6.00 / 1,000 article shelf row (per pzn)s
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
DE/AT Pharmacy Price & Stock Monitor — PZN-Keyed Shelf Data (2026)
Track what Europe's largest online pharmacy actually charges, article by article, across the German and Austrian storefronts. Every row is keyed on the PZN — the German/Austrian pharmaceutical article number — so the same product lines up across markets, sellers and your own ERP with no name matching.
Per article you get: selling price, the struck-through list price and the percentage breach against it, discount, price per unit, availability, how many marketplace sellers are on the listing and which one is undercutting the shop, pack size, form, rating and the product URL.
No login. No API key to obtain. No browser. Clean JSON / CSV / Excel, billed per row you receive.
Three ways to use it
| Mode | What it does |
|---|---|
| Brand watch | Every article of a brand — DOPPELHERZ (335 articles DE), ABTEI (148), VOLTAREN. One request covers up to 1,000 articles, so a brand is one request, not one per SKU |
| PZN watch | The exact article numbers you own or track, batched 40 per request |
| Category slice | A raw index filter for a whole segment, e.g. prescriptionMedicine:false AND marketplace:false |
Delta mode — and why out-of-stock only exists here
With deltaMode: true, the first run records a baseline and every later run returns only what changed:
changeType | Meaning |
|---|---|
price_up / price_down | Selling price moved, with priceChange and priceChangePct |
rrp_breach_opened | The article crossed under its list price — the dated evidence a Preispflege file is built from |
rrp_breach_closed | It came back up to or above list |
out_of_stock / back_in_stock | Availability flipped |
new | Article seen for the first time on this stream |
disappeared | Tracked article absent from a slice this run swept |
The availability point is not marketing. The storefront's search index exposes inStock as a value you can read but offers no stock facet and no way to filter on it — filters=inStock:false returns zero hits. So "went out of stock at 14:00 on Tuesday" can only be derived by comparing today's row against stored state. A competitor who starts next month cannot reconstruct the transitions they missed, and neither can this Actor: the history begins the day your schedule does.
Articles that did not change are not returned and not charged. And a baseline run is billed at the ordinary row rate, never at the alert rate — starting a monitor should not cost eight times as much as running it.
{"mode": "pzn_watch","pzns": ["17268563", "11559302"],"markets": ["DE", "AT"],"includeMarketplaceOffers": true,"deltaMode": true,"deltaStateKey": "my-brand-de-at"}
Example row
{"pzn": "11559302","productName": "Abtei Beta-Carotin Plus Hautaktive B-Vitamine","brand": "ABTEI","market": "DE","price": 4.89,"referencePrice": 4.95,"rrpBreach": true,"rrpBreachPct": 1.21,"discountPct": 0.0,"pricePerUnit": "0,10 € / 1 St","netPrice": 4.57,"inStock": true,"packSize": "50 St","pharmaForm": "Kapseln","averageRating": 4.9,"ratingCount": 25,"lowestOfferPrice": 4.89,"lowestOfferSeller": "Shop Apotheke","undercutByMarketplace": false,"offerSellerCount": 1,"productUrl": "https://www.shop-apotheke.com/beauty/11559302/abtei-beta-carotin-plus-hautaktive-b-vitamine.htm","scrapedAt": "2026-07-25T20:30:00Z"}
Who buys this
| Buyer | Job |
|---|---|
| OTC brand and trade-marketing teams | Dated per-article evidence of who is selling under the recommended price, and by how much — the file you need before a price-maintenance conversation |
| Distributors and wholesalers | Availability and price corridors across DE and AT on the articles you supply |
| Pharmacy chains and e-pharmacies | Competitive repricing against the market leader's actual shelf, not its advertised RRP |
| Consumer-health analysts and funds | Assortment breadth, discount depth and stock-out frequency as a demand and supply-chain read |
| Market researchers | A PZN-keyed panel that joins to IQVIA-style data without fuzzy matching |
Sizing your run (and your bill)
Rows = articles × markets, and one request returns up to 1,000 articles.
| Setup | Requests | Rows | At $0.006/row |
|---|---|---|---|
| One brand (ABTEI, 148 articles), DE | 1 | 148 | $0.89 |
| Doppelherz DE + AT (543 articles) | 2 | 543 | $3.26 |
| 200 own PZNs × 2 markets, daily cron with delta | 10/day | only what moved | typically a small fraction |
| Doppelherz-scale daily monitor, 22 business days | ~44 | mostly alerts | see below |
A brand team watching 543 articles daily is 543 rows on day one and then only the movers — which on this shelf is a small minority of articles per day, so the recurring cost tracks the market's actual volatility rather than your catalogue size.
Pricing
| Event | Price | What it is |
|---|---|---|
sku-price-check | $0.006 | One article row, full field set. Also the rate for newly tracked articles on a baseline run |
shelf-alert | $0.04 | One genuine change: price move, list-price breach opening or closing, or a stock flip — with its previous values |
Slices that fail are pushed as error records with the reason and are never charged.
Limitations, stated plainly
- The index exposes the first 5,000 matches of any single query. Volume comes from slicing (per brand, per category, per market), not from paging deeper. The Actor refuses to page past the window and tells you when a slice is larger than what it can return.
referencePriceis not present on every article. Only some carry a struck-through list price; where the storefront shows none, turning on marketplace offers recovers one from the sellers' own strike prices (flagged asreferencePriceSource). Where neither exists, the breach fields arenullrather than guessed.- This is one retailer's shelf — the market leader's, across two countries. It is not a multi-pharmacy index.
medpexin particular is behind a challenge and is deliberately not scraped. - No history before your first run. Nobody can retro-fetch yesterday's price or stock state.
- Credentials: the storefront publishes read-only search credentials for its own product index; this Actor ships the last verified pair and re-reads the storefront each run in case they change. If they are ever rotated, runs fail loudly with an explicit message — not silently with zero rows — and the fix is a rebuild.
- No personal data. Articles, prices, sellers and stock states only. No customers, no prescriptions, no reviewers.
FAQ
Do I need a proxy? No. The search endpoint answers ordinary datacenter IPs with no challenge and no rate limiting observed.
Why is inStock false on so many articles? Because it genuinely is — on the brand slices tested, a large share of articles were unavailable. That is the signal, not a bug.
Can I monitor prescription medicines? They are in the index (prescriptionOnly: true) but their pricing is regulated and far less interesting; filterExpression: prescriptionMedicine:false keeps them out.
Austria too? Yes — markets: ["DE", "AT"]. The same PZN is often priced differently in each, which is the cross-border corridor signal.
Other scrapers by Zhorex
- Hostelworld Rate & Availability Monitor — the same delta-monitor pattern for accommodation rates
- Resy Availability & Scarcity Monitor — forward-dated restaurant availability
Legal
This Actor reads publicly visible commercial product data: article numbers, names, prices, discounts, stock states and seller identities of businesses. It collects no personal data. Respect the storefront's terms and applicable law in your jurisdiction, and use the data for analysis rather than redistribution.