# Maisons du Monde Product Scraper (`sian.agency/maisons-du-monde-product-scraper`) Actor

Scrape Maisons du Monde products — EUR price, ratings, images, specs & full descriptions. Browse any category, full detail enrichment, clean JSON/CSV, no code.

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

## Pricing

from $3.80 / 1,000 overview products

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Maisons du Monde Product Scraper — Prices, Specs & Stock 🏡

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Crate & Barrel Scraper](https://img.shields.io/badge/Store-Crate%20%26%20Barrel%20Scraper-1AE392)](https://apify.com/sian.agency/crate-and-barrel-product-scraper?fpr=sian) [![Home Depot Scraper](https://img.shields.io/badge/Store-Home%20Depot%20Scraper-F96302)](https://apify.com/sian.agency/home-depot-product-scraper?fpr=sian) [![IKEA Scraper](https://img.shields.io/badge/Store-IKEA%20Scraper-0058A3)](https://apify.com/sian.agency/ikea-product-scraper?fpr=sian)

#### 🎉 Turn any Maisons du Monde category into a clean dataset — EUR prices, ratings, specs & images in minutes
##### Built for furniture & home-décor pricing analysts, e-commerce teams, and market researchers

---

### 📋 Overview

**Need Maisons du Monde product data without copy-pasting hundreds of pages?** This actor turns any Maisons du Monde category into a clean, structured dataset — EUR prices, ratings, review counts, images, full specifications and long descriptions — ready for spreadsheets, BI tools or your own pipeline.

**Why thousands of professionals choose us:**
- ✅ **Complete catalog coverage**: Browse any category and capture every product tile — title, EUR price, rating and image
- ⚡ **Two depth modes**: Fast Overview for whole categories, or rich Detail with specs, GTIN/EAN, stock and the full image gallery
- 🎯 **Accurate EUR pricing**: Current price, regular (was) price and sale flags exactly as shoppers see them on the FR/EU store
- 💰 **Pay only for what you get**: Transparent pay-per-result pricing — no subscriptions, generous free tier
- 💎 **Native filters & sorting**: Use Maisons du Monde's own facets (shape, colour, material, price band) and sort options
- ✨ **No code, no account**: Paste a category link, press Start, export JSON/CSV/Excel

---

### ✨ Features

- 🧭 **Category Browsing**: Scrape an entire Maisons du Monde category from a single URL
- 🔗 **Direct Product Mode**: Drop in specific product URLs for instant full-detail extraction
- 💵 **EUR Price Capture**: Current price, regular price and on-sale flag per product
- ⭐ **Ratings & Reviews**: Average star rating and total review count
- 📐 **Specifications Table**: Material, dimensions and product attributes (Detail mode)
- 📊 **GTIN / EAN & Stock**: Barcode and availability status for catalog matching (Detail mode)
- 📸 **Full Image Gallery**: Hero image plus every product photo
- 🔃 **Native Sorting**: Relevance, price (low/high), newest, best selling, top rated
- 🔍 **Facet Filters**: Pass the site's own filters as simple `key=value` pairs
- 📄 **Deep Pagination**: Pull multiple result pages per category in one run

---

### 🎬 Quick Start

Paste a Maisons du Monde category URL, choose Overview or Detail, press **Start**. Your structured dataset is ready to export as JSON, CSV or Excel.

```bash
curl -X POST "https://api.apify.com/v2/acts/sian.agency~maisons-du-monde-product-scraper/runs?token=YOUR_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"categories": ["https://www.maisonsdumonde.com/FR/fr/c/canapes-n4dc562d7bb509362a3a2102db4cbf90b6454f1f"], "scrapeMode": "overview"}'
````

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Pick a category

Open Maisons du Monde, navigate to a category (e.g. Canapés, Chaises, Tables, Tapis) and copy the page URL.

#### Step 2: Paste & configure

Paste the URL into **Category URLs**, choose **Overview** (fast) or **Detail** (full specs), and optionally set sort, filters and Max Results.

#### Step 3: Run & export

Press **Start**. In a couple of minutes you'll have:

- A clean table of products with EUR prices and ratings
- Full specifications, GTIN/EAN and image galleries (Detail mode)
- One-click export to JSON, CSV or Excel

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| categories | array | No\* | Maisons du Monde category URLs (or `c/<slug>-<hash>` paths) to scrape |
| productUrls | array | No\* | Direct product URLs for instant full-detail extraction |
| scrapeMode | string | No | `overview` (fast) or `detail` (full specs + description) |
| sort | string | No | `relevance`, `price_low`, `price_high`, `newest`, `best_selling`, `top_rated` |
| filters | array | No | Native facet filters as `key=value` (e.g. `fo=FORM_rond`, `disc=all`) |
| pages | integer | No | Result pages to fetch per category (each ≈ 50 products) |
| maxResults | integer | No | Cap on total products returned (FREE: 25, PAID: unlimited) |

\*Provide at least one of `categories` or `productUrls`.

**Example:**

```json
{
  "categories": ["https://www.maisonsdumonde.com/FR/fr/c/chaises-20526cb834235f8bc54e78e97ca5a14a"],
  "scrapeMode": "overview",
  "sort": "price_low",
  "maxResults": 100
}
```

**Detail mode with filters:**

```json
{
  "categories": ["https://www.maisonsdumonde.com/FR/fr/c/tapis-1559ac122904996dcae8be4c5de8fda6"],
  "scrapeMode": "detail",
  "filters": ["fo=FORM_rond"],
  "pages": 2
}
```

***

### 📤 Output

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

| Field | Type | Description |
|-------|------|-------------|
| productTitle | string | Full product name |
| brand | string | Brand (usually Maisons du Monde) |
| price | number | Current price in EUR |
| regular\_price | number | List/was price in EUR before markdown |
| currency | string | Always EUR (FR/EU store) |
| on\_sale | boolean | Whether the product is currently discounted |
| rating | number | Average customer rating (0–5) |
| review\_count | integer | Total number of reviews |
| gtin13 | string | EAN / GTIN-13 barcode (Detail) |
| availability | string | Stock status, e.g. InStock (Detail) |
| specs | object | Specification label → value table (Detail) |
| description | string | Long product description (Detail) |
| breadcrumbs | array | Category trail (Detail) |
| images | array | All product image URLs (hero first) |
| url | string | Direct product page link |

**Example:**

```json
{
  "id": "234643",
  "productTitle": "Clio - Canapé convertible 2/3 places en tissu recyclé beige",
  "brand": "Maisons du Monde",
  "price": 599,
  "regular_price": null,
  "currency": "EUR",
  "on_sale": null,
  "rating": 4.1,
  "review_count": 358,
  "gtin13": "3611872346430",
  "availability": "InStock",
  "specs": { "Matière principale": "Bois", "Nombre de places": "2 places, 3 places" },
  "breadcrumbs": ["Canapés et fauteuils", "Canapés", "Canapés convertibles"],
  "image": "https://medias.maisonsdumonde.com/.../canape-convertible-2-3-places-en-tissu-recycle-beige.jpg",
  "image_count": 12,
  "url": "https://www.maisonsdumonde.com/FR/fr/p/canape-convertible-2-3-places-en-tissu-recycle-beige-clio-234643.htm",
  "source": "detail"
}
```

***

### 💼 Use Cases & Examples

#### 1. Competitor Price Monitoring

**Pricing analysts tracking furniture & décor prices across the EU market.**

**Input:** Category URLs for sofas, chairs, tables
**Output:** EUR price, regular price and sale flag per product
**Use:** Daily price snapshots to benchmark your own assortment

#### 2. Catalog & Assortment Research

**E-commerce merchandisers mapping a category's breadth and price architecture.**

**Input:** A whole category in Overview mode
**Output:** Every product with price, rating and image
**Use:** Spot gaps, price bands and best-sellers at a glance

#### 3. Product-Spec Extraction for Feeds

**Marketplace and feed managers needing clean, structured product attributes.**

**Input:** Category or product URLs in Detail mode
**Output:** Specs table, GTIN/EAN, dimensions and descriptions
**Use:** Build or enrich product feeds and PIM records

#### 4. Promotion & Discount Tracking

**Deal hunters and retail strategists watching markdowns.**

**Input:** A category with `filters: ["disc=all"]`
**Output:** On-sale products with current vs regular price
**Use:** Surface the deepest discounts as they go live

#### 5. Trend & Demand Research

**Market researchers studying home-décor trends and ratings.**

**Input:** Multiple categories in Overview mode
**Output:** Ratings, review counts and prices across the range
**Use:** Identify rising styles, materials and price expectations

#### 6. Image & Content Sourcing

**Content teams building product galleries and comparison pages.**

**Input:** Product URLs in Detail mode
**Output:** Full image galleries plus descriptions
**Use:** Populate landing pages and buying guides quickly

***

### 🔗 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/maisons-du-monde-product-scraper').call({
  categories: ['https://www.maisonsdumonde.com/FR/fr/c/canapes-n4dc562d7bb509362a3a2102db4cbf90b6454f1f'],
  scrapeMode: 'overview',
});

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/maisons-du-monde-product-scraper').call(
    run_input={
        'categories': ['https://www.maisonsdumonde.com/FR/fr/c/chaises-20526cb834235f8bc54e78e97ca5a14a'],
        'scrapeMode': 'detail',
    }
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~maisons-du-monde-product-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"categories": ["https://www.maisonsdumonde.com/FR/fr/c/tapis-1559ac122904996dcae8be4c5de8fda6"], "scrapeMode": "detail"}'
```

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

1. **Trigger**: Schedule (e.g. daily price check) or webhook
2. **HTTP Request**: Call the actor API with your category URLs
3. **Process**: Handle the JSON results (prices, ratings, specs)
4. **Action**: Save to a sheet, alert on price drops, or sync to your PIM

***

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **25 products** per run — full feature access, same quality
- No credit card required
- Perfect for testing and small projects

#### PAID Tier (Production Ready)

- **Unlimited** products per run
- Faster processing, no delays
- Pay-per-result: only charged for the products you receive

💰 **Best value in the home-décor vertical** — a fat free tier plus a low per-product paid rate.

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

***

### ❓ Frequently Asked Questions

**Q: How many products can I scrape?**
A: FREE tier: 25 per run. PAID tier: unlimited.

**Q: Are prices in euros?**
A: Yes — this actor targets the France/EU store, so all prices are in EUR exactly as shown on maisonsdumonde.com.

**Q: How do I get a category URL?**
A: Open any category page on the site and copy the URL from your browser (e.g. `https://www.maisonsdumonde.com/FR/fr/c/canapes-...`). You can paste the full URL or just the `c/<slug>-<hash>` path.

**Q: What's the difference between Overview and Detail?**
A: Overview returns the category list (price, rating, image) fast and cheap. Detail adds the full specifications table, GTIN/EAN, stock status, image gallery and long description from each product page.

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

**Q: Is this legal?**
A: Yes — we only extract publicly available data. See the legal section below.

***

### 🐛 Troubleshooting

**No products returned**

- Make sure you pasted a **category** URL (containing `/c/`), not a homepage or search URL
- Check the category link still opens on the site

**Detail fields are empty**

- Set `scrapeMode` to `detail` — specs, GTIN, stock and descriptions only populate in Detail mode

**Fewer results than expected**

- Raise `maxResults` and increase `pages` to paginate deeper into large categories
- FREE tier is capped at 25 products per run

**A filter returns nothing**

- Confirm the `key=value` matches a real facet from the site URL after applying the filter on the page

***

### ⚖️ Is it legal to scrape data?

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](https://blog.apify.com/is-web-scraping-legal/).

***

### 🏷️ Trademark Disclaimer

Maisons du Monde® and the Maisons du Monde logo are trademarks of Maisons du Monde and/or its affiliates. This actor is an independent tool and is **not affiliated with, endorsed by, sponsored by, or in any way officially connected to Maisons du Monde**. All product names, brand names, trademarks and logos referenced are the property of their respective owners and are used here for identification and descriptive purposes only. This tool accesses only publicly available information.

***

### 🤝 Support

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

**Join our active support community**

- For issues or questions, open an issue in the actor's repository
- Check [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

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

# Actor input Schema

## `categories` (type: `array`):

🧭 **CATEGORY BROWSING:** Scrape a whole Maisons du Monde category — the primary way to harvest products.

🔧 **HOW TO GET IT:** Open any category on the site (e.g. Canapés, Chaises, Tables, Tapis), then copy the page URL from your browser, e.g. `https://www.maisonsdumonde.com/FR/fr/c/canapes-n4dc562d7bb509362a3a2102db4cbf90b6454f1f`. Paste the full URL (or just the `c/<slug>-<hash>` path) here.

📝 **EXAMPLES:**

- `https://www.maisonsdumonde.com/FR/fr/c/canapes-n4dc562d7bb509362a3a2102db4cbf90b6454f1f` (sofas)
- `c/chaises-20526cb834235f8bc54e78e97ca5a14a` (chairs)
- `c/tapis-1559ac122904996dcae8be4c5de8fda6` (rugs)

🖊️ **BULK EDIT:** Click "Bulk edit" to paste many category URLs at once (one per line) — all results land in the same dataset.

✅ **IMPORTANT:** Provide at least one category URL (or a product URL below) so there is something to scrape.

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

🔗 **DIRECT PRODUCT PAGES:** Scrape specific product pages straight to full detail (long description, specifications, GTIN/EAN, the complete image gallery & EUR price).

🔧 **HOW TO GET IT:** Open any product and copy its URL, e.g. `https://www.maisonsdumonde.com/FR/fr/p/...-234643.htm`. Paste the full URL (or the `/FR/fr/p/...` path) here.

💡 **TIP:** Leave this empty if you're browsing by category — it's an optional fast path when you already know the exact products you want.

🖊️ **BULK EDIT:** Click "Bulk edit" to paste many product URLs at once (one per line).

## `scrapeMode` (type: `string`):

⚙️ **SCRAPE DEPTH:** Choose how much data to pull per product.

⚡ **Overview (fast):** Category results only — EUR price, rating, review count, brand and hero image. Fastest and cheapest path.

🔬 **Detail (enriched specs):** Everything in Overview PLUS the full specifications table, GTIN/EAN, stock status, the complete image gallery and the long product description scraped from each product page.

💡 **TIP:** Start with Overview to scope a category, then switch to Detail when you need the complete spec sheet for feeds or comparisons.

## `sort` (type: `string`):

🔃 **RESULT ORDERING:** Order category results using Maisons du Monde's own native sort options — so you get the same ranking real shoppers see.

🏆 **Relevance** is the site default · 💲 **Price** sorts ascending or descending · 🆕 **Newest** prioritizes the latest arrivals · 🔥 **Best selling** surfaces popular products · ⭐ **Top rated** leads with the highest-reviewed items.

## `filters` (type: `array`):

🔍 **NATIVE FACET FILTERS (Advanced):** Narrow a category using Maisons du Monde's own filters, passed as `key=value` pairs.

🧩 **SUPPORTED KEYS:** `fo` (forme/shape) · `co` (couleur/colour) · `ma` (matière/material) · `pr` (prix/price band) · `st` (style) · `c`/`f`/`cam` (sub-category & model facets) · `disc` (e.g. `disc=all` for discounted only) · `di` (dimension).

📝 **EXAMPLES:** `fo=FORM_rond` · `disc=all`

💡 **TIP:** Open a category, apply a filter on the site, then copy the query-string `key=value` from the resulting URL. Leave empty for the full category.

## `pages` (type: `integer`):

📄 **PAGINATION DEPTH:** How many result pages to fetch per category (each page is ~50 products). Increase to harvest deeper into large categories.

💡 **TIP:** Start with 1 page to preview, then raise it once the output looks right. The Max Results cap still applies across everything.

## `maxResults` (type: `integer`):

🔢 **RESULT CAP:** Maximum number of products to return across all categories and product URLs combined.

🎁 **TIER-BASED LIMITS:**

- **FREE users:** Up to 25 products per run
- **PAID users:** Unlimited — scrape entire categories in a single run

💡 **TIP:** Keep this low while you dial in your categories, then raise it once the output looks right.

## Actor input object example

```json
{
  "categories": [
    "https://www.maisonsdumonde.com/FR/fr/c/canapes-n4dc562d7bb509362a3a2102db4cbf90b6454f1f"
  ],
  "scrapeMode": "overview",
  "sort": "relevance",
  "pages": 1,
  "maxResults": 100
}
```

# Actor output Schema

## `maisonsDuMondeProducts` (type: `string`):

Scraped Maisons du Monde products with EUR prices, promotions, ratings, images, specs and descriptions.

# 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 = {
    "categories": [
        "https://www.maisonsdumonde.com/FR/fr/c/canapes-n4dc562d7bb509362a3a2102db4cbf90b6454f1f"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/maisons-du-monde-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 = { "categories": ["https://www.maisonsdumonde.com/FR/fr/c/canapes-n4dc562d7bb509362a3a2102db4cbf90b6454f1f"] }

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/maisons-du-monde-product-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "categories": [
    "https://www.maisonsdumonde.com/FR/fr/c/canapes-n4dc562d7bb509362a3a2102db4cbf90b6454f1f"
  ]
}' |
apify call sian.agency/maisons-du-monde-product-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=sian.agency/maisons-du-monde-product-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Maisons du Monde Product Scraper",
        "description": "Scrape Maisons du Monde products — EUR price, ratings, images, specs & full descriptions. Browse any category, full detail enrichment, clean JSON/CSV, no code.",
        "version": "1.0",
        "x-build-id": "8JGergHuIuheHq8Wx"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sian.agency~maisons-du-monde-product-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sian.agency-maisons-du-monde-product-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/sian.agency~maisons-du-monde-product-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sian.agency-maisons-du-monde-product-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/sian.agency~maisons-du-monde-product-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sian.agency-maisons-du-monde-product-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "categories": {
                        "title": "🧭 Category URLs",
                        "type": "array",
                        "description": "🧭 **CATEGORY BROWSING:** Scrape a whole Maisons du Monde category — the primary way to harvest products.\n\n🔧 **HOW TO GET IT:** Open any category on the site (e.g. Canapés, Chaises, Tables, Tapis), then copy the page URL from your browser, e.g. `https://www.maisonsdumonde.com/FR/fr/c/canapes-n4dc562d7bb509362a3a2102db4cbf90b6454f1f`. Paste the full URL (or just the `c/<slug>-<hash>` path) here.\n\n📝 **EXAMPLES:**\n- `https://www.maisonsdumonde.com/FR/fr/c/canapes-n4dc562d7bb509362a3a2102db4cbf90b6454f1f` (sofas)\n- `c/chaises-20526cb834235f8bc54e78e97ca5a14a` (chairs)\n- `c/tapis-1559ac122904996dcae8be4c5de8fda6` (rugs)\n\n🖊️ **BULK EDIT:** Click \"Bulk edit\" to paste many category URLs at once (one per line) — all results land in the same dataset.\n\n✅ **IMPORTANT:** Provide at least one category URL (or a product URL below) so there is something to scrape.",
                        "default": [
                            "https://www.maisonsdumonde.com/FR/fr/c/canapes-n4dc562d7bb509362a3a2102db4cbf90b6454f1f"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "productUrls": {
                        "title": "🔗 Product URLs (Detail)",
                        "type": "array",
                        "description": "🔗 **DIRECT PRODUCT PAGES:** Scrape specific product pages straight to full detail (long description, specifications, GTIN/EAN, the complete image gallery & EUR price).\n\n🔧 **HOW TO GET IT:** Open any product and copy its URL, e.g. `https://www.maisonsdumonde.com/FR/fr/p/...-234643.htm`. Paste the full URL (or the `/FR/fr/p/...` path) here.\n\n💡 **TIP:** Leave this empty if you're browsing by category — it's an optional fast path when you already know the exact products you want.\n\n🖊️ **BULK EDIT:** Click \"Bulk edit\" to paste many product URLs at once (one per line).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "scrapeMode": {
                        "title": "⚙️ Scrape Mode",
                        "enum": [
                            "overview",
                            "detail"
                        ],
                        "type": "string",
                        "description": "⚙️ **SCRAPE DEPTH:** Choose how much data to pull per product.\n\n⚡ **Overview (fast):** Category results only — EUR price, rating, review count, brand and hero image. Fastest and cheapest path.\n\n🔬 **Detail (enriched specs):** Everything in Overview PLUS the full specifications table, GTIN/EAN, stock status, the complete image gallery and the long product description scraped from each product page.\n\n💡 **TIP:** Start with Overview to scope a category, then switch to Detail when you need the complete spec sheet for feeds or comparisons.",
                        "default": "overview"
                    },
                    "sort": {
                        "title": "🔃 Sort Order",
                        "enum": [
                            "relevance",
                            "price_low",
                            "price_high",
                            "newest",
                            "best_selling",
                            "top_rated"
                        ],
                        "type": "string",
                        "description": "🔃 **RESULT ORDERING:** Order category results using Maisons du Monde's own native sort options — so you get the same ranking real shoppers see.\n\n🏆 **Relevance** is the site default · 💲 **Price** sorts ascending or descending · 🆕 **Newest** prioritizes the latest arrivals · 🔥 **Best selling** surfaces popular products · ⭐ **Top rated** leads with the highest-reviewed items.",
                        "default": "relevance"
                    },
                    "filters": {
                        "title": "🔍 Facet Filters (Advanced)",
                        "type": "array",
                        "description": "🔍 **NATIVE FACET FILTERS (Advanced):** Narrow a category using Maisons du Monde's own filters, passed as `key=value` pairs.\n\n🧩 **SUPPORTED KEYS:** `fo` (forme/shape) · `co` (couleur/colour) · `ma` (matière/material) · `pr` (prix/price band) · `st` (style) · `c`/`f`/`cam` (sub-category & model facets) · `disc` (e.g. `disc=all` for discounted only) · `di` (dimension).\n\n📝 **EXAMPLES:** `fo=FORM_rond` · `disc=all`\n\n💡 **TIP:** Open a category, apply a filter on the site, then copy the query-string `key=value` from the resulting URL. Leave empty for the full category.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "pages": {
                        "title": "📄 Pages per Category",
                        "minimum": 1,
                        "type": "integer",
                        "description": "📄 **PAGINATION DEPTH:** How many result pages to fetch per category (each page is ~50 products). Increase to harvest deeper into large categories.\n\n💡 **TIP:** Start with 1 page to preview, then raise it once the output looks right. The Max Results cap still applies across everything.",
                        "default": 1
                    },
                    "maxResults": {
                        "title": "🔢 Max Results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "🔢 **RESULT CAP:** Maximum number of products to return across all categories and product URLs combined.\n\n🎁 **TIER-BASED LIMITS:**\n- **FREE users:** Up to 25 products per run\n- **PAID users:** Unlimited — scrape entire categories in a single run\n\n💡 **TIP:** Keep this low while you dial in your categories, then raise it once the output looks right.",
                        "default": 100
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
