Denner.ch Scraper — Swiss Wine & Grocery Prices avatar

Denner.ch Scraper — Swiss Wine & Grocery Prices

Pricing

from $1.20 / 1,000 result scrapeds

Go to Apify Store
Denner.ch Scraper — Swiss Wine & Grocery Prices

Denner.ch Scraper — Swiss Wine & Grocery Prices

Scrape wine and grocery products, prices, promotions, ratings and images from denner.ch, Migros-owned Denner's Swiss wine and discount grocery shop. Search any keyword and export clean structured product data.

Pricing

from $1.20 / 1,000 result scrapeds

Rating

0.0

(0)

Developer

Studio Amba

Studio Amba

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Scrape wine and grocery products, prices, promotions, ratings, and images from denner.ch, the online wine and discount grocery shop of Denner — Switzerland's third-largest grocery chain, owned by Migros. Browse the buyable wine catalogue by category or search any keyword, and export clean, structured product data.

Why use this actor?

Denner is a Migros Group brand with a large national footprint of discount stores and its own online wine shop (Weinshop) with real cart checkout. Its wine assortment, prices, and weekly promotions are useful for price monitoring, competitor benchmarking, and market research alongside the other Swiss grocery chains (Migros, Coop). This actor turns a category browse or keyword search into a structured dataset you can drop straight into a spreadsheet, database, or price-comparison pipeline. Every product comes with its Denner product ID, current price, unit price, and — when discounted — the original price and the promotion percentage shown on the site.

How to scrape Denner data

  1. Choose a mode:
    • Category URL (recommended): paste a denner.ch Weinshop category URL, e.g. https://www.denner.ch/de/weinshop/wein/champagner~c1144373. This returns the actual webshop-orderable wine catalogue for that category.
    • Search query: a German keyword (e.g. wein, rotwein, schokolade, kaffee). This searches Denner's weekly flyer/in-store promotions across wine and grocery.
  2. Set Max Results to how many products you want.
  3. Run the actor. Results land in the dataset and can be exported as JSON, CSV, Excel, or via the API.

Input

FieldTypeRequiredDescription
categoryUrlStringNoA denner.ch Weinshop category URL ending in ~c{id}. Takes priority over searchQuery when set.
searchQueryStringNoSearch keyword in German (default: rotwein). Used only when categoryUrl is empty.
maxResultsIntegerNoMaximum products to return (default: 100)
proxyConfigurationObjectNoApify Proxy settings. Automatic proxy works out of the box — denner.ch has no anti-bot wall on its search API.

Output

Each result contains:

FieldTypeExample
nameString"Leopardo Spumante Extra Dry"
brandString"Denner" (only for Denner's own-label line; most wine is unbranded private-label)
priceNumber59.7
currencyString"CHF"
originalPriceNumber71.7 (only when on promotion)
pricePerUnitString"Flasche: 9.95" (per-bottle price for multi-packs)
discountString"31%" or "½ PREIS" (only when on promotion)
quantityString"Italien, 75 cl"
sku / productIdString"1027008"
inStockBoolean or nulltrue — whether the item is orderable via the webshop
ratingNumber4.5
reviewCountNumber116
imageUrlStringProduct image URL
descriptionStringWine tasting notes ("character"), when available
categoryString"Schaumwein"
specsObject{"country": "Italien", "region": "Toskana", "vintage": "2024"} (wine items)
urlStringFull product page URL
scrapedAtStringISO 8601 timestamp

Example output

{
"name": "Leopardo Spumante Extra Dry",
"brand": "",
"price": 59.7,
"currency": "CHF",
"url": "https://www.denner.ch/de/weinshop/leopardo-spumante-extra-dry~p1027008",
"scrapedAt": "2026-08-26T14:15:40.882Z",
"pricePerUnit": "Flasche: 9.95",
"quantity": "Italien, 75 cl",
"sku": "1027008",
"productId": "1027008",
"inStock": true,
"rating": 4.5,
"reviewCount": 116,
"imageUrl": "https://denner.imgix.net/assets/72df2377-2ea7-43a5-94dd-cc6d036ad091/web/051072_23_02_21.tif_PACK_ITEM.png",
"description": "Helles Strohgelb mit grünen Reflexen. Aromatisch, mit feinem Duft von gelben Früchten. Lebhafte Perlage, mittlerer Körper und lang anhaltender Abgang.",
"category": "Schaumwein",
"specs": { "country": "Italien", "region": "verschiedene Regionen" }
}

How it works

denner.ch (a Nuxt 3 frontend) runs Prediggo, a merchandising/search engine, behind a JSON API at /search-api/simplePageContent. The frontend calls this endpoint server-side to render every category-listing and search-results page — this actor calls the same endpoint directly, so it gets full structured product data (name, price, promo, rating, images, tasting notes) in one lightweight request per page, without parsing HTML or running a browser.

There are two distinct product feeds behind this one API:

  • Category browsing (categoryUrl input) hits the "Wine Shop Listing" block (24 results/page) and returns products that are genuinely orderable through the webshop (isBuyable: true on every item tested).
  • Keyword search (searchQuery input) hits the "Pre-search" block (5 results/page, fixed) and returns Denner's weekly flyer/in-store promotions — real price and discount data, but not addable to an online cart (isBuyable: false on every item tested). Both are exposed here; the actor is honest about which mode you're in via the inStock field.

No anti-bot protection sits in front of either endpoint (plain nginx, confirmed live) — no proxy escalation or browser automation is needed.

Cost estimate

Each page fetch is a single lightweight JSON POST request (no browser, no rendering). A run of 100 results costs roughly 5 requests in category mode (24/page) or 20 requests in search mode (5/page), each completing in well under a second. Apify platform compute for a typical run is a few seconds. The run's usage cost only settles after the run status reports SUCCEEDED — reading the dataset mid-run undercounts the actual cost.

Limitations

  • inStock reflects the "orderable via the webshop" signal (isBuyable); it is null on any item where that signal isn't present, and it is false on every keyword-search result by design (search surfaces in-store-only weekly promotions, not the webshop catalogue — use categoryUrl for buyable items).
  • Prices and promotions are the national online values; results are in Swiss Francs (CHF) only.
  • Most wine and grocery items are unbranded / Denner private-label — brand is only populated for the "Denner"-branded own-label line.
  • Data is scraped from the public website and may change without notice.
  • Respect the website's terms of service and use responsibly.

Need this data on a schedule, or a custom version?

We run this scraper as a managed service for businesses: scheduled runs, deduplication, delta detection, and delivery to your inbox, Google Sheets, or API — maintenance included. We can also build a custom version with your exact fields and filters, or combine multiple sources into one feed.

See studioamba.dev/services or email hello@studioamba.dev for a free data sample. We maintain 300+ European web scrapers and answer within one business day.