# Reishunger Product Scraper - Prices, Stock, Nutrition (`sian.agency/reishunger-product-scraper`) Actor

Export the Reishunger catalogue: prices, discounts, EUR per kilo, ratings, availability, pack sizes, EAN codes, nutrition values and ingredient lists.

- **URL**: https://apify.com/sian.agency/reishunger-product-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 catalogues

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## 🍚 Reishunger Product Scraper — Prices, Stock & Nutrition

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Tesco Product Scraper](https://img.shields.io/badge/Store-Tesco%20Product%20Scraper-1AE392)](https://apify.com/sian.agency/tesco-product-scraper?fpr=sian) [![Douglas Product Scraper](https://img.shields.io/badge/Store-Douglas%20Product%20Scraper-1AE392)](https://apify.com/sian.agency/douglas-product-scraper?fpr=sian) [![BAUHAUS Product Scraper](https://img.shields.io/badge/Store-BAUHAUS%20Product%20Scraper-1AE392)](https://apify.com/sian.agency/bauhaus-product-scraper?fpr=sian)

#### 🎉 The whole Reishunger catalogue — 347 products, priced per kilo, with EAN codes and nutrition

##### Built for price monitoring, food-data research and marketplace resellers working the German market

### 🔎 What is the Reishunger Product Scraper — and when should you use it?

The **Reishunger Product Scraper** turns the German shop reishunger.de and its 347 product pages into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

**Use it when you need:** Reishunger product rows carrying the German product name, the current price, any crossed-out price with the money off and the percentage, and the shop's own published price per kilo or litre. Every row also brings a star rating with its review count, a sold-out flag, an image and the direct product link. Detail mode goes further on a single product. It returns every pack size that product is sold in, each with its own article number, EAN, price, price per kilo and live stock count, plus nutrition per 100 g and the full German ingredient declaration.

**Use something else when:** you need a different shop. Use [Tesco Product Scraper](https://apify.com/sian.agency/tesco-product-scraper?fpr=sian) for UK supermarket groceries, where this one covers a German specialist. Use [Douglas Product Scraper](https://apify.com/sian.agency/douglas-product-scraper?fpr=sian) for German beauty and fragrance retail. Use [BAUHAUS Product Scraper](https://apify.com/sian.agency/bauhaus-product-scraper?fpr=sian) for German DIY, garden and hardware. This actor reads one shop, so it tells you what Reishunger charges rather than what anyone else charges for the same rice. Each run is a snapshot too: price history exists only if you schedule the run and keep the datasets.

### 🤖 Use with AI agents

Already connected to the [Apify MCP server](https://mcp.apify.com)? Just ask for this Actor by name: sian.agency/reishunger-product-scraper

**Your agent can pay for its own runs.** This Actor is eligible for [agentic payments](https://docs.apify.com/platform/actors/publishing/monetize), so an agent can discover it, run it and settle the bill over [x402](https://www.x402.org/) (USDC on Base) or [Skyfire](https://www.skyfire.xyz/) — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

```text
I want prices, discounts, stock and nutrition from the Reishunger shop using the Apify Actor `sian.agency/reishunger-product-scraper`.

Use it when I need: Reishunger product rows carrying the German product name, the current price, any crossed-out price with the money off and the percentage, and the shop's own published price per kilo or litre. Every row also brings a star rating with its review count, a sold-out flag, an image and the direct product link. Detail mode goes further on a single product. It returns every pack size that product is sold in, each with its own article number, EAN, price, price per kilo and live stock count, plus nutrition per 100 g and the full German ingredient declaration.

Don't use it when: you need a different shop — use tesco-product-scraper or douglas-product-scraper or bauhaus-product-scraper instead.

How to call it: leave `operation` on `catalog` to walk the whole shop, add a `keyword` to keep only products whose German name contains it (reis matches 126 products, bio 119, reiskocher 31, curry 27), or paste shop category links into `categoryUrls` to take named categories and pick up the shop's own taxonomy. Switch `operation` to `productDetail` and pass `productUrls` to get one deep row per product with every pack size, its EAN and stock, plus nutrition and ingredients. `maxItems` is the hard ceiling on rows and therefore on what a run charges.

Start with this input:
{
  "operation": "catalog",
  "keyword": "reis",
  "maxItems": 100
}

Ask me whether they want a broad catalogue sweep or a deep read of named products, and which German keyword or category to narrow to, then run the Actor and summarise the results as a table.
```

**Things you can ask your agent for:**

- *Export every organic rice at Reishunger with its price per kilo and flag anything currently discounted.*
- *Check the 5 pack sizes of Bio Jasmin Reis every morning and tell me when the 9 kg sack drops below 8 euro per kilo.*
- *Build me a food table of every Reishunger product with its EAN, ingredients and salt content per 100 g.*

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at [apify.com/sian.agency/reishunger-product-scraper.md](https://apify.com/sian.agency/reishunger-product-scraper.md).

### 📋 Overview

**Germany's largest Asian-food shop, turned into a spreadsheet.** This Actor reads reishunger.de and hands back one clean row per product. Price today, price before the discount, what a kilo works out at, how many people rated it, and whether it is actually in stock.

**What each row carries:**

- ✅ **Price per kilo, published rather than calculated** — the shop states it on 195 of its 347 products. That is the honest way to compare a 600 g bag against a 9 kg sack.
- ⚡ **Every pack size on one row** — Bio Jasmin Reis comes back with all five of them (600 g, 3×600 g, set, 3 kg, 9 kg), each with its own EAN, price and live stock count.
- 🎯 **Discounts you can act on** — 62 of the 347 products were on offer during testing. Each of those rows carries the old price, the money off and the percentage.
- 💰 **Nutrition and ingredients** — energy, fat, saturates, carbohydrates, sugars, protein and salt per 100 g, plus the full German ingredient declaration, matched to an EAN.
- 💎 **The first structured feed of this shop** — reishunger.de had no Actor on the Apify Store before this one.
- ✨ **Two modes, one Actor** — a fast catalogue sweep at $0.01 per product, or a deep read at $0.02 when you need pack sizes and nutrition.

***

### ✨ Features

- 🛒 **Whole-shop sweep** — 347 consumer products across 53 shop categories in a single run.
- 🔍 **German keyword filter** — narrow on the product name: *reis* keeps 126 products, *bio* 119, *reiskocher* 31, *curry* 27, *sauce* 26, *sushi* 18.
- 📂 **Category mode** — paste shop category links and rows arrive with the shop's own taxonomy: category name, three-level category path, pack size and article number.
- ⚖️ **Price-per-unit column** — EUR per kilo or per litre exactly as the shop publishes it.
- 📦 **Real stock counts** — detail rows carry the number of units on hand for each pack size, not an in-stock badge.
- 📟 **EAN on every pack size** — join this catalogue straight onto Amazon, eBay or a wholesaler feed.
- 🧂 **Nutrition and ingredient declarations** for food products, in German, as published.
- 🔢 **Hard row cap** — `maxItems` sets the ceiling on rows and therefore on what a run can charge.
- 📄 **HTML run report** — the products, what you paid, and a fix for anything that failed.

***

### 🎬 Quick start

Open the Actor, press **Start**, and read the **Output** tab. The defaults sweep the catalogue for rice and return 25 products, so you see real data before changing a thing.

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~reishunger-product-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation": "catalog", "keyword": "reis", "maxItems": 100}'
```

***

### 🚀 Getting started (3 simple steps)

#### Step 1: Pick a mode

Leave `operation` on `catalog` for many products at once. Switch it to `productDetail` when you need pack sizes, EAN codes, stock counts and nutrition for specific products.

#### Step 2: Say what to cover

Add a German `keyword` to filter on the product name, or paste shop category links into `categoryUrls`. Leave both empty and you get the whole shop.

#### Step 3: Set your ceiling

`maxItems` caps the rows a run returns. Leave it at 25 to test; raise it to 400 for a complete catalogue export.

**That's it. In under a minute you'll have:**

- Every matching product with its current price and price per kilo
- Discounts, ratings and availability on the same row
- A dataset you can export as JSON, CSV or Excel

***

### 📥 Input configuration

| Field | Type | Default | What it does |
|---|---|---|---|
| `operation` | string | `catalog` | `catalog` for many products at once, `productDetail` for a deep read of named products |
| `keyword` | string | *(empty)* | Keeps only products whose German name contains this text. Empty means the whole shop |
| `categoryUrls` | array | `[]` | Shop category links. Rows from these also carry the shop's own taxonomy |
| `productUrls` | array | `[]` | Product page links to read in detail. Required when `operation` is `productDetail` |
| `maxItems` | integer | `25` | Hard ceiling on rows returned, and so on what a run charges (1–1000) |

**Catalogue sweep:**

```json
{
  "operation": "catalog",
  "keyword": "reis",
  "maxItems": 400
}
```

**One category only:**

```json
{
  "operation": "catalog",
  "categoryUrls": ["https://www.reishunger.de/kategorie/162/bio-reis"],
  "maxItems": 100
}
```

**Deep read of specific products:**

```json
{
  "operation": "productDetail",
  "productUrls": ["https://www.reishunger.de/produkt/1079/bio-jasmin-reis"],
  "maxItems": 25
}
```

***

### 📤 Output

One flat row per product, exportable as JSON, CSV or Excel.

**Catalogue mode** returns:

| Field | Type | Description |
|---|---|---|
| `productId` | integer | The shop's product number |
| `productName` | string | German product name |
| `productUrl` | string | Direct link to the product page |
| `imageUrl` | string | Product image |
| `price` | number | Current price in EUR |
| `listPrice` | number | Crossed-out price, when the product is discounted |
| `discountAmount` | number | Money off in EUR |
| `discountPercentage` | number | Discount as a percentage |
| `referencePrice` | number | Price per kilo or litre, as the shop publishes it |
| `referenceUnit` | string | The unit that reference price is quoted in |
| `ratingAverage` | number | Star rating (present on 341 of 347 products) |
| `ratingCount` | integer | Number of ratings behind that average |
| `isSoldOut` | boolean | Whether the product is currently unavailable |
| `isNew` | boolean | Flagged as new by the shop |
| `hasBestBeforeDeal` | boolean | On a short-dated clearance offer |
| `availability` | string | Availability as the shop states it |

**Category mode adds** `sku`, `brand`, `variantLabel`, `categoryName` and `categoryPath`.

**Detail mode adds** `ean`, `variety`, `productCategory`, `productSubCategory`, `isOrganic`, `shortDescription` and `ingredients`. Then the nutrition block: `nutritionBasis`, `energyKj`, `energyKcal`, `fatG`, `saturatedFatG`, `carbohydratesG`, `sugarsG`, `proteinG`, `saltG` and `packSizeCount`.

It also adds `packSizes`, an array holding one entry per pack size. Each entry has `sku`, `name`, `ean`, `packUnit`, `price`, `referencePrice`, `referenceUnit`, `stock`, `available`, `weightKg`, `brand`, `variety`, `productCategory`, `productSubCategory` and `isOrganic`.

**Example row (detail mode, abbreviated):**

```json
{
  "productId": 1079,
  "productName": "Bio Jasmin Reis",
  "productUrl": "https://www.reishunger.de/produkt/1079/bio-jasmin-reis",
  "price": 5.99,
  "referencePrice": 9.98,
  "referenceUnit": "kg",
  "ratingAverage": 4.97,
  "ratingCount": 129,
  "isSoldOut": false,
  "isOrganic": true,
  "energyKj": 1475,
  "energyKcal": 347,
  "fatG": 0.6,
  "carbohydratesG": 78,
  "proteinG": 6.8,
  "saltG": 0.03,
  "packSizeCount": 5,
  "packSizes": [
    {
      "sku": "150-600",
      "packUnit": "600g",
      "ean": "4260757837724",
      "price": 5.99,
      "referencePrice": 9.98,
      "referenceUnit": "Kilogramm",
      "stock": 721,
      "available": true,
      "weightKg": 0.614
    }
  ]
}
```

***

### 💼 Use cases & examples

#### 1. Rice and pantry price monitoring

**Category managers and buyers tracking what Germany's biggest Asian-food shop charges.**

**Input:** `operation: catalog`, no keyword, `maxItems: 400`
**Output:** All 347 products with price, discount and price per kilo
**Use:** Schedule it daily and you have a price series you can chart, including the €/kg that makes a 600 g bag comparable to a 9 kg sack.

#### 2. Promotion and discount tracking

**E-commerce teams watching when a competitor's offers start and stop.**

**Input:** `operation: catalog`, `maxItems: 400`
**Output:** `listPrice`, `discountAmount` and `discountPercentage` on every discounted row
**Use:** 62 of 347 products were on offer during testing. A scheduled run turns that into a promotion calendar.

#### 3. Food data and nutrition research

**Nutrition analysts and food-tech teams building product databases.**

**Input:** `operation: productDetail` with the product links you care about
**Output:** Energy, fat, saturates, carbohydrates, sugars, protein and salt per 100 g, plus the full ingredient declaration and an EAN
**Use:** The EAN lets these rows join straight onto other food databases without fuzzy name matching.

#### 4. Availability and assortment monitoring

**Distributors checking what is genuinely in stock rather than merely listed.**

**Input:** `operation: productDetail` for the lines you supply or resell
**Output:** A real stock count per pack size, plus an availability flag
**Use:** Spot a line running down before it goes out of stock, and see which pack size sells through fastest.

#### 5. Marketplace and reseller research

**Amazon and eBay sellers hunting for arbitrage on German pantry goods.**

**Input:** `operation: productDetail` across a shortlist
**Output:** EAN codes on every pack size, with price and price per kilo
**Use:** Match the catalogue against a marketplace feed by EAN and find where the same article sells for more.

#### 6. Category and assortment tracking

**Merchandisers watching how a single category evolves.**

**Input:** `operation: catalog` with `categoryUrls`
**Output:** Rows carrying `categoryName`, `categoryPath`, `brand` and `variantLabel`
**Use:** Run the same category weekly and diff the product list to see what was added, dropped or repriced.

#### 7. AI agents and shopping assistants

**Builders wiring a German grocery catalogue into an assistant.**

**Input:** Any mode, called over the Apify API or MCP
**Output:** Flat structured rows an LLM can read without parsing HTML
**Use:** Answer "what is the cheapest organic basmati per kilo right now" from live data instead of a stale index.

***

### 🔗 Integration examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/reishunger-product-scraper').call({
  operation: 'catalog',
  keyword: 'reis',
  maxItems: 100
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/reishunger-product-scraper').call(
    run_input={'operation': 'catalog', 'keyword': 'reis', 'maxItems': 100}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item['productName'], item['price'], item.get('referencePrice'))
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~reishunger-product-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation": "productDetail", "productUrls": ["https://www.reishunger.de/produkt/1079/bio-jasmin-reis"]}'
```

#### Automation workflows (N8N / Zapier / Make)

1. **Trigger**: a daily schedule, or a webhook from your own system
2. **HTTP Request**: start the Actor and wait for the dataset
3. **Process**: filter rows where `discountPercentage` is above your threshold
4. **Action**: write to a sheet, push to Slack, or update your pricing table

***

### 📊 Performance & pricing

#### FREE tier (try it now)

- **25 products per run** — every field, same quality, no credit card
- Enough to check the data before you commit to a schedule

#### PAID tier (production)

- **Unlimited products per run** — the whole 347-product catalogue in one go
- Pay only for rows you actually receive: a failed link costs nothing

**How it is charged:** a small run-start fee, then **$0.01 per product** in catalogue mode or **$0.02 per product** in detail mode. Every paid plan from Bronze to Diamond pays the same per-product rate, so there is no volume table to work out.

🔗 [View current pricing](https://apify.com/sian.agency/reishunger-product-scraper?fpr=sian)

***

### ❓ FAQ

**Q: How many products are there?**
A: 347 consumer products across 53 shop categories — rice, noodles, pulses, sauces, spice pastes, snacks, rice cookers and kitchen equipment. Set `maxItems` to 400 and leave the keyword empty for a full export.

**Q: What is the difference between catalogue mode and detail mode?**
A: Catalogue mode is broad and cheap: one row per product with price, discount, price per kilo, rating, image and availability. Detail mode is deep: one row per product link, carrying every pack size with its own EAN, price and stock count, plus nutrition and the ingredient list.

**Q: Do I get nutrition values for everything?**
A: For food, yes. Rice cookers, pans and kitchen equipment have no nutrition table, so those fields stay empty rather than being invented. A multi-component set publishes one table per component, and the row carries the first one, labelled as such in `nutritionBasis`.

**Q: Is the data in German?**
A: Yes. Product names, ingredient declarations and category names come from the German shop exactly as published, and prices are in EUR. Nothing is translated, because a translated ingredient declaration is not a legal one.

**Q: Can I follow one category only?**
A: Yes. Paste one or more shop category links into `categoryUrls` and only those are read. Those rows also carry the shop's own taxonomy and the pack size shown on the tile.

**Q: Does it give me price history?**
A: Each run is a snapshot. Schedule the Actor and keep the datasets, and you have a history — there is no archive to query retroactively.

**Q: Does it cover other shops?**
A: No. This Actor reads reishunger.de only. It tells you what Reishunger charges, not what anyone else charges for the same rice.

**Q: Are there hidden costs?**
A: No. A run-start fee plus one event per product row, and nothing else. No proxy bill, no key to buy, no per-request surcharge.

***

### 🐛 Troubleshooting

**A run returns fewer rows than expected**

- Free Apify accounts are capped at 25 rows per run. Add credits or a payment method to lift it.
- Check `maxItems` — it is a hard ceiling, and the run stops the moment it is reached.

**The keyword matched nothing**

- Product names are German. Try a shorter stem: *reis*, *bio*, *curry*, *sauce*.
- Clear the keyword entirely to take the whole shop, then filter the dataset instead.

**Nutrition columns are empty**

- The product is not food. Rice cookers, pans, bowls and books have no nutrition table.
- You are in catalogue mode. Nutrition only comes back with `operation: productDetail`.

**A product link returns an error row**

- Open the link in a browser. The product may have been withdrawn from the shop.
- Category links belong in `categoryUrls`, product links in `productUrls` — swapping them fails.

**"Temporarily unavailable" on a row**

- The shop was briefly unreachable and the run already retried. Re-run that input on its own in a few minutes.

***

### ⚖️ Legal — is it legal to scrape this data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what has been chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

Reishunger is a trademark of its owner. This tool is not affiliated with, endorsed by or sponsored by Reishunger, and reads only information the shop publishes for shoppers.

***

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- 🐛 **Issues:** https://apify.com/sian.agency/reishunger-product-scraper/issues
- ⭐ **Reviews:** https://apify.com/sian.agency/reishunger-product-scraper/reviews
- 🌐 **More actors:** https://apify.com/sian.agency?fpr=sian
- 📧 <apify@sian-agency.online>

Related retail actors: [Tesco Product Scraper](https://apify.com/sian.agency/tesco-product-scraper?fpr=sian), [Douglas Product Scraper](https://apify.com/sian.agency/douglas-product-scraper?fpr=sian), [BAUHAUS Product Scraper](https://apify.com/sian.agency/bauhaus-product-scraper?fpr=sian).

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

### Keywords for LLM Discovery

# Actor input Schema

## `operation` (type: `string`):

Catalogue walks the whole shop, or only the categories you name, and returns one row per product with price, discount, EUR-per-kilo, rating and availability. Product detail takes product page links and returns one deeper row each: every pack size with its own EAN, price and stock, plus the nutrition table and the ingredient list.

## `keyword` (type: `string`):

Keep only products whose name contains this text. German product names, so reis matches 126 products, bio 119, reiskocher 31, curry 27, sauce 26, sushi 18. Leave it empty to take the whole shop. Ignored in product detail mode.

## `categoryUrls` (type: `array`):

Optional. Paste shop category links such as https://www.reishunger.de/kategorie/162/bio-reis to take only those categories instead of the whole shop. Category links also attach the shop's own taxonomy to each row - category name, category path, pack size and article number. Leave empty to walk the whole catalogue.

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

Product page links to read in detail, for example https://www.reishunger.de/produkt/1079/bio-jasmin-reis. Required when the operation is product detail, ignored otherwise. Each link returns one row carrying every pack size the product is sold in, with its own EAN, price, EUR-per-kilo and stock, plus nutrition per 100 g and the ingredient list.

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

Upper bound on the products a run returns, and therefore on what it can charge. The whole shop is 347 products, so raise this to 400 for a complete export. Reached, the run stops and reports the cap in the run report.

## Actor input object example

```json
{
  "operation": "catalog",
  "keyword": "curry",
  "categoryUrls": [
    "https://www.reishunger.de/kategorie/162/bio-reis"
  ],
  "productUrls": [
    "https://www.reishunger.de/produkt/1079/bio-jasmin-reis"
  ],
  "maxItems": 25
}
```

# Actor output Schema

## `reishungerDeProduct` (type: `string`):

Every product this run returned.

## `scrapingSummary` (type: `string`):

HTML summary showing successful and failed results with key metrics

# 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 = {
    "operation": "catalog",
    "keyword": "reis",
    "categoryUrls": [],
    "productUrls": [
        "https://www.reishunger.de/produkt/1079/bio-jasmin-reis"
    ],
    "maxItems": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/reishunger-product-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 = {
    "operation": "catalog",
    "keyword": "reis",
    "categoryUrls": [],
    "productUrls": ["https://www.reishunger.de/produkt/1079/bio-jasmin-reis"],
    "maxItems": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/reishunger-product-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 '{
  "operation": "catalog",
  "keyword": "reis",
  "categoryUrls": [],
  "productUrls": [
    "https://www.reishunger.de/produkt/1079/bio-jasmin-reis"
  ],
  "maxItems": 25
}' |
apify call sian.agency/reishunger-product-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sian.agency/reishunger-product-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/rspJPMKxc0LU7DxbG/builds/J4O3PrnEubrWo7Vqc/openapi.json
