MAM Shop Scraper - Asian Grocery Products & Prices avatar

MAM Shop Scraper - Asian Grocery Products & Prices

Pricing

from $10.00 / 1,000 catalogue searches

Go to Apify Store
MAM Shop Scraper - Asian Grocery Products & Prices

MAM Shop Scraper - Asian Grocery Products & Prices

Produkte von mam-shop.de als sauberes JSON: Preise, Marken, Regale, Lagerbestand, Varianten und EAN-Codes. Ohne Code, ohne Login.

Pricing

from $10.00 / 1,000 catalogue searches

Rating

0.0

(0)

Developer

SIÁN OÜ

SIÁN OÜ

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

MAM Shop Scraper 🛒 Asian Grocery Products, Prices & EAN Codes

SIÁN Agency Store Kleinanzeigen Scraper Douglas Product Scraper Tesco Product Scraper

🎉 A whole MAM shelf in one call: prices, brands, stock, variants and EAN codes

Built for price monitors, sourcing teams and anyone tracking what Germany buys from Asia


🔎 What is the MAM Shop Scraper — and when should you use it?

The MAM Shop Scraper turns the public MAM storefront at mam-shop.de, the online shop of Modern Asia Market, the German-Austrian Asian grocery chain, 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: German Asian-grocery products as rows: name, euro price, the crossed-out was-price where a real discount exists, brand, the shop's own shelf, stock read per variant, article number, shipping weight, the German product copy and every published photo. Product Detail adds the EAN barcode, which the catalogue page never carries and which lets a row be matched to the same article at another retailer.

Use something else when: you want a different retailer. Use Tesco Product Scraper for UK grocery shelves, with the same price-and-stock row shape. Use Kleinanzeigen Scraper for Germany's biggest classifieds site, for second-hand prices on the same goods. Use Douglas Product Scraper for the German beauty catalogue, prices and stock included. This actor covers one shop and nothing else: what MAM publishes at mam-shop.de. The Austrian storefront at mam-shop.at is a separate catalogue and its addresses are rejected rather than read against the German shop. It reads the storefront a visitor sees. Order history, customer reviews and anything behind a login are not published by the shop and are not part of it.

🤖 Use with AI agents

Already connected to the Apify MCP server? Just ask for this Actor by name: sian.agency/mam-shop-product-scraper

Your agent can pay for its own runs. This Actor is eligible for agentic payments, so an agent can discover it, run it and settle the bill over x402 (USDC on Base) or Skyfire — 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:

I want to track what MAM sells at mam-shop.de and what it costs using the Apify Actor `sian.agency/mam-shop-product-scraper`.
Use it when I need: German Asian-grocery products as rows: name, euro price, the crossed-out was-price where a real discount exists, brand, the shop's own shelf, stock read per variant, article number, shipping weight, the German product copy and every published photo. Product Detail adds the EAN barcode, which the catalogue page never carries and which lets a row be matched to the same article at another retailer.
Don't use it when: you want a different retailer — use tesco-product-scraper or kleinanzeigen-scraper or douglas-product-scraper instead.
How to call it: leave `operation` on `search` to read the shop. `category` picks one of the shop's own shelves (instant noodles, snacks, drinks, sauces, mochis, tea and more), and that shelf has its own page, so it is one call instead of twenty. `Any` reads the full product feed instead, which also holds discontinued articles. `searchTerms` is a list of words matched against the product name, brand, shelf tags and the German description, combined with OR, and an empty list returns everything in the chosen scope. `collectionUrls` points the run at any other shop page, including brand and seasonal shelves. `inStockOnly` is on by default and drops articles where every variant is sold out. Worth leaving on, because only 781 of the 4,812 products in the feed have stock. `maxItems` caps the run and therefore the spend. Switch `operation` to `productDetail` and pass product addresses in `productUrls` to get one row each with the EAN barcode.
Start with this input:
{
"operation": "search",
"searchTerms": [
"ramen"
],
"category": "instant-noodles",
"inStockOnly": true,
"maxItems": 100
}
Ask me what I am looking for, which shelf it sits on, and how many products I want back, then run the Actor and summarise the results as a table.

Things you can ask your agent for:

  • List every Samyang Buldak product MAM has in stock, with price and pack size.
  • Pull the whole drinks shelf and tell me which items are discounted right now.
  • Get the EAN codes for these twelve product links so I can match them against my own catalogue.

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at apify.com/sian.agency/mam-shop-product-scraper.md.

