Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the HOFER (Austria) API page →
E-commerce & Marketplaces

HOFER (Austria) API & Scraper

HOFER is ALDI SÜD's supermarket chain in Austria.

6 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

This API reads hofer.at live and returns its prices as JSON. `search` takes a keyword, a category, an offer date or nothing (the whole online assortment, 1,157 products on 2026-10-18) and returns each product with its euro price, the unit price and what it is per (1 kg, 100 g, 500 ml, pro Stück), the struck-through "statt" price on offers, pack size, brand and badges. Weighed goods such as fresh meat come with the price of the estimated piece, its weight and the price per kilo. `offers` lists HOFER PREIS,-WOCHEN and HOFER Preis - Dauerhaft Günstiger. `promotions` gives the dated Angebote to pass to search. `product/detail` adds ingredients, nutrition and storage. `stores` finds HOFER stores by town, postcode or coordinates.

Reference

What a HOFER field actually contains

Fields that read differently from how they look, measured on live responses on 2026-10-18.

FieldWhat it holds
price, price_displayThe shelf price in euros as hofer.at prints it ("€ 4,50"). It matched the product page on 14 of 14 products checked.
price_is_estimate, estimated_weightWeighed goods: price is for the estimated piece (Schweinefilet € 4,50 for 0.5 kg) and HOFER bills the exact weight at the till. The per-kilo price is the unit_price (8.99 per 1 kg).
unit_price, unit_price_basisThe Grundpreis and what it is per, never rescaled: 1.33 per "100 g", 0.74 per "500 ml" for a 330 ml bottle at 0.49. Compare products only on the same basis. Null when hofer.at prints none.
was_price, discount_percentOn offers, the "statt" price and the discount computed from the two prices. hofer.at prints no percentage of its own.
on_sale_dateThe day a dated offer starts in store. Future dates are announced offers, not stock.
idHOFER's 18-digit product id; keep the leading zeros. hofer.at publishes no EAN barcode.

