# Galaxus Scraper \[$1/1K💰] | Prices | Digitec | Product Data (`ahmed_jasarevic/galaxus-ch-scraper`) Actor

Scrape product prices and data from galaxus.ch and digitec.ch, Switzerland's #1 online store. Get CHF prices, ratings, specs, availability and price history for price monitoring and market research.

- **URL**: https://apify.com/ahmed\_jasarevic/galaxus-ch-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.88 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Galaxus Scraper & Digitec API — Swiss Product Data, Prices & Price History in CHF

Extract product prices, ratings and specifications from **galaxus.ch** and **digitec.ch** — Switzerland's #1 online retailer (Migros-owned) — for Swiss price monitoring, market research and e-commerce product feeds. No official Galaxus or Digitec API exists; this actor gives you one.

### Main Use Cases

- **Swiss online price monitoring** — track CHF prices and price history across Galaxus and Digitec
- **Market research & competitor analysis** — enumerate entire categories or brand catalogs with ratings and review counts
- **Building structured product databases** — clean per-product records for feeds, marketplaces and internal tools
- **Electronics price tracking** — smartphones, notebooks, GPUs and more, sorted by price or rating
- **Product catalog exports for AI & LLM datasets** — structured Swiss retail data for RAG, AI training and agent workflows
- **Retailer price comparison** — the same chipsets, phones and appliances across the two biggest Swiss web shops

### How It Works

Instead of rendering pages in a browser, the actor talks directly to the shops' **internal GraphQL API** (Relay persisted queries) — the same endpoint the galaxus.ch / digitec.ch frontend uses. No browser, no CAPTCHAs, no HTML parsing, no anti-bot workarounds. You can scrape by **search keyword**, **category**, **brand**, or **individual product URLs**, in English, German, French or Italian. The result is a clean structured dataset (JSON, CSV, Excel, XML) in the Apify Dataset.

### How to Scrape Galaxus & Digitec Product Data

1. Open the actor in the Apify Console and click **Start**.
2. In the **Input** tab, pick the site (`galaxus.ch` or `digitec.ch`) and language (`en`, `de`, `fr`, `it`).
3. Provide at least one selector: **Search queries**, **Category IDs**, **Brand IDs**, or **Product URLs**.
4. Optionally enable **Include full product details** to also fetch specifications, gallery images, price history lows/highs, warranty, return policy and seller info per product.
5. Click **Start** and download the results from the **Dataset** tab in JSON, CSV, Excel or HTML.

### Monitor CHF Prices & Track Price History for Market Research

Galaxus publicly discloses the lowest and highest price of a product over the last 3 months — with `includeDetails` you get `priceHistoryLow` and `priceHistoryHigh` per product. That makes this actor a practical base for:

- **Price drop monitoring** — watch a product's price history and react to dips (schedule runs daily)
- **Seasonal pricing analysis** — identify when Swiss retailers discount electronics, home appliances and more
- **Dynamic-pricing research** — Galaxus adjusts prices several times a day; a scheduled scraper records these movements
- **Competitive positioning** — compare Galaxus vs Digitec prices on the same item to see which shop is cheaper

### Build E-commerce Product Databases & Product Feeds From Galaxus Data

Every dataset item is one product with stable identifiers you can join on: `id`, `gtin`, brand, category and canonical URL. With `includeDetails` you also get full specifications (grouped), gallery images, seller types (`RETAIL`, `RESALE` marketplace) and warranty/return policy — everything needed to build or refresh a Swiss e-commerce product feed.

### Input — Configuring a Galaxus / Digitec Scraper Run