📋 Overview

MAM (Modern Asia Market) is a German-Austrian Asian grocery chain with stores in Vienna, Hamburg and Oberhausen and an online shop at mam-shop.de. The product feed held 4,812 articles across 968 brands when it was counted on 2026-09-10. This actor reads the storefront and hands you the catalogue as clean JSON.

Why people use it:

  • Shelves, not a raw dump: pick one of the shop's own shelves and get what it actually sells today. Every shelf sampled was 99–100% in stock
  • Fast because it stays out of the browser: no page rendering, no waiting on scripts. Roughly a second per 250 products
  • 🎯 Stock you can trust: availability is read per variant rather than guessed from a page. Only 781 of the 4,812 articles in the full feed had stock, so the in-stock filter is on by default and you do not pay for rows nobody can buy
  • 💰 $0.90 per 1,000 products: below every German grocery scraper we measured, which sit between $2.00 and $5.00
  • 💎 EAN barcodes: the field that lets a row be matched to the same article at Amazon, Rewe or your own catalogue. The shop's own SKU cannot do it, because all 4,750 are internal 21xxxxxxxxxxx codes
  • Sale detection that means something: 2,305 variants carry a crossed-out price but only 1,277 are genuinely above today's price. Only those are reported as a discount

✨ Features

  • 🗂️ Shelf picker: 16 of the shop's own shelves, from instant noodles and chips to mochis, tea, soju and sauces. Each has its own page, so a shelf is one call rather than twenty
  • 🔍 Keyword search: terms match the product name, brand, shelf tags and the German description, combined with OR
  • 🧺 Shelf addresses: paste any of the shop's 121 collection pages, including brand shelves like Samyang Buldak and Nongshim, and seasonal ones
  • In-stock filter: on by default. Switch it off to get the archive of discontinued articles as well
  • 📦 Full variant detail: every size and flavour with its own SKU, price, weight and stock, inside the product row
  • 📇 EAN barcodes: Product Detail adds the barcode the catalogue never carries
  • 🖼️ Product images: every photo the shop publishes, at full resolution
  • 📝 German product copy: descriptions, ingredients, nutrition and preparation notes as plain text
  • 📄 Run report: an HTML summary in your key-value store showing what came back and what to fix

🎬 Quick Start

Pick a shelf or a search term, press Start. Results land in your dataset as JSON, CSV or Excel. A first run with the defaults returns about a hundred in-stock products.

curl -X POST "https://api.apify.com/v2/acts/sian.agency~mam-shop-product-scraper/runs?token=YOUR_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"operation": "search", "searchTerms": ["ramen"], "maxItems": 100}'

🚀 Getting Started (3 Simple Steps)

Step 1: Choose what to scrape

Leave the operation on Catalogue Search to read a shelf or filter the shop. Switch to Product Detail when you have specific product addresses and want EAN codes.

Step 2: Narrow it down

Pick a shelf, add search terms, or paste shelf addresses. Set Max products to cap both the run and your spend.

Step 3: Press Start and export

Download the dataset as JSON, CSV or Excel, or pull it straight from the API.

That's it! In under a minute, you'll have:

  • Every matching product with its current euro price
  • Brand, shelf, SKU and per-variant stock
  • An HTML run report showing exactly what came back

📥 Input Configuration

FieldTypeRequiredDescription
operationstringNosearch or productDetail. Defaults to search.
searchTermsarrayNoWords to look for. Empty returns everything in the chosen scope.
categorystringNoOne of the shop's 16 shelf handles, or Any for the full feed.
collectionUrlsarrayNoShelf addresses to read instead of the shelf picker.
inStockOnlybooleanNoSkip articles where every variant is sold out. Defaults to true.
maxItemsintegerNoStop after this many products. Defaults to 100.
productUrlsarrayNoProduct addresses for the productDetail operation.

Example: one shelf, keyword-filtered

{
"operation": "search",
"searchTerms": ["ramen"],
"category": "instant-noodles",
"inStockOnly": true,
"maxItems": 100
}

Example: everything in stock

{
"operation": "search",
"searchTerms": [],
"category": "Any",
"inStockOnly": true,
"maxItems": 5000
}

Example: product detail with EAN codes

{
"operation": "productDetail",
"productUrls": [
"https://mam-shop.de/products/samyang-buldak-hot-chicken-ramen-5x140g",
"https://mam-shop.de/products/hikari-miso-instant-miso-miso-soup-3-servings-60g"
]
}

📤 Output

Results are saved to the Apify dataset with 20+ fields including:

FieldTypeDescription
productNamestringProduct name as the shop writes it
pricenumberCurrent price in euros
compareAtPricenumberThe crossed-out was-price, only when it is genuinely higher
onSalebooleanTrue when a real was-price exists
inStockbooleanTrue when at least one variant can be bought
brandstringManufacturer, from Samyang and Nongshim to the shop's own Modern Asia Market label
shelfstringThe shop's own shelf name, in German where the shop uses German
skustringThe shop's internal article number. Not the EAN.
barcodestringEAN or GTIN. Product Detail only, and not every article has one.
weightGramsintegerShipping weight
variantCountintegerHow many sizes or flavours this product has
variantsarrayEach variant with its own SKU, price, stock and weight
imageUrlstringFirst product photo
imagesarrayEvery photo the shop publishes
tagsarrayThe shop's own shelf tags for this product
descriptionTextstringThe German product copy as plain text
productUrlstringLink back to the product page
productIdintegerThe shop's own product ID

Example:

{
"productId": 11237582602582,
"productName": "SAMYANG Buldak Hot Chicken Ramen 5x140G",
"handle": "samyang-buldak-hot-chicken-ramen-5x140g",
"productUrl": "https://mam-shop.de/products/samyang-buldak-hot-chicken-ramen-5x140g",
"brand": "SAMYANG",
"shelf": "Instant Noodles",
"price": 9.99,
"compareAtPrice": null,
"onSale": false,
"currency": "EUR",
"inStock": true,
"sku": "2100000035359",
"weightGrams": 700,
"variantCount": 1,
"imageUrl": "https://cdn.shopify.com/s/files/1/0880/0652/5270/files/8801073140578_1.webp",
"imageCount": 1,
"tags": ["Instant Noodles", "Ramen & Instantnudeln", "backinstock"],
"descriptionText": "SAMYANG Buldak Hot Chicken Ramen 5x140G sind extrem scharfe Instant-Nudeln aus Südkorea...",
"shop": "MAM"
}

💼 Use Cases & Examples

1. Price and Stock Monitoring

A price analyst watches a competing grocer daily to catch discounts and restocks the day they happen.

Input: Run Catalogue Search on a schedule, one run per shelf Output: Every product with today's price, the was-price where a real discount exists, and per-variant stock Use: Alert on any product whose onSale flips to true, or whose inStock returns after a gap

2. Assortment and Sourcing Research

A buyer at a European food importer maps what actually sells in the German Asian-grocery market.

Input: Catalogue Search with no terms and category: "Any" Output: Up to 4,812 articles across 968 brands, with the discontinued ones flagged rather than hidden Use: Rank brands by shelf presence, find the gaps in your own range, shortlist suppliers

3. Cross-Retailer Price Comparison

A comparison site matches MAM against Amazon and Rewe on the same physical article.

Input: Product Detail with the product addresses you care about Output: The EAN barcode for each one, alongside price, weight and pack size Use: Join on the EAN, compare like for like, publish an honest table

4. Product Feed for a Shop or Marketplace

A dropshipper needs names, images, weights and German copy to build listings.

Input: Catalogue Search with inStockOnly: true Output: Names, descriptions, images, SKUs, weights and prices as clean JSON Use: Load straight into Shopify, WooCommerce or a marketplace listing tool

5. Korean and Japanese Food Trend Tracking

A trend researcher tracks which Korean and Japanese products reach German shelves first.

Input: Shelf addresses for the Buldak, Nongshim, bestseller and top-deal pages Output: What the shop is pushing right now, with prices and stock Use: Spot a product going viral weeks before supermarkets pick it up

6. Competitive Range Analysis for Retailers

An Asian supermarket chain benchmarks its own range against a large online rival.

Input: Catalogue Search by shelf, one run per shelf Output: Shelf-level product counts, price distributions and brand mix Use: Find the shelves where your range is thin and your prices are off


🔗 Integration Examples

JavaScript/Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('sian.agency/mam-shop-product-scraper').call({
operation: 'search',
searchTerms: ['ramen'],
category: 'instant-noodles',
inStockOnly: true,
maxItems: 100
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('sian.agency/mam-shop-product-scraper').call(
run_input={
'operation': 'search',
'searchTerms': ['ramen'],
'category': 'instant-noodles',
'inStockOnly': True,
'maxItems': 100,
}
)
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item)

cURL

curl -X POST 'https://api.apify.com/v2/acts/sian.agency~mam-shop-product-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation": "productDetail", "productUrls": ["https://mam-shop.de/products/samyang-buldak-hot-chicken-ramen-5x140g"]}'

Automation Workflows (N8N / Zapier / Make)

  1. Trigger: a daily schedule, or a webhook from your own system
  2. HTTP Request: call the actor API with your input
  3. Process: compare today's prices against yesterday's rows
  4. Action: write to a sheet, post to Slack, or update your catalogue

📊 Performance & Pricing

FREE Tier (Try It Now)

  • 25 products per run, with every field the paid tier returns
  • No credit card required
  • Enough to check the fields, the German copy and the export format
  • Unlimited products per run: a whole shelf, or the whole feed
  • No delays between pages
  • Pay per product returned: a shelf that matches nothing costs you nothing

💰 $0.90 per 1,000 products on Catalogue Search. The German grocery scrapers we measured charge $2.00 to $5.00 per 1,000. Product Detail is $2.50 per 1,000 rows, because each lookup is its own call.

🔗 View current pricing


❓ Frequently Asked Questions

Q: How many products are there? A: 4,812 in the shop's product feed on 2026-09-10, across 968 brands and 121 shelves. Only 781 of them had a variant in stock. The feed keeps discontinued articles; the shelves do not.

Q: Do I need an API key or a shop login? A: No. Pick a shelf or paste a search term and press Start.

Q: Why does "Any" return so many sold-out products? A: Because "Any" reads the full product feed, which still lists articles the shop has stopped selling. That is why In stock only is on by default. Picking a shelf avoids the problem entirely: every shelf we sampled was 99–100% in stock.

Q: Which fields need Product Detail rather than Catalogue Search? A: The EAN barcode, and the per-variant weight unit. Everything else comes straight from a search row: price, was-price, brand, shelf tags, images, stock, SKU, weight, description and variants.

Q: Why is the SKU not the EAN? A: Because the shop uses its own numbering. All 4,750 SKUs in the feed start 21 and are internal article numbers. The real barcode only appears on the product page, which is what Product Detail reads.

Q: Are prices in euros and do they include VAT? A: Prices are in euros exactly as the shop publishes them, which is the gross price a German shopper pays.

Q: What about mam-shop.at? A: That is the chain's Austrian storefront, a separate catalogue with its own prices. Addresses from it are rejected rather than read against the German shop, so a run never silently mixes the two.

Q: Can I get one row per size instead of one per product? A: Rows are one per product, which is what you are charged for. Every variant travels inside the row's variants list with its own SKU, price and stock, and the shop measured 1.001 variants per product, so this almost never differs.

Q: What output formats are available? A: JSON, CSV and Excel, exported directly from the Apify dataset.


🐛 Troubleshooting

A search returns nothing

  • The shop is German. "nudeln" finds more than "instant noodles".
  • Set the shelf back to Any, which searches the full feed.
  • Switch off In stock only. The full feed is mostly discontinued articles, and they are hidden by default.

A product address returns "no longer in the shop"

  • The shop has taken that article down. Two of every thirty feed addresses we sampled were already gone, and both were sold out. Run Catalogue Search on the shelf to find what replaced it.
  • Check you pasted a product address, not a shelf address.

I only got 25 rows

  • That is the free-tier cap. Add credits or a payment method in Apify Console to lift it.

The run stopped before Max products

  • The shop has fewer matching products than your cap. Check the run report; it says how many were scanned.

The shop is temporarily unavailable

  • Every request already retries five times with backoff. Wait a few minutes and run it again.

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has 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.

MAM, Modern Asia Market and mam-shop.de are trademarks of their respective owner. This actor is not affiliated with, endorsed by, or sponsored by Modern Asia Market.


🤝 Support

Telegram Support

Join our active support community


Built by SIÁN Agency | More Tools