German Pharmacy PZN Price Comparison avatar

German Pharmacy PZN Price Comparison

Under maintenance

Pricing

from $3.00 / 1,000 1,000 pharmacy price snapshots

Go to Apify Store
German Pharmacy PZN Price Comparison

German Pharmacy PZN Price Comparison

Under maintenance

Compare Shop Apotheke and DocMorris by PZN or keyword in one normalized dataset with EUR prices, availability, EAN, and product URLs.

Pricing

from $3.00 / 1,000 1,000 pharmacy price snapshots

Rating

0.0

(0)

Developer

TrueNorth

TrueNorth

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Categories

Share

Compare current Shop Apotheke and DocMorris offers from one input and receive one normalized Apify dataset. Search by German Pharmazentralnummer (PZN) or keyword; every result uses the same 13-field contract for EUR price, list price, savings, availability, pack size, brand, manufacturer, European Article Number (EAN), and product URL.

Use this Actor for German pharmacy PZN price comparison, a PZN scraper, a German pharmacy price monitor, a Shop Apotheke scraper, a DocMorris scraper, pharmacy availability data, or a German medicine price dataset by PZN. Use exact PZN or keyword input to monitor pharmacy stock by PZN and build a normalized pharmacy product dataset. It supports two pharmacies—not the full German pharmacy market—and produces current snapshots, not price history.

Why use it?

  • Compare two major German online pharmacies without joining different source schemas.
  • Preserve eight-digit PZNs and leading zeroes as strings.
  • Query 1–100 exact PZNs or keywords per run.
  • Filter out-of-stock offers or retain them for availability monitoring.
  • Export strict records to JSON, CSV, Excel, databases, and downstream Apify workflows.

Input example

{
"searchTerms": ["03161577", "ibuprofen"],
"pharmacies": ["shop-apotheke", "docmorris"],
"maxItems": 1000,
"includeOutOfStock": true
}
FieldRequiredDefaultMeaning
searchTermsYes1–100 PZNs or keywords. Seven-digit PZNs are left-padded; eight-digit PZNs preserve leading zeroes.
pharmaciesNoBothshop-apotheke, docmorris, or both. Execution order stays Shop Apotheke, then DocMorris.
maxItemsNo1000Global unique-record cap from 1 to 10,000 across all terms and pharmacies.
includeOutOfStockNotrueKeep or remove records currently marked out of stock.

Other numeric lengths and all-zero PZNs fail validation. Duplicate normalized terms and duplicate pharmacy/PZN results are removed.

Output example

{
"pharmacy": "DocMorris",
"pzn": "03161577",
"ean": null,
"title": "IBUHEXAL AKUT 400 50 St",
"brand": "IbuHEXAL",
"manufacturer": "Hexal AG",
"packSize": "50 St",
"price": 6.49,
"listPrice": 13.45,
"savingsPercent": 52,
"inStock": true,
"url": "https://www.docmorris.de/ibuhexal-akut-400/03161577",
"scrapedAt": "2026-07-24T20:31:40.000Z"
}

Each dataset item contains exactly pharmacy, pzn, ean, title, brand, manufacturer, packSize, price, listPrice, savingsPercent, inStock, url, and scrapedAt. Prices are numeric EUR values. Missing optional source values are explicit null. One UTC scrapedAt value is shared by every record in a run.

Use cases

  • Compare Shop Apotheke and DocMorris prices for known PZNs.
  • Monitor German medicine prices and current stock on a schedule.
  • Build procurement, catalog, assortment, or market-research datasets.
  • Feed normalized pharmacy product data into analysis and business intelligence tools.

Useful German searches include PZN Preisvergleich, Apotheken Preisvergleich, Arzneimittel Preisvergleich, Medikamentenpreise vergleichen, Shop Apotheke Preisvergleich, and DocMorris Preisvergleich.

Pricing

Pay-Per-Event (PPE): USD 3.00 per 1,000 price snapshot records through per-1000-price-snapshots. Apify platform usage costs are passed to users. Final run cost depends on output volume and platform resources.

Reliability and limits

The Actor calls public Shop Apotheke and DocMorris Algolia search endpoints directly with Node.js—no browser. Requests use 10-second attempt timeouts and at most three attempts. Network failures and HTTP 408, 425, 429, 500, 502, 503, and 504 are retried. Blocks, non-JSON responses, malformed payloads, invalid envelopes, and upstream schema drift fail the complete run. Output is validated before dataset writes in batches of at most 500.

Shop Apotheke keyword responses can include marketplace master records without a 7- or 8-digit PZN. These records are counted and skipped because every output item requires a real PZN. Products that expose a malformed PZN still fail loudly, and exact-PZN searches retain strict validation.

The Actor does not order products, provide medical advice, compare shipping, cover every German pharmacy, or maintain historical prices. Product data can change after collection. It is not affiliated with, endorsed by, or sponsored by Shop Apotheke or DocMorris.

Local development

Requires Node.js 22 and pnpm 10.13.1.

corepack enable
pnpm install --frozen-lockfile
pnpm run check
pnpm test
apify run

Live exact-PZN checks are opt-in:

pnpm run test:live

Private fixture mode requires NODE_ENV=test, PZN_MONITOR_FIXTURE_DIR, and APIFY_IS_AT_HOME not equal to 1. Fixture mode is not public input and fails with FIXTURE_MODE_FORBIDDEN in Apify Cloud.