| Field | Type | Required | Default | Notes |
|-------|------|----------|---------|-------|
| `site` | string | No | `galaxus.ch` | `galaxus.ch` (general merchandise) or `digitec.ch` (electronics) |
| `language` | string | No | `en` | `en`, `de`, `fr` or `it` |
| `searchQueries` | string\[] | No \* | — | Keywords to search, e.g. `iphone 15`, `ssd 1tb` |
| `categoryIds` | string\[] | No \* | — | Product-type IDs from the category URL, e.g. `24` = Smartphones, `62` = Notebooks |
| `brandIds` | string\[] | No \* | — | Brand IDs from the brand URL, e.g. `47` = Apple |
| `productUrls` | string\[] | No \* | — | Full product page URLs to scrape individually |
| `maxItems` | integer | No | `100` | Max products in total (1–100,000). Free users are capped at 10 |
| `includeDetails` | boolean | No | `false` | Premium add-on: spec sheets, images, price history, seller info (billed per product) |
| `sortOrder` | string | No | `RELEVANCE` | `RELEVANCE`, `LOWEST_PRICE`, `HIGHEST_PRICE`, `RATING`, `NEWEST`, `AVAILABILITY` |
| `minPrice` | integer | No | — | Only products priced at least this many CHF |
| `maxPrice` | integer | No | — | Only products priced at most this many CHF |
| `proxy` | object | No | — | Apify proxy configuration (normally not needed) |

\* At least one of `searchQueries`, `categoryIds`, `brandIds`, or `productUrls` must be provided.

**Finding IDs**: category URLs end in `-<id>` (e.g. `galaxus.ch/en/s1/producttype/smartphones-24` → category `24`); brand URLs end in `-<id>` (e.g. `galaxus.ch/en/s1/brand/apple-47` → brand `47`).

### Output — Structured Swiss Product Data Fields

| Field | Description |
|-------|-------------|
| `id` | Galaxus/Digitec product ID (stable identifier) |
| `name` / `nameWithProperties` | Product name (with variant properties when details are enabled) |
| `brand` | Brand name, e.g. `Apple` |
| `price` / `priceExclusive` | Price in CHF including / excluding VAT |
| `currency` | Always `CHF` |
| `averageRating` / `ratingCount` | Customer rating and number of reviews |
| `availability` | Delivery classification, e.g. `ONE_DAY`, `WITHIN4_DAYS` |
| `url` | Canonical product URL |
| `imageUrl` / `images` | Preview image / full gallery (details mode) |
| `category` / `categoryRank` | Product category and sales rank within it (details mode) |
| `gtin` | Global Trade Item Number (details mode) |
| `priceHistoryLow` / `priceHistoryHigh` | Lowest/highest price in the last 3 months (details mode) |
| `sellerTypes` | Offer types, e.g. `RETAIL`, `RESALE` marketplace (details mode) |
| `warranty` / `returnPolicy` | Warranty and return conditions (details mode) |
| `specifications` | Grouped technical specifications (details mode) |
| `scrapedAt` | Timestamp of the scrape |

Without `includeDetails` you get the list-level fields (id, name, brand, price, currency, rating, availability, url, imageUrl, category, scrapedAt) — ideal for fast, cheap full-category dumps. With `includeDetails: true` every product is enriched on a detail-page request.

### Example Input

```json
{
  "site": "galaxus.ch",
  "language": "en",
  "searchQueries": ["iphone 15"],
  "maxItems": 50,
  "includeDetails": true
}
```

### Example Output

Each dataset item is one product. With `includeDetails: false` you get the list-level fields; with `includeDetails: true` the item is enriched:

```json
{
  "id": 38606678,
  "name": "iPhone 15",
  "brand": "Apple",
  "price": 699,
  "priceExclusive": 646.62,
  "currency": "CHF",
  "averageRating": 4.72,
  "ratingCount": 1959,
  "availability": "ONE_DAY",
  "url": "https://www.galaxus.ch/en/s1/product/apple-iphone-15-128-gb-black-610-sim-esim-5g-smartphones-38606678",
  "imageUrl": "https://static.digitecgalaxus.ch/...",
  "category": "Smartphones",
  "categoryRank": 57,
  "gtin": "195949036064",
  "priceHistoryLow": 557,
  "priceHistoryHigh": 579,
  "sellerTypes": ["RESALE"],
  "warranty": ["24 Months Warranty (Bring-in)"],
  "returnPolicy": "30-day right of return",
  "specifications": [
    {
      "group": "General information",
      "specifications": [{ "title": "Item number", "value": "38606678" }]
    }
  ],
  "images": [{ "url": "https://static.digitecgalaxus.ch/...", "description": "Actual product image..." }],
  "scrapedAt": "2026-09-18T10:00:00.000Z"
}
```