Prices were identical in Wien, Graz and Innsbruck stores; store_id narrows a listing to one store's range.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/hofer/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "milch",
    "limit": 12
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "hofer",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 431.8,
    "record_count": 12,
    "bytes": 22459,
    "cache_hit": false,
    "warnings": [
      "Unknown parameters ignored: include_pii"
    ],
    "upstream_requests": 1,
    "charged_credits": 2,
    "version": "1.0.0",
    "request_id": "e0bf35f453a94230",
    "queue_ms": 1,
    "fetched_at": "2026-10-18T17:44:59.455Z"
  },
  "data": {
    "products": [
      {
        "id": "000000000643505002",
        "title": "Milch Maus Schneebälle, Milchcreme",
        "brand": "CHOCEUR",
        "url": "https://www.hofer.at/produkt/choceur-milch-maus-schneebaelle-milchcreme-000000000643505002",
        "price": 2.49,
        "price_display": "€ 2,49",
        "currency": "EUR",
        "price_mismatch": false,
        "price_is_estimate": false,
        "estimated_weight": null,
        "was_price": null,
        "was_price_display": null,
        "discount_percent": null,
        "savings_display": null,
        "unit_price": 1.92,
        "unit_price_display": "€ 1,92/100 g",
        "unit_price_basis": "100 g",
        "pack_size": "130 g",
        "deposit": null,
        "deposit_display": null,
        "deposit_type": null,
        "badges": [],
        "on_sale_date": "2026-10-23",
        "on_sale_date_display": "Verfügbar ab 23.10.2026",
        "categories": [],
        "images": [
          "https://dm.emea.cms.aldi.cx/is/image/aldiprodeu/product/jpg/scaleWidth/1500/a6801ce2-efe3-4048-86ce-545fc2b91779/Milch%20Maus%20Schneeb%C3%A4lle%2C%20Milchcreme"
        ],
        "age_restriction": null,
        "alcohol": null,
        "weight_type": "0",
        "online_purchasable": false
      },
      {
        "id": "000000000643505001",
        "title": "Milch Maus Schneebälle, Milch Haselnuss",
        "brand": "CHOCEUR",
        "url": "https://www.hofer.at/produkt/choceur-milch-maus-schneebaelle-milch-haselnuss-000000000643505001",
        "price": 2.49,
        "price_display": "€ 2,49",
        "currency": "EUR",
        "price_mismatch": false,
        "price_is_estimate": false,
        "estimated_weight": null,
        "was_price": null,
        "was_price_display": null,
        "discount_percent": null,
        "savings_display": null,
        "unit_price": 1.92,
        "unit_price_display": "€ 1,92/100 g",
        "unit_price_basis": "100 g",
        "pack_size": "130 g",
        "deposit": null,
        "deposit_display": null,
        "deposit_type": null,
        "badges": [],
        "on_sale_date": "2026-10-23",
        "on_sale_date_display": "Verfügbar ab 23.10.2026",
        "categories": [],
        "images": [
          "https://dm.emea.cms.aldi.cx/is/image/aldiprodeu/product/jpg/scaleWidth/1500/3f326ebe-dbb7-487e-84c8-ece71963201a/Milch%20Maus%20Schneeb%C3%A4lle%2C%20Milch%20Haselnuss"
        ],
        "age_restriction": null,
        "alcohol": null,
        "weight_type": "0",
        "online_purchasable": false
      },
      {
        "id": "000000000000632339",
        "title": "Schokomilch",
        "brand": "MILSANI",
        "url": "https://www.hofer.at/produkt/milsani-schokomilch-000000000000632339",
        "price": 0.39,
        "price_display": "€ 0,39",
        "currency": "EUR",
        "price_mismatch": false,
        "price_is_estimate": false,
        "estimated_weight": null,
        "was_price": 0.55,
        "was_price_display": "€ 0,55",
        "discount_percent": 29.1,
        "savings_display": null,
        "unit_price": 1.95,
        "unit_price_display": "€ 1,95/1 l",
        "unit_price_basis": "1 l",
        "pack_size": "200 ml",
        "deposit": null,
        "deposit_display": null,
        "deposit_type": null,
        "badges": [],
        "on_sale_date": null,
        "on_sale_date_display": null,
        "categories": [
          {
            "id": "[trimmed-depth]",
            "name": "[trimmed-depth]"
          },
          {
            "id": "[trimmed-depth]",
            "name": "[trimmed-depth]"
          }
        ],
        "images": [
          "https://dm.emea.cms.aldi.cx/is/image/aldiprodeu/product/jpg/scaleWidth/1500/12ae8e76-6948-41da-b5c8-2c1ad09db928/Schokomilch"
        ],
        "age_restriction": null,
        "alcohol": null,
        "weight_type": "0",
        "online_purchasable": false
      }
    ],
    "total": 31,
    "offset": 0,
    "limit": 12,
    "page": 1,
    "last_page": 3,
    "has_more": true,
    "page_short": false,
    "facets": [
      {
        "name": "brand-name",
        "label": "Marken",
        "parameter": "brandName",
        "values": [
          {
            "key": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "key": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "key": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          }
        ]
      },
      {
        "name": "country-origin",
        "label": "Herkunftsland",
        "parameter": "countryOrigin",
        "values": []
      },
      {
        "name": "category-tree",
        "label": "Kategorie",
        "parameter": "categoryTree",
        "values": [
          {
            "key": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "key": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]",
            "children": "[trimmed-depth]"
          },
          {
            "key": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]",
            "children": "[trimmed-depth]"
          }
        ]
      }
    ],
    "spelling_suggestion": null,
    "keyword_redirect": null,
    "assortment_scope": "national",
    "store_id": null,
    "store_defaulted": false
  }
}
Actions

What the HOFER (Austria) API does

ActionDescriptionConcrete use caseKey params
searchSearch products, browse a category, read a dated offer (Angebote) or page the whole online assortment; optionally one store's range.Pricing teams call search to search products, browse a category, read a dated offer (Angebote) or page the whole online as….query, categoryKey, promotionKey, url, brandName, ...
offersList a current offer range HOFER PREIS,-WOCHEN / HOFER Preis - Dauerhaft Günstiger.Marketplace operators call offers to list a current offer range HOFER PREIS,-WOCHEN / HOFER Preis - Dauerhaft Günstiger..type, brandName, categoryTree, theme, store_id, ...
promotionsList current and upcoming offer dates (Angebote ab...) and their themes.Catalog enrichment teams call promotions to list current and upcoming offer dates (Angebote ab...) and their themes..none
product/detailRead one product: prices, description and label.Retail analysts call product/detail to read one product.id
categoriesGet the live category tree with the offer ranges marked.Pricing teams call categories to get the live category tree with the offer ranges marked..none
storesFind HOFER stores by town, postcode or coordinates (store ids for search).Marketplace operators call stores to find HOFER stores by town, postcode or coordinates (store ids for search)..query, latitude, longitude, page, limit
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/hofer/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"milch","limit":12}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.hofer.search with {"query":"milch","limit":12}.
Use cases

