# Galaxus & Digitec API — search Switzerland's largest online store and read products with CHF/EUR price, previous price, stock count, delivery date, pickup stock, specs, GTIN, price history, seller offers and reviews

> Search Galaxus (galaxus.ch, digitec.ch and the galaxus.de/.at/.fr/.it/.nl/.be storefronts) by keyword with the site's own filters: category id, brand id, price range, minimum star rating, and offer type (sold by Galaxus, in stock, second-hand, on promotion); 8 sort orders. Each row: product id, name, brand, price incl. and excl. VAT in CHF/EUR, previous price and its type, discount, promotion counter, offer type (Galaxus retail / marketplace / second-hand / refurbished), availability and delivery class, rating and count, category, energy class, image. Plus the source's total and the category / brand / offer-type facets with counts.
> ReefAPI engine `galaxus` · 5 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/galaxus/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed calls are free except verified SHEIN NOT_FOUND on product/detail and price (4 credits).
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http). Send the key as `Authorization: Bearer <key>`, or put it in the URL (`?key=<key>`) when the client has no header field, as ChatGPT does.

## Endpoints

### POST https://api.reefapi.com/galaxus/v1/search — 2 credits
Search Galaxus (galaxus.ch, digitec.ch and the galaxus.de/.at/.fr/.it/.nl/.be storefronts) by keyword with the site's own filters: category id, brand id, price range, minimum star rating, and offer type (sold by Galaxus, in stock, second-hand, on promotion); 8 sort orders. Each row: product id, name, brand, price incl. and excl. VAT in CHF/EUR, previous price and its type, discount, promotion counter, offer type (Galaxus retail / marketplace / second-hand / refurbished), availability and delivery class, rating and count, category, energy class, image. Plus the source's total and the category / brand / offer-type facets with counts.

**Parameters:**
- `query` (string, required) — Search words as typed into the Galaxus search box. The source never auto-redirects to a category here (the site does on its own pages), so the result is the plain keyword search.
- `site` (enum, optional, default "ch") — Which storefront to read. Prices, currency, VAT and assortment follow the storefront: ch = galaxus.ch (CHF), digitec = digitec.ch (CHF, electronics-focused subset of the same catalogue), de/at/fr/it/nl/be = galaxus.<cc> (EUR). [one of: ch, digitec, de, at, fr, it, nl, be]
- `category_id` (string, optional) — Galaxus category (product type) id, e.g. 48 = headphones, 24 = smartphones. Search facets list the ids with counts.
- `brand_id` (string, optional) — Galaxus brand id, e.g. 47 = Apple. Search facets list the ids with counts. A brand id the source does not know returns 0 rows.
- `min_price` (number, optional) — Lowest price incl. VAT in the storefront's currency. Swiss writing is accepted: 1'250, 1’250.–
- `max_price` (number, optional) — Highest price incl. VAT in the storefront's currency.
- `min_rating` (enum, optional) — Only products whose average star rating is at least this (the site's own three buckets). [one of: 4.75, 3.75, 2.75]
- `offer` (enum, optional) — Offer filter as on the site: galaxus = sold by Galaxus itself, in_stock = in stock now, second_hand = used / resale / refurbished, promotion = on promotion. [one of: galaxus, in_stock, second_hand, promotion]
- `sort` (enum, optional, default "relevance") — Result order (the site's 8 orders). [one of: relevance, price_asc, price_desc, rating, newest, discount, bestseller, availability]
- `page` (integer, optional, default 1) — Result page. The source serves at most the first ~2,000 rows of any search (offset 2000 is its last page start); pages past that are refused with the last valid page number.
- `page_size` (enum, optional, default "24") — Rows per page. [one of: 24, 48, 96]
- `lang` (enum, optional) — Interface language of names, specifications and descriptions. Default = the storefront's first language (de for ch/digitec/de/at). ch and digitec also take fr, it, en; every site takes en. Note: with en the source leaves some product descriptions empty and some specification group names in German. [one of: de, fr, it, en, nl]

**Returns:** results[]{product_id, name, full_name, properties, brand, brand_id, url, price, price_excl_vat, currency, previous_price{price, price_excl_vat, type, rebate_pct}, discount_pct, promotion{type, rebate_pct, items_total, items_sold}, offer_type, offer_id, availability_icon, delivery_class, is_future_release, rating, rating_count, category{id,name,url}, energy_class, image, price_per_unit{price, price_excl_vat, currency, unit}, sales_counter, labels[], variant_labels[], min_order_quantity, can_add_to_cart} + total, page, page_size, last_page, has_more, search_pass, fallback_results (true = no keyword match, rows come from the site's semantic fallback), corrected_query, price_basis, facets{categories[], brands[], offer_types[], price_range}

**Example request body:**
```json
{
  "query": "kopfhörer",
  "brand_id": "47"
}
```

### POST https://api.reefapi.com/galaxus/v1/product — 2 credits
Full Galaxus/Digitec product record by id: price incl./excl. VAT, previous price with its type, discount, promotion counter, volume prices, offer type and marketplace merchant, number of seller offers, central-warehouse stock count, expected delivery time, stock per pickup branch, GTIN/EAN, manufacturer part number, brand, category, rating, questions, sales rank in category, price-history summary (low/high, typical/low/high verdict), energy class, description, summary, key and full specifications, warranty, return policy, variants (colour/storage with their own price), images.

**Parameters:**
- `product_id` (string, required) — Galaxus product id exactly as a search row returns it (digits, e.g. 76663413). A galaxus/digitec product URL ending in -76663413 is accepted too. The same id works on every site.
- `site` (enum, optional, default "ch") — Which storefront to read. Prices, currency, VAT and assortment follow the storefront: ch = galaxus.ch (CHF), digitec = digitec.ch (CHF, electronics-focused subset of the same catalogue), de/at/fr/it/nl/be = galaxus.<cc> (EUR). [one of: ch, digitec, de, at, fr, it, nl, be]
- `lang` (enum, optional) — Interface language of names, specifications and descriptions. Default = the storefront's first language (de for ch/digitec/de/at). ch and digitec also take fr, it, en; every site takes en. Note: with en the source leaves some product descriptions empty and some specification group names in German. [one of: de, fr, it, en, nl]

**Returns:** {product_id, site, name, full_name, brand, brand_id, gtin, manufacturer_part_number, url, category{id,name,url}, price, price_excl_vat, currency, price_basis, previous_price{...}, discount_pct, promotion, volume_discounts[], offer_type, offer_id, merchant{name,country,url}, offer_count, availability{icon, delivery_class, stock_status, warehouse_quantity, warehouse_more_than_10, expected_delivery_at, pickup[]{branch, icon, available_quantity, more_than_10, collectable_at}}, rating, rating_count, questions_answered, questions_unanswered, sales_rank_in_category, price_history_summary{type, reason, fluctuation, low, high}, energy_class, description, summary[], key_specifications[], specifications[]{group,name,values[]}, warranties[], return_policy, variants[]{group,value,product_id,price,offer_type,availability_icon}, images[]}

**Example request body:**
```json
{
  "product_id": "76663413"
}
```

### POST https://api.reefapi.com/galaxus/v1/price_history — 1 credit
Price history of a Galaxus product for the chosen storefront (the data behind the site's own price chart, which shows the lowest price of each day): each point is a price and the date it took effect, so a point holds until the next one. The first point can be older than the window: it is the price in force when the window starts. Default window 365 days.

**Parameters:**
- `product_id` (string, required) — Galaxus product id exactly as a search row returns it (digits, e.g. 76663413). A galaxus/digitec product URL ending in -76663413 is accepted too. The same id works on every site.
- `site` (enum, optional, default "ch") — Which storefront to read. Prices, currency, VAT and assortment follow the storefront: ch = galaxus.ch (CHF), digitec = digitec.ch (CHF, electronics-focused subset of the same catalogue), de/at/fr/it/nl/be = galaxus.<cc> (EUR). [one of: ch, digitec, de, at, fr, it, nl, be]
- `days` (integer, optional, default 365) — How far back, in days (7-1095).

**Returns:** points[]{date, valid_from, price, price_excl_vat, currency} + latest (= current price on 8 of 8 products checked), low, high, has_history_older_than_3_months

**Example request body:**
```json
{
  "product_id": "47736372"
}
```

### POST https://api.reefapi.com/galaxus/v1/offers — 1 credit
Every offer for one Galaxus product in one call: Galaxus's own retail offer and each marketplace seller's offer with price incl./excl. VAT, seller name and country, availability and delivery class.

**Parameters:**
- `product_id` (string, required) — Galaxus product id exactly as a search row returns it (digits, e.g. 76663413). A galaxus/digitec product URL ending in -76663413 is accepted too. The same id works on every site.
- `site` (enum, optional, default "ch") — Which storefront to read. Prices, currency, VAT and assortment follow the storefront: ch = galaxus.ch (CHF), digitec = digitec.ch (CHF, electronics-focused subset of the same catalogue), de/at/fr/it/nl/be = galaxus.<cc> (EUR). [one of: ch, digitec, de, at, fr, it, nl, be]

**Returns:** offers[]{offer_id, offer_type, price, price_excl_vat, currency, seller, seller_country, seller_url, availability_icon, delivery_class, can_add_to_cart, url} + cheapest

**Example request body:**
```json
{
  "product_id": "76663413"
}
```

### POST https://api.reefapi.com/galaxus/v1/reviews — 1 credit
Buyer reviews of a Galaxus product: star rating, title, text, date, author display name, verified-buyer flag, pros/cons, helpful votes, images. Reviews of the product's other variants are included, as on the site.

**Parameters:**
- `product_id` (string, required) — Galaxus product id exactly as a search row returns it (digits, e.g. 76663413). A galaxus/digitec product URL ending in -76663413 is accepted too. The same id works on every site.
- `site` (enum, optional, default "ch") — Which storefront to read. Prices, currency, VAT and assortment follow the storefront: ch = galaxus.ch (CHF), digitec = digitec.ch (CHF, electronics-focused subset of the same catalogue), de/at/fr/it/nl/be = galaxus.<cc> (EUR). [one of: ch, digitec, de, at, fr, it, nl, be]
- `sort` (enum, optional, default "most_helpful") — Review order. [one of: most_helpful, newest, positive, negative]
- `rating` (integer, optional) — Only reviews with this many stars.
- `page` (integer, optional, default 1) — Review page.
- `page_size` (integer, optional, default 20) — Reviews per page (1-50).
- `lang` (enum, optional) — Interface language of names, specifications and descriptions. Default = the storefront's first language (de for ch/digitec/de/at). ch and digitec also take fr, it, en; every site takes en. Note: with en the source leaves some product descriptions empty and some specification group names in German. [one of: de, fr, it, en, nl]

**Returns:** reviews[]{review_id, rating, title, text, date, author, verified_buyer, helpful_votes, unhelpful_votes, pros[], cons[], images[], comments, original_language} + total_reviews

**Example request body:**
```json
{
  "product_id": "76663413"
}
```

## At scale
- **Volume:** 5M+ requests a day, measured at 60 requests a second across the fleet with no
  central bottleneck. Per-key limits are raised for high-volume accounts; volume pricing on request.
- **Missing a source:** tell us a site we do not cover and it becomes an engine. A customer asked
  for bestprice.gr on 21 Sep 2026 and it was in the catalog on 22 Sep.
- **Support:** 2 minute median time from a question in the live chat to the first answer. Setup
  help included, no support tier to buy.
- **One key, one credit pool** across every API. No per-site plans, no separate subscriptions.

## More
- Try it live, no code: https://reefapi.com/playground?engine=galaxus
- Human docs page: https://reefapi.com/docs/galaxus
- Overview page: https://reefapi.com/galaxus-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