### Integrations & Automation

- **Apify REST API** — call the actor programmatically from any app (`POST https://api.apify.com/v2/acts/ahmed_jasarevic~galaxus-ch-scraper/runs`)
- **Apify Python / JavaScript SDKs** — `client.actor("ahmed_jasarevic/galaxus-ch-scraper").call(input)`
- **Apify MCP server** — callable from Claude, GPT and other MCP clients (see "For AI Agents & LLM Apps" below)
- **Webhooks** — get notified when a scheduled run finishes
- **Scheduler** — set a **daily** cadence for price monitoring, or **weekly** for catalog/market research snapshots; recurring usage also improves the actor's quality and store-placement signals

Paid Apify plans can scrape up to `maxItems` per run; free users are capped at 10 items.

### Related Actors for E-commerce Price & Product Data

- [**Amazon Scraper**](https://apify.com/junglee/free-amazon-product-scraper) — Amazon product data, prices and ratings (Apify official)
- [**eBay Scraper**](https://apify.com/automation-lab/ebay-scraper) — eBay listings, prices and sold items
- [**Zalando Scraper**](https://apify.com/ahmed_jasarevic/zalando-scraper) — fashion & apparel prices — Zalando is Switzerland's #2 online store
- [**Chrono24 Scraper**](https://apify.com/ahmed_jasarevic/chrono24-scraper) — Swiss watch marketplace — prices, specs and seller data
- [**Amazon Bestsellers Scraper**](https://apify.com/ahmed_jasarevic/amazon-bestsellers-scraper) — bestseller rankings, prices and reviews

### FAQ — Galaxus API, Price Tracking & Alternatives

**Does Galaxus have an official API?** No. Neither Galaxus nor Digitec offers a public product API. Programmatic access to their product data is what this actor provides — without scraping the HTML pages.

**Why use this actor instead of an official API?** Because there is no official public API for Galaxus product data, price history, or catalog exports. This actor talks to the same internal GraphQL endpoint the shops' own frontend uses, so you get accurate, up-to-date data in structured form.

**What are alternatives to Galaxus and Digitec for Swiss online shopping?** The main Swiss online retailers are Brack.ch, Interdiscount, Microspot, MediaMarkt.ch, Zalando (fashion) and melectronics; price-comparison sites like toppreise.ch and Cheapify (Swiss) and idealo/Geizhals (EU) aggregate Swiss product prices. For Amazon in Switzerland you can use the [Amazon Scraper](https://apify.com/junglee/free-amazon-product-scraper).

**What is the difference between Galaxus and Digitec?** Both shops are run by Digitec Galaxus AG (Migros Group). Digitec focuses on consumer electronics; Galaxus is the general-merchandise marketplace with millions of products across every category. They share a catalog backbone and both run this actor's GraphQL endpoint — so you pick per site with the `site` input.

**How can I track Galaxus prices over time?** Run the actor with `includeDetails: true` and store `price`, `priceHistoryLow` and `priceHistoryHigh` per product in your own database. Schedule it daily via the Apify scheduler and compare snapshots — that gives you a full Swiss price-history dataset.

**When is the best time to buy electronics in Switzerland?** Galaxus/Digitec adjust prices dynamically, sometimes several times a day, and run promotions around Black Friday, seasonal sales and product launches. The 3-month `priceHistoryLow` field tells you whether today's price is near a known low.

**How do I scrape Galaxus without getting blocked?** The actor never renders pages in a browser and works against the shop's internal GraphQL API, so there are no CAPTCHAs to solve. A proxy is optional and normally not required; if you ever hit rate limits, enable Apify proxy in the input.

**Does this actor work for galaxus.de?** No — this actor covers **galaxus.ch** and **digitec.ch** (Swiss sites, prices in CHF) only.

**What does the free tier give me?** Free Apify users can scrape up to 10 items per run — enough to validate the output shape and data quality before upgrading.

**How does this actor compare with other Galaxus scrapers on the Apify Store?** See the Competitive Positioning table below for the differences we verified against other public Galaxus actors.

### Competitive Positioning

We verified the following differences against other public Galaxus/Digitec actors on the Apify Store (as of September 2026):

| Capability | Other Galaxus actors | This actor |
|------------|---------------------|------------|
| Price per 1,000 list results (FREE tier) | e.g. `santamaria-automations/galaxus-ch-scraper` at **$3.00 / 1,000** | **$1.00 / 1,000** (result event $0.001) |
| Sites covered | Single site (usually only galaxus.ch) | **Both galaxus.ch and digitec.ch** |
| Full details incl. price history, specs, sellers | Varies (some price details separately) | Built-in `includeDetails` add-on ($0.0015/product) |
| GraphQL (no browser) | Some use it | Yes — no CAPTCHAs, no HTML parsing |
| Language support | Mostly en/de | `en`, `de`, `fr`, `it` |

### For AI Agents & LLM Apps

**What it returns:** One dataset item per product from galaxus.ch or digitec.ch, with price in CHF, brand, ratings, availability, URL and (in details mode) specs, gallery images, GTIN and 3-month price history lows/highs.

**Minimal working input:**

```json
{
  "site": "galaxus.ch",
  "language": "en",
  "searchQueries": ["iphone 15"],
  "maxItems": 10
}
```

**Variant inputs (distinct modes):**

```json
{
  "site": "digitec.ch",
  "categoryIds": ["24"],
  "sortOrder": "LOWEST_PRICE",
  "maxItems": 50
}
```

```json
{
  "site": "galaxus.ch",
  "brandIds": ["47"],
  "includeDetails": true,
  "maxItems": 25
}
```

```json
{
  "site": "galaxus.ch",
  "productUrls": ["https://www.galaxus.ch/en/s1/product/apple-iphone-15-128-gb-black-610-sim-esim-5g-smartphones-38606678"],
  "includeDetails": true
}
```

**Output fields (list mode):** `id`, `name`, `brand`, `price`, `priceExclusive`, `currency`, `averageRating`, `ratingCount`, `availability`, `url`, `imageUrl`, `category`, `scrapedAt`.
**Output fields (details mode adds):** `nameWithProperties`, `categoryRank`, `gtin`, `priceHistoryLow`, `priceHistoryHigh`, `sellerTypes`, `warranty`, `returnPolicy`, `specifications`, `images`.

**Behaviors an agent should know:**

- Provide **at least one** of `searchQueries`, `categoryIds`, `brandIds`, or `productUrls`; otherwise the run cannot start.
- **Free users are capped at 10 items** regardless of `maxItems`. Paid plans can scrape up to `maxItems` (default 100, max 100,000).
- `includeDetails` is a **paid add-on billed per product** (one `galaxus-product-details` event each) and roughly doubles the number of HTTP requests — don't enable it for large inventories unless the extra fields are actually needed.
- `minPrice` / `maxPrice` are **CHF** filters. `sortOrder` applies to search and category results.
- On a rare Galaxus frontend rebuild the actor may return `HC0020: The specified persisted operation key is invalid` — the maintainer re-extracts the persisted-query hashes from the live CDN bundles, so retry later or open an issue.
- Currency is always CHF; prices are integers in Swiss francs.

**Billing model (pay-per-event):** result event **$0.001** per dataset item at FREE tier (≈ $1 per 1,000 list results) + `galaxus-product-details` event **$0.0015** per product when `includeDetails: true`, both discounted on Bronze+ plans; plus Apify platform compute (one actor-start event per GB memory, min 1).

### Legal & Compliance Disclaimer

This actor is an independent community project and is **not affiliated with, endorsed by, or sponsored by** Digitec Galaxus AG, Galaxus, Digitec, or the Migros Group.

The actor only accesses **publicly available product data** through the same internal GraphQL endpoint that the galaxus.ch and digitec.ch public websites themselves use. It does not bypass login walls, does not solve CAPTCHAs, and does not circumvent access controls. It returns product information only — no personal or contact data.

You are responsible for complying with the websites' Terms of Service and all applicable law (including Swiss data-protection law and the EU GDPR where relevant) when using scraped data. Data should be used in accordance with the terms of the source platform and applicable consumer, competition and data-protection regulations.

### SEO Keywords

galaxus scraper, digitec scraper, galaxus api, digitec api, galaxus price monitoring, galaxus price history, digitec price history, swiss online store price comparison, swiss e-commerce data extraction, galaxus product data, digitec product data, price tracking switzerland, swiss retail data, swiss electronics price tracker, smartphone price tracking switzerland, galaxus preisvergleich, preisüberwachung schweiz, galaxus alternatives, best time to buy electronics switzerland, swiss market research data, product feed switzerland, galaxus product database

# Actor input Schema

## `site` (type: `string`):

Which shop to scrape. galaxus.ch (general merchandise) or digitec.ch (electronics).

## `language` (type: `string`):

Language of the scraped content (product names, descriptions, specs).

## `searchQueries` (type: `array`):

Keywords to search for. Each query returns a list of matching products (e.g. "iphone 15", "ssd 1tb").

## `categoryIds` (type: `array`):

Galaxus/Digitec product-type IDs to browse (e.g. 24 = Smartphones, 62 = Notebooks). Find them in the category URL: galaxus.ch/en/s1/producttype/smartphones-24. All products in the category are returned.

## `brandIds` (type: `array`):

Brand IDs to browse (e.g. 47 = Apple). Find them in the brand URL: galaxus.ch/en/s1/brand/apple-47. All products of the brand are returned.

## `productUrls` (type: `array`):

Full product page URLs to scrape individually, e.g. https://www.galaxus.ch/en/s1/product/apple-iphone-15-128gb-...

## `maxItems` (type: `integer`):

Maximum number of products to scrape in total. Free users are capped at 10.

## `includeDetails` (type: `boolean`):

When enabled, each product also gets a detail-page request that adds full specifications, gallery images, price history, seller/offer info and category ranking. Roughly doubles the number of requests. This is a premium add-on billed per product (pay-per-event).

## `sortOrder` (type: `string`):

Sorting for search and category results.

## `minPrice` (type: `integer`):

Only return products with a price of at least this amount in CHF.

## `maxPrice` (type: `integer`):

Only return products with a price of at most this amount in CHF.

## `proxy` (type: `object`):

Select proxies to be used by your crawler.

## Actor input object example

```json
{
  "site": "galaxus.ch",
  "language": "en",
  "searchQueries": [
    "iphone 15"
  ],
  "categoryIds": [],
  "brandIds": [],
  "productUrls": [],
  "maxItems": 100,
  "includeDetails": false,
  "sortOrder": "RELEVANCE",
  "proxy": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "site": "galaxus.ch",
    "language": "en",
    "searchQueries": [
        "iphone 15"
    ],
    "categoryIds": [],
    "brandIds": [],
    "productUrls": [],
    "maxItems": 100,
    "includeDetails": false,
    "sortOrder": "RELEVANCE",
    "proxy": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/galaxus-ch-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "site": "galaxus.ch",
    "language": "en",
    "searchQueries": ["iphone 15"],
    "categoryIds": [],
    "brandIds": [],
    "productUrls": [],
    "maxItems": 100,
    "includeDetails": False,
    "sortOrder": "RELEVANCE",
    "proxy": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/galaxus-ch-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "site": "galaxus.ch",
  "language": "en",
  "searchQueries": [
    "iphone 15"
  ],
  "categoryIds": [],
  "brandIds": [],
  "productUrls": [],
  "maxItems": 100,
  "includeDetails": false,
  "sortOrder": "RELEVANCE",
  "proxy": {
    "useApifyProxy": false
  }
}' |
apify call ahmed_jasarevic/galaxus-ch-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/galaxus-ch-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/odiDYLGCB6BCKe1Y9/builds/T9kjdckCUG0XfC6xx/openapi.json