Who uses this API and why

  • Follow HOFER PREIS,-WOCHEN and the weekly Angebote for an Austrian deals app.
  • Compare Austrian supermarket prices per kilo or litre with the published Grundpreis.
  • Track price changes across HOFER's online assortment with a daily sweep.
  • Combine HOFER with our aldi-de API to compare ALDI SÜD prices in Austria and Germany.
  • Point users to the nearest HOFER store with the store finder.
FAQ

Questions developers ask before integrating

Is HOFER the same as ALDI?

HOFER is the name ALDI SÜD trades under in Austria. Our aldi-de API covers ALDI SÜD in Germany with the same fields.

Does HOFER have a public API?

No public one. This API reads what hofer.at shows a logged-out visitor and returns it as JSON. No account is needed.

How do I get the HOFER PREIS,-WOCHEN products?

Call offers with type weekly (9 products on 2026-10-18); type permanent_low gives HOFER Preis - Dauerhaft Günstiger (51). For the dated Angebote, call promotions and pass a date to search as promotionKey.

Why is a meat price marked as an estimate?

Because HOFER sells it by weight: the shelf shows a price for an estimated piece and the till charges the exact weight. price_is_estimate and estimated_weight say so, and unit_price is the price per kilo.

Are prices different between stores?

Not in our measurements: three stores in Wien, Graz and Innsbruck priced every common product identically.

Can I get EAN barcodes or store stock?

No. hofer.at publishes neither; products carry HOFER's own 18-digit id.

How fresh is the data?

Every call reads hofer.at live; nothing is cached.

What is the HOFER (Austria) API?

HOFER (Austria) API is a ReefAPI endpoint group for hofer austria prices as json: preis,-wochen and dated angebote, unit prices, weighed goods, labels and the store finder. It returns live JSON through POST requests under /hofer/v1.

Is the HOFER (Austria) API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. HOFER (Austria) calls use the same shared credit balance as every other ReefAPI engine.

Do I need a HOFER (Austria) login or account?

No login to HOFER (Austria) is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the HOFER (Austria) data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the HOFER (Austria) API use?

HOFER (Austria) actions currently cost 1-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call HOFER (Austria) from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call hofer actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the HOFER (Austria) API a HOFER (Austria) scraper?

It is the managed alternative to a DIY HOFER (Austria) scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same hofer austria prices as json: preis,-wochen and dated angebote, unit prices, weighed goods, labels and the store finder back as clean JSON.

docs / hofer

HOFER (Austria)

HOFER Austria prices as JSON: PREIS,-WOCHEN and dated Angebote, unit prices, weighed goods, labels and the store finder.

base /hofer/v16 endpoints
post/hofer/v1/offers3 credits

List a current offer range HOFER PREIS,-WOCHEN / HOFER Preis - Dauerhaft Günstiger.

ParameterAllowed / rangeDescription
type = weeklyoptionalweekly · permanent_lowOffer range, resolved by name from the live category tree.
brandNameoptional—Exact brand values from facets; several values use OR.
categoryTreeoptional—Category facet keys from the current search response.
themeoptional—Exact theme keys from promotions or facets, sent unmodified.
store_idoptional—Optional HOFER store id from the stores action. Narrows the listing to that store's range (prices are national and do not change). Unknown ids return INVALID_PARAM.
sort = relevanceoptionalrelevance · name_asc · name_desc · price_asc · price_descOrdering. Use price_asc for complete sweeps; an unknown sort is rejected because the source would silently ignore it.
page = 1optional1–1000One-based page. A page past the end returns INVALID_PARAM.
limit = 30optional12 · 16 · 24 · 30 · 32 · 48 · 60Page size; the source accepts only these values.
Try in playground →
post/hofer/v1/promotions1 credit

List current and upcoming offer dates (Angebote ab...) and their themes.

Try in playground →
post/hofer/v1/product/detail1 credit

Read one product: prices, description and label.

ParameterAllowed / rangeDescription
idrequired—18-digit product id from search (keep the leading zeros) or a https://www.hofer.at/produkt/... URL. A retailer id, not an EAN.
Try in playground →
post/hofer/v1/categories1 credit

Get the live category tree with the offer ranges marked.

Try in playground →
post/hofer/v1/stores1 credit

Find HOFER stores by town, postcode or coordinates (store ids for search).

ParameterAllowed / rangeDescription
queryoptional—Town, postcode or street for the store finder. Use query OR latitude+longitude.
latitudeoptional-90–90Latitude; requires longitude. Results then carry a distance.
longitudeoptional-180–180Longitude; requires latitude.
page = 1optional1–200One-based page.
limit = 10optional1–50Stores per page (1-50).
Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.