Spicelands Scraper - Indian Grocery Products & Prices avatar

Spicelands Scraper - Indian Grocery Products & Prices

Pricing

from $10.00 / 1,000 catalogue searches

Go to Apify Store
Spicelands Scraper - Indian Grocery Products & Prices

Spicelands Scraper - Indian Grocery Products & Prices

Produkte von spicelands.de als sauberes JSON: Preise, Grundpreis, Marken, Herkunftsland, Kategorien und Lagerbestand. 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

Spicelands Scraper 🌶️ Indian Grocery Products, Prices & Unit Prices

SIÁN Agency Store Google Shopping Price Tracker Tesco Product Scraper Kleinanzeigen Scraper

🎉 The whole Spicelands catalogue in one call — with the price per kilo on every row

For price monitors, sourcing teams and anyone tracking Indian and South Asian food in Germany


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

The Spicelands Scraper turns the public catalogue of spicelands.de, the German online grocer for Indian, South Asian and Sri Lankan food, 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 Indian-grocery articles as rows: name, euro price, the crossed-out was-price where a real discount exists, the Grundpreis per kilo or litre, brand, country of origin, category and stock status. Every row also carries the article number, the pack weight, the size variants, the full German ingredients and nutrition text, and every published photo. The shop holds 2,610 articles, 1,514 of them sellable, across 238 brands and 69 categories.

Use something else when: you want a different shop or a cross-retailer view. Use Google Shopping Price Tracker for the same article priced across every German retailer that sells it. 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. This actor covers one shop and nothing else: what Spicelands publishes at spicelands.de. It reads the storefront a visitor sees. There are no ratings and no reviews to return, because the shop has none: every one of its 1,514 in-stock articles carries a review count of zero. Order history 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/spicelands-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 Spicelands sells at spicelands.de and what it costs using the Apify Actor `sian.agency/spicelands-product-scraper`.
Use it when I need: German Indian-grocery articles as rows: name, euro price, the crossed-out was-price where a real discount exists, the Grundpreis per kilo or litre, brand, country of origin, category and stock status. Every row also carries the article number, the pack weight, the size variants, the full German ingredients and nutrition text, and every published photo. The shop holds 2,610 articles, 1,514 of them sellable, across 238 brands and 69 categories.
Don't use it when: you want a different shop or a cross-retailer view — use google-shopping-price-scraper or tesco-product-scraper or kleinanzeigen-scraper instead.
How to call it: there is one operation, `search`, and every filter is applied by the shop itself. `searchTerms` is a list of words matched against the product name, the short description and the article number, combined with OR; an empty list returns everything the other filters allow. `category` picks one of the shop's 29 categories and includes its sub-categories. `brand` picks one of the 22 largest brands. `onSaleOnly` returns only the articles the shop currently discounts, 48 of them. `includeOutOfStock` adds the 1,096 articles the shop hides from its own catalogue, which is off by default because the default is the sellable assortment. `sortBy` decides which products you get when `maxItems` stops the run. `maxItems` caps the run and therefore the spend. To watch named articles instead, put their addresses in `productUrls`: up to 40 are looked up in a single request and the search fields are then ignored.
Start with this input:
{
"operation": "search",
"searchTerms": [
"masala"
],
"category": "gewuerze",
"includeOutOfStock": false,
"sortBy": "date",
"maxItems": 100
}
Ask me what I am looking for, which category or brand it sits under, 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 MDH spice Spicelands has in stock, with the price per kilo.
  • Pull the whole Hülsenfrüchte category and tell me which lentils are cheapest per kilo.
  • Check these twenty product links every morning and flag anything whose price moved.

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

📋 Overview

Spicelands is a German online grocer for Indian, South Asian and Sri Lankan food: spices, lentils, rice, flours, namkeens, ready mixes and pooja goods. This actor turns its catalogue into structured rows. Counted on 2026-09-10, that is 2,610 articles, 1,514 of them in stock, across 238 brands and 69 categories.

What you get that a generic shop scraper does not:

  • The Grundpreis on 99.5% of rows: price per kilo or litre, so a 400 g jar and a 1 kg bag finally compare. This is the number a price analyst actually needs.
  • 🏭 The brand, on 93.5% of rows: 238 of them, from TRS, MDH, Haldirams and MTR to the shop's own Spicelands label.
  • 🌍 The country of origin: 44 countries, 834 articles from India. It sits in the shop's product attributes, which is why a generic catalogue puller misses it.
  • 💰 $1.50 per 1,000 products: under every grocery scraper measured on the Store, which run $2.00 to $5.00 per 1,000.
  • 🔎 Filters the shop applies itself: search, category, brand, reduced-only, sold-out and sort order all travel to the shop. A one-brand run costs a single request rather than a sixteen-page walk.
  • One operation, one price: we compared the shop's single-product page against a catalogue row field by field. It carries nothing extra, so there is no second event to bill you for.

✨ Features

  • 🌶️ Whole-catalogue export: 1,514 sellable articles in 16 requests, or the full 2,610 with sold-out ones included.
  • 🗂️ 29 real categories: the shop's own shelves. Each one carries the in-stock count we measured, so you know what a pick is worth before you run it.
  • 🏭 22-brand picker: the largest brands by article count, plus free-text search for the other 216.
  • ⚖️ Unit prices: €/kg and €/l as a number, not as a string buried in HTML.
  • 🔥 Reduced-only mode: the 48 articles the shop currently discounts, with the crossed-out price beside the current one.
  • 📦 Sold-out archive: one switch adds the 1,096 articles the shop hides, which is the restock and discontinuation feed.
  • 🔗 Fixed-basket watching: paste up to 40 product addresses and they come back in a single request.
  • 🧾 Full German product copy: the ingredients list, allergen note and nutrition table as plain text, on every article.
  • 📸 Every published image: the main photo plus the rest of the gallery.
  • 📄 HTML run report: a shareable summary in the key-value store, with your product links ready to copy.

🎬 Quick Start

Pick a category or type a search term, press Start, export as JSON, CSV or Excel. That is the whole flow — no account with the shop, no API key, no login.

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

🚀 Getting Started (3 Simple Steps)

Step 1: Choose what to take

Type words into Search terms, or pick a Category, or pick a Brand — or leave all three alone and take the whole shop.

Step 2: Narrow it down

Switch on Reduced articles only for the current markdowns. Switch on Include sold-out articles if you want the archive too. Set Max products to cap the run and the spend.

Step 3: Press Start and export

Results land in the dataset. Download JSON, CSV or Excel, or read them straight from the API.

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

  • Every matching product with its price, its was-price and its price per kilo
  • Brand, country of origin, category, stock status, article number and pack weight
  • An HTML report summarising the run, saved beside the data

📥 Input Configuration

FieldTypeRequiredDescription
operationstringNoAlways search. This actor has one operation.
searchTermsarrayNoWords matched against product name, short description and article number. Combined with OR.
categorystringNoOne of the shop's 29 categories, or Any.
brandstringNoOne of the 22 largest brands, or Any.
productUrlsarrayNoSpecific product addresses. Up to 40 per request. Overrides the search fields.
includeOutOfStockbooleanNoAdd the 1,096 sold-out articles. Default false.
onSaleOnlybooleanNoOnly currently reduced articles. Default false.
sortBystringNodate, price, popularity, title or menu_order. Default date.
maxItemsintegerNoStop after this many products. Default 100.

A whole category:

{
"operation": "search",
"category": "gewuerze",
"maxItems": 200
}

One brand, cheapest first:

{
"operation": "search",
"brand": "mdh",
"sortBy": "price",
"maxItems": 100
}

A fixed basket, watched daily:

{
"operation": "search",
"productUrls": [
"https://spicelands.de/produkt/periyar-dry-tapioca-908g/",
"https://spicelands.de/produkt/ajmi-chakki-atta/"
]
}

📤 Output

Each row is one product. The most useful fields:

FieldTypeDescription
productNamestringThe article name as the shop publishes it
pricenumberCurrent price in euros, gross
regularPricenumberThe crossed-out price, only when genuinely higher
onSalebooleanWhether the article is reduced today
discountPercentnumberHow far below the was-price, to one decimal
unitPricenumberGrundpreis — price per kilo or litre
unitPriceUnitstringThe unit that price is per, e.g. kg
brandstringFrom the shop's own brand attribute
originCountrystringCountry of origin, e.g. Indien
categorystringThe article's primary category
inStockbooleanWhether the shop can ship it today
skustringThe shop's article number
weightKgnumberPack weight in kilograms
variantCountintegerHow many sizes the article comes in
imageUrlstringMain product photo
productUrlstringThe article's page on the shop

Rows also carry categories, tags, variants, priceMin, priceMax, packSize, storage, descriptionText, shortDescription, taxInfo, images, imageCount, productId and slug.

Example:

{
"productId": 260921,
"productName": "MDH Chilli Potato Masala 45g",
"productUrl": "https://spicelands.de/produkt/mdh-chilli-potato-masala-45g/",
"brand": "MDH",
"originCountry": "Indien",
"category": "Neue Produkte",
"categories": ["Neue Produkte", "Fertigmischungen"],
"price": 0.99,
"onSale": false,
"unitPrice": 22,
"unitPriceUnit": "kg",
"currency": "EUR",
"inStock": true,
"sku": "15765-576547",
"weightKg": 0.045,
"variantCount": 0,
"taxInfo": "inkl. 7 % MwSt.",
"shop": "Spicelands"
}

💼 Use Cases & Examples

1. Price and Markdown Monitoring

A pricing analyst watching what a competitor charges for Indian pantry staples.

Input: A category, or a fixed list of product addresses, on a daily schedule. Output: Current price, was-price, discount percentage and price per kilo for every article. Use: 48 of 1,514 in-stock articles were reduced on 2026-09-10. Catch the next batch the day it lands.

2. Assortment and Sourcing Research

A buyer mapping what a German Indian grocer actually stocks.

Input: Leave every filter alone and take the whole shop. Output: 1,514 articles by category, brand and country of origin. Use: 238 brands, 834 articles sourced from India, 138 from Thailand, 55 from Pakistan.

3. Competitive Price Benchmarking

A retailer comparing basmati, atta and spice blends across shops.

Input: brand set to the label you carry, or search terms for the product family. Output: Price, pack weight and the Grundpreis that makes different pack sizes comparable. Use: "garam masala" alone draws 49,500 searches a month in Germany. Know what the market charges.

4. Product Feed for Shops and Marketplaces

A dropshipper or comparison site building a catalogue.

Input: The whole shop, or one category at a time. Output: Names, German descriptions, images, weights, article numbers and prices as clean JSON. Use: Load it straight into a listing tool, a comparison site or a marketplace feed.

5. Stock and Discontinuation Tracking

A category manager watching what disappears.

Input: Two runs — one default, one with Include sold-out articles switched on. Output: The difference between them is exactly what the shop cannot sell right now. Use: 1,096 articles were in that gap on 2026-09-10. Frozen goods were entirely out of stock.

6. Ingredient and Allergen Research

A food developer or importer checking formulations.

Input: Search terms for the product family you care about. Output: descriptionText carries the full ingredients list, allergen note and nutrition table. Use: Present on all 1,514 articles, as plain text rather than HTML.


🔗 Integration Examples

JavaScript/Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('sian.agency/spicelands-product-scraper').call({
operation: 'search',
category: 'gewuerze',
maxItems: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].productName, items[0].price, items[0].unitPrice);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('sian.agency/spicelands-product-scraper').call(
run_input={'operation': 'search', 'brand': 'trs', 'maxItems': 200}
)
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item['productName'], item.get('price'), item.get('unitPrice'))

cURL

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

Automation Workflows (N8N / Zapier / Make)

  1. Trigger: Schedule — daily at 07:00, or a webhook from your own system
  2. HTTP Request: Call the actor API with your saved input
  3. Process: Compare today's prices against yesterday's rows
  4. Action: Write to a sheet, push to a database, or alert on a markdown

📊 Performance & Pricing

FREE Tier (Try It Now)

  • 25 products per run — every field, every filter, same quality
  • No credit card required
  • Enough to check a category before committing to the whole shop
  • Unlimited products per run — the whole 2,610-article catalogue if you want it
  • Pay per product returned: a run that matches nothing costs nothing
  • A whole-shop run is 16 requests and finishes in about two minutes

💰 $1.50 per 1,000 products. The German and European grocery scrapers measured on the Store run $2.00 to $5.00 per 1,000. Generic WooCommerce pullers sit at $0.90 to $1.20, but they return no brand, no country of origin and no price per kilo.

🔗 View current pricing


❓ Frequently Asked Questions

Q: How many products are there? A: 2,610 articles in the catalogue on 2026-09-10, of which 1,514 were in stock, across 238 brands and 69 categories. The shop hides sold-out articles from its own catalogue, which is why a default run returns the 1,514.

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

Q: Is there a separate operation for a single product? A: No, and deliberately so. The shop's single-product page was compared field by field against a catalogue row and carries nothing extra. Paste addresses into Specific products instead — up to 40 are looked up in one request, at the same per-product price.

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. Most food carries 7% VAT and the rest 19%; taxInfo says which. Rows also carry the Grundpreis on 1,507 of 1,514 articles.

Q: Why is there no rating or review column? A: Because the shop has none. All 1,514 articles carry a review count of zero, so a rating column would never fill. Sorting by rating is left out for the same reason.

Q: Can I get one row per pack size? A: Rows are one per product, which is what you are charged for. 232 articles have size variants, and every variant travels inside the row. A 1 kg / 2 kg / 5 kg atta is one row and one charge rather than three.

Q: My run returned no rows. What went wrong? A: Probably nothing. The filters combine, so a narrow combination can genuinely have no members: MDH alone returns 29 products, MDH inside Gewürze returns 1, and MDH inside Namkeens returns none. Widen one field at a time. You were not charged for the empty run.

Q: What output formats are available? A: JSON, CSV, Excel and XML — export directly from the Apify dataset, or read them from the API.


🐛 Troubleshooting

A run returned zero products

  • Reset Category and Brand to Any, then add one back at a time
  • Switch off Reduced articles only — only 48 articles are reduced at any time
  • Shorten the search term. The shop matches the product name and article number, not the long ingredients text

A product address came back as "no longer in the shop"

  • The shop has taken that article down. Search for it by name and copy a current address from the results

Fewer rows than the category count suggests

  • Max products stops the run. Raise it, or set it to 3000 to take everything
  • On the FREE tier a run stops at 25 rows

A category looks empty

  • Frozen goods and a couple of other shelves had nothing in stock when the actor was built. Switch on Include sold-out articles to see them anyway

The shop was temporarily unavailable

  • The run already retried five times. Try again in a few minutes; nothing needs changing on your side

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.

Spicelands and spicelands.de are trademarks of their respective owner. This actor is not affiliated with, endorsed by, or sponsored by Spicelands.


🤝 Support

Telegram Support

Join our active support community


Built by SIÁN Agency | More Tools