# M.Video Scraper (`crawlerbros/mvideo-scraper`) Actor

Scrape mvideo.ru - a major Russian electronics and appliance retailer. Search products, browse categories, and fetch full product details: price, rating, specifications, images, and seller info.

- **URL**: https://apify.com/crawlerbros/mvideo-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** E-commerce, Automation, Integrations
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## M.Video Scraper

Scrape [mvideo.ru](https://www.mvideo.ru) — one of Russia's largest electronics and appliance retailers. Search products by keyword, browse any of 89 top-level categories, or fetch full product details (price, rating, specifications, images, seller info) by URL or product ID.

### What this actor does

- **Three modes:** `search`, `byCategory`, `productDetails`
- **89 curated categories** — TVs, smartphones, laptops, kitchen appliances, and more, plus a free-text override for any sub-category
- **Price, discount, and rating filters** — plus server-side brand and seller filters for `byCategory`
- **Full specifications** — flattened spec tables (screen size, resolution, capacity, etc.) for every product in `search`/`productDetails` mode
- **Customer reviews** — up to 20 of the most helpful reviews per product (text, pros/cons, recommendation, star rating breakdown, % who recommend)
- **Similar products** — alternate SKUs in the same model line (e.g. other screen sizes/colors of the same TV), with a productUrl and a description of how each differs
- **Seller info** — legal entity name, brand/marketing name, INN, OGRN, phone, address
- **Category breadcrumb trail** — both plain names and `{name, categoryId}` objects (the `categoryId` is directly usable as `categoryUrl` input)
- **Empty fields are omitted**

### Output: per-product listing (mode = `byCategory`)

- `productId`, `name`
- `productUrl` / `sourceUrl`
- `categoryId`, `categoryName`
- `salePrice`, `basePrice`, `discountPercent`, `currency` (RUB), `bonusAmount`
- `badgeText` — promotional badge label mvideo.ru attaches to the listing (e.g. a discount-campaign name), when present
- `ratingStar`, `ratingCount`
- `availabilityStatus` — mvideo.ru's own stock-status code for the listing
- `inStock`, `isNew`, `isPreorder`, `isLastChance`
- `imageUrl`, `imageUrls[]`
- `recordType: "product"`, `scrapedAt`

### Output: full product details (mode = `search` / `productDetails`)

- `productId`, `name`, `modelName`, `brandName`, `brandId`
- `productUrl` / `sourceUrl`
- `categoryId`, `categoryName`, `breadcrumbs[]`, `breadcrumbPath[]` (`{name, categoryId}`)
- `salePrice`, `basePrice`, `discountPercent`, `currency` (RUB), `bonusAmount`
- `ratingStar`, `ratingCount`, `ratingBreakdown` (`{"1": count, ..., "5": count}`), `recommendPercent`
- `reviews[]` (`{reviewId, author, score, text, benefits, drawbacks, recommended, likes, dislikes, date, photoCount}`)
- `inStock`, `storeOnly`, `isPreorder`
- `imageUrl`, `imageUrls[]`
- `description`, `specifications[]` (`{name, value}` pairs)
- `similarProducts[]` (`{productId, productUrl, differences[]}`) — alternate SKUs in the same model line
- `weightKg`
- `sellerId`, `sellerName`, `sellerLegalName`, `sellerInn`, `sellerOgrn`, `sellerPhone`, `sellerAddress`
- `recordType: "product"`, `scrapedAt`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `search` | `search` / `byCategory` / `productDetails` |
| `searchQuery` | string | `телевизор` | Free-text query (mode=search) |
| `category` | string (select) | – | One of 89 top-level categories (mode=byCategory) |
| `categoryUrl` | string | – | Custom category URL/ID, overrides `category` |
| `productUrls` | array | – | Product URLs or numeric IDs (mode=productDetails) |
| `sortOrder` | string | `popularity` | `popularity` / `priceAsc` / `priceDesc` (mode=byCategory) |
| `brands` | array | – | Only these brands, server-side (mode=byCategory) — lowercase filter slug, e.g. `samsung`, `lg` |
| `sellers` | array | – | Only these marketplace sellers, server-side (mode=byCategory) — lowercase filter slug, e.g. `mvideo`, `mediamarkt` |
| `minPrice` / `maxPrice` | integer | – | Price range filter, RUB (server-side in `byCategory`, client-side elsewhere) |
| `minRating` | number | – | Minimum customer rating (0-5) |
| `inStockOnly` | boolean | `false` | Only emit in-stock products |
| `maxItems` | integer | `10` | Hard cap on emitted records (1-2000; `mode=search` caps at ~10 regardless — see FAQ) |
| `maxReviews` | integer | `5` | Most-helpful customer reviews to attach per product (0-20; `search`/`productDetails` only; `0` skips fetching reviews) |
| `proxyConfiguration` | object | AUTO | Apify Proxy — see FAQ ("Do I need to provide a proxy?") |

#### Example: search

```json
{ "mode": "search", "searchQuery": "ноутбук", "maxItems": 10 }
````

#### Example: browse a category, cheapest first, in stock only

```json
{
  "mode": "byCategory",
  "category": "1",
  "sortOrder": "priceAsc",
  "inStockOnly": true,
  "maxItems": 50
}
```

#### Example: browse a category filtered by brand, seller, and price range (server-side)

```json
{
  "mode": "byCategory",
  "categoryUrl": "https://www.mvideo.ru/televizory-i-cifrovoe-tv-1/televizory-65",
  "brands": ["samsung", "lg"],
  "sellers": ["mvideo"],
  "minPrice": 20000,
  "maxPrice": 60000,
  "maxItems": 50
}
```

#### Example: full details for specific products

```json
{
  "mode": "productDetails",
  "productUrls": [
    "https://www.mvideo.ru/products/televizor-general-electronics-ge55lqs2-401211841",
    "401211839"
  ]
}
```

### Use cases

- **Price monitoring** — track prices/discounts across a category over time
- **Market research** — compare brand assortment and pricing in Russian electronics retail
- **Product catalog enrichment** — pull specifications and images for a known list of products
- **Competitive intelligence** — monitor seller/stock status for specific SKUs
- **Review analysis** — pull actual customer review text, pros/cons, and star-rating distribution for sentiment analysis
- **Cross-sell / assortment mapping** — discover sibling SKUs (other sizes/colors) via `similarProducts`

### Other Russian marketplace actors by CrawlerBros

| Actor | URL |
|---|---|
| Citilink Scraper - Russian Electronics Store Products | <https://apify.com/crawlerbros/citilink-scraper> |
| DNS-Shop Scraper | <https://apify.com/crawlerbros/dns-shop-scraper> |
| Eldorado Scraper | <https://apify.com/crawlerbros/eldorado-scraper> |
| ETM Electrical Equipment Scraper | <https://apify.com/crawlerbros/etm-scraper> |
| Holodilnik.ru Scraper | <https://apify.com/crawlerbros/holodilnik-scraper> |
| Lemanapro Scraper | <https://apify.com/crawlerbros/lemanapro-scraper> |
| Magnit Market (mm.ru) Scraper | <https://apify.com/crawlerbros/magnit-market-scraper> |
| Maxidom Scraper | <https://apify.com/crawlerbros/maxidom-scraper> |
| Megamarket.ru Scraper | <https://apify.com/crawlerbros/megamarket-scraper> |
| M.Video Scraper (this actor) | <https://apify.com/crawlerbros/mvideo-scraper> |
| Onlinetrade.ru Scraper | <https://apify.com/crawlerbros/onlinetrade-scraper> |
| Ozon Scraper - Products, Categories & Search | <https://apify.com/crawlerbros/ozon-scraper> |
| Petrovich Building Materials Scraper | <https://apify.com/crawlerbros/petrovich-scraper> |
| Regard Scraper | <https://apify.com/crawlerbros/regard-scraper> |
| Russkiy Svet (rs24.ru) Electrical Equipment Scraper | <https://apify.com/crawlerbros/russkiysvet-scraper> |
| Technopark.ru Scraper - Products, Categories & Search | <https://apify.com/crawlerbros/technopark-scraper> |
| VseInstrumenti.ru Scraper | <https://apify.com/crawlerbros/vseinstrumenti-scraper> |
| Wildberries Scraper | <https://apify.com/crawlerbros/wildberries-scraper> |
| X-Com Shop Scraper | <https://apify.com/crawlerbros/xcom-shop-scraper> |
| Yandex Market Pro Scraper | <https://apify.com/crawlerbros/yandex-pro-scraper> |

### FAQ

**Do I need to provide a proxy?** No — `proxyConfiguration` defaults to the free Apify datacenter pool. The actor only escalates to a paid residential proxy session internally, and only if the free tier gets blocked on every attempt.

**Why do some products have fewer fields than others?** Fields are only included when mvideo.ru actually returns a value for that product (e.g. not every product has a customer rating yet, or a discount).

**What currency are prices in?** Russian rubles (RUB) — mvideo.ru only sells in the Russian market.

**How do I find the right value for `brands`/`sellers`?** These map to mvideo.ru's own category filter facets (verified live against the site's `/bff/products` API). For brand/seller names written in Latin script — the vast majority (Samsung, LG, Sony, Xiaomi, MediaMarkt, etc.) — just use the lowercase name with spaces replaced by hyphens; the actor normalizes this for you. If a value doesn't narrow results as expected, open the category page on mvideo.ru in a browser, expand the "Бренд" (Brand) or "Продавец" (Seller) filter, and use the exact slug shown there. Cyrillic brand/seller names (e.g. `Самсунг`) are **not** auto-translated to their Latin slug — if none of your `brands`/`sellers` values resolve to a usable slug, that filter is skipped entirely (a warning is logged) rather than the run returning zero results, so always use the Latin slug.

**What sort order does `priceAsc`/`priceDesc` guarantee?** It's passed straight through to mvideo.ru's own `sortBy=price` facet — the actor does not re-sort results itself. In practice the site interleaves a small number of promoted/sponsored listings into the feed regardless of the requested sort, so the emitted order may not be perfectly monotonic by price; this is a property of the retailer's own ranking, not a scraping defect.

**Can I get more than 10 results from `mode=search`?** Not directly — mvideo.ru's own search API caps at around 10 matching products per query, and the actor passes results through as-is rather than re-ranking or padding them. For broad discovery, find the product's category via one search, then switch to `mode=byCategory` with that category for full pagination.

**How fresh is the data?** Real-time — every run fetches current prices, stock status, and ratings directly from mvideo.ru.

**Is this actor affiliated with mvideo.ru?** No — this is an independent, third-party actor that reads mvideo.ru's own publicly reachable product data. It is not affiliated with, endorsed by, or operated by M.Video.

# Actor input Schema

## `mode` (type: `string`):

What to fetch.

## `searchQuery` (type: `string`):

Free-text product search, e.g. телевизор, ноутбук, холодильник.

## `category` (type: `string`):

Top-level mvideo.ru category to browse.

## `categoryUrl` (type: `string`):

Overrides `category`. Accepts a full mvideo.ru category URL (e.g. https://www.mvideo.ru/televizory-i-cifrovoe-tv-1/televizory-65) or a bare numeric category ID, for sub-categories not in the dropdown.

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

mvideo.ru product URLs (e.g. https://www.mvideo.ru/products/televizor-...-401211841) or bare numeric product IDs.

## `sortOrder` (type: `string`):

Result ordering for category browsing.

## `brands` (type: `array`):

Only return products from these brands, server-side (AND with `category`). Use the brand's mvideo.ru filter slug — for Latin-script brands this is just the lowercase name (e.g. `samsung`, `lg`, `sony`, `xiaomi`, `general-electronics`); look up the exact slug by opening the category on mvideo.ru and checking the brand filter checkboxes if unsure. Multiple values are OR'd together.

## `sellers` (type: `array`):

Only return products from these marketplace sellers, server-side (AND with `category`). Use the seller's mvideo.ru filter slug (e.g. `mvideo` for M.Video itself, `mediamarkt` for MediaMarkt); look up the exact slug from the category's own seller filter if unsure. Multiple values are OR'd together.

## `minPrice` (type: `integer`):

Drop products cheaper than this (sale price, in Russian rubles). In mode=byCategory this is applied server-side (fewer wasted fetches); other modes filter client-side after fetching.

## `maxPrice` (type: `integer`):

Drop products more expensive than this (sale price, in Russian rubles). In mode=byCategory this is applied server-side (fewer wasted fetches); other modes filter client-side after fetching.

## `minRating` (type: `number`):

Drop products with a customer rating below this (0-5 stars). Products with no rating are excluded when this filter is set.

## `inStockOnly` (type: `boolean`):

Only emit products that are currently available (not sold out).

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

Hard cap on emitted records. Note: mode=search is limited to ~10 results (mvideo.ru's own search-suggestion API caps at 10 matches); use mode=byCategory for larger result sets.

## `maxReviews` (type: `integer`):

How many of the most helpful customer reviews to fetch and attach to each product's `reviews[]` field (also populates `ratingBreakdown` and `recommendPercent`). Only applies to mode=search and mode=productDetails, since those are the modes that fetch full product details. Set to 0 to skip fetching reviews.

## `proxyConfiguration` (type: `object`):

Apify Proxy to use. The actor tries the free datacenter (AUTO) pool first (Tier 3: Playwright); if mvideo.ru's anti-bot blocks every attempt, it automatically escalates to a residential proxy session (Tier 4: Camoufox) regardless of this setting.

## Actor input object example

```json
{
  "mode": "search",
  "searchQuery": "телевизор",
  "category": "1",
  "productUrls": [
    "https://www.mvideo.ru/products/televizor-general-electronics-ge55lqs2-401211841"
  ],
  "sortOrder": "popularity",
  "brands": [],
  "sellers": [],
  "inStockOnly": false,
  "maxItems": 10,
  "maxReviews": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `products` (type: `string`):

Dataset containing all scraped M.Video products.

# 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 = {
    "mode": "search",
    "searchQuery": "телевизор",
    "category": "1",
    "productUrls": [
        "https://www.mvideo.ru/products/televizor-general-electronics-ge55lqs2-401211841"
    ],
    "sortOrder": "popularity",
    "brands": [],
    "sellers": [],
    "inStockOnly": false,
    "maxItems": 10,
    "maxReviews": 5,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/mvideo-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 = {
    "mode": "search",
    "searchQuery": "телевизор",
    "category": "1",
    "productUrls": ["https://www.mvideo.ru/products/televizor-general-electronics-ge55lqs2-401211841"],
    "sortOrder": "popularity",
    "brands": [],
    "sellers": [],
    "inStockOnly": False,
    "maxItems": 10,
    "maxReviews": 5,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/mvideo-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 '{
  "mode": "search",
  "searchQuery": "телевизор",
  "category": "1",
  "productUrls": [
    "https://www.mvideo.ru/products/televizor-general-electronics-ge55lqs2-401211841"
  ],
  "sortOrder": "popularity",
  "brands": [],
  "sellers": [],
  "inStockOnly": false,
  "maxItems": 10,
  "maxReviews": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call crawlerbros/mvideo-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=crawlerbros/mvideo-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "M.Video Scraper",
        "description": "Scrape mvideo.ru - a major Russian electronics and appliance retailer. Search products, browse categories, and fetch full product details: price, rating, specifications, images, and seller info.",
        "version": "1.0",
        "x-build-id": "E2dzKqpeqkqb3nFra"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~mvideo-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-mvideo-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/crawlerbros~mvideo-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-mvideo-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/crawlerbros~mvideo-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-mvideo-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",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "byCategory",
                            "productDetails"
                        ],
                        "type": "string",
                        "description": "What to fetch.",
                        "default": "search"
                    },
                    "searchQuery": {
                        "title": "Search query (mode=search)",
                        "type": "string",
                        "description": "Free-text product search, e.g. телевизор, ноутбук, холодильник.",
                        "default": "телевизор"
                    },
                    "category": {
                        "title": "Category (mode=byCategory)",
                        "enum": [
                            "",
                            "5",
                            "19",
                            "6327",
                            "7",
                            "32156",
                            "6247",
                            "55394",
                            "37",
                            "50",
                            "34821",
                            "51",
                            "47",
                            "41",
                            "58",
                            "42",
                            "21",
                            "9",
                            "2287",
                            "20",
                            "4",
                            "64",
                            "32",
                            "56461",
                            "55882",
                            "31034",
                            "27763",
                            "11",
                            "3787",
                            "4107",
                            "24",
                            "5427",
                            "34",
                            "31517",
                            "32328",
                            "23226",
                            "3",
                            "56077",
                            "55",
                            "17",
                            "54",
                            "8",
                            "57404",
                            "57446",
                            "56457",
                            "57445",
                            "9375",
                            "23",
                            "4147",
                            "25",
                            "53",
                            "29",
                            "57366",
                            "2428",
                            "56",
                            "31713",
                            "8027",
                            "30420",
                            "1461",
                            "28153",
                            "10",
                            "5487",
                            "28151",
                            "2427",
                            "9491",
                            "1",
                            "31",
                            "31018",
                            "5927",
                            "33737",
                            "26087",
                            "23497",
                            "35",
                            "14",
                            "25841",
                            "8410",
                            "4887",
                            "36",
                            "2",
                            "36546",
                            "35284",
                            "7672",
                            "59",
                            "12",
                            "28",
                            "2687",
                            "2468",
                            "25344",
                            "7950",
                            "4507"
                        ],
                        "type": "string",
                        "description": "Top-level mvideo.ru category to browse.",
                        "default": ""
                    },
                    "categoryUrl": {
                        "title": "Custom category URL or ID (mode=byCategory)",
                        "type": "string",
                        "description": "Overrides `category`. Accepts a full mvideo.ru category URL (e.g. https://www.mvideo.ru/televizory-i-cifrovoe-tv-1/televizory-65) or a bare numeric category ID, for sub-categories not in the dropdown."
                    },
                    "productUrls": {
                        "title": "Product URLs or IDs (mode=productDetails)",
                        "type": "array",
                        "description": "mvideo.ru product URLs (e.g. https://www.mvideo.ru/products/televizor-...-401211841) or bare numeric product IDs.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "sortOrder": {
                        "title": "Sort order (mode=byCategory)",
                        "enum": [
                            "popularity",
                            "priceAsc",
                            "priceDesc"
                        ],
                        "type": "string",
                        "description": "Result ordering for category browsing.",
                        "default": "popularity"
                    },
                    "brands": {
                        "title": "Brands (mode=byCategory)",
                        "type": "array",
                        "description": "Only return products from these brands, server-side (AND with `category`). Use the brand's mvideo.ru filter slug — for Latin-script brands this is just the lowercase name (e.g. `samsung`, `lg`, `sony`, `xiaomi`, `general-electronics`); look up the exact slug by opening the category on mvideo.ru and checking the brand filter checkboxes if unsure. Multiple values are OR'd together.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "sellers": {
                        "title": "Sellers (mode=byCategory)",
                        "type": "array",
                        "description": "Only return products from these marketplace sellers, server-side (AND with `category`). Use the seller's mvideo.ru filter slug (e.g. `mvideo` for M.Video itself, `mediamarkt` for MediaMarkt); look up the exact slug from the category's own seller filter if unsure. Multiple values are OR'd together.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "minPrice": {
                        "title": "Min price (RUB)",
                        "minimum": 0,
                        "maximum": 10000000,
                        "type": "integer",
                        "description": "Drop products cheaper than this (sale price, in Russian rubles). In mode=byCategory this is applied server-side (fewer wasted fetches); other modes filter client-side after fetching."
                    },
                    "maxPrice": {
                        "title": "Max price (RUB)",
                        "minimum": 0,
                        "maximum": 10000000,
                        "type": "integer",
                        "description": "Drop products more expensive than this (sale price, in Russian rubles). In mode=byCategory this is applied server-side (fewer wasted fetches); other modes filter client-side after fetching."
                    },
                    "minRating": {
                        "title": "Min rating",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "number",
                        "description": "Drop products with a customer rating below this (0-5 stars). Products with no rating are excluded when this filter is set."
                    },
                    "inStockOnly": {
                        "title": "In stock only",
                        "type": "boolean",
                        "description": "Only emit products that are currently available (not sold out).",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 2000,
                        "type": "integer",
                        "description": "Hard cap on emitted records. Note: mode=search is limited to ~10 results (mvideo.ru's own search-suggestion API caps at 10 matches); use mode=byCategory for larger result sets.",
                        "default": 10
                    },
                    "maxReviews": {
                        "title": "Max customer reviews per product (search / productDetails)",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "How many of the most helpful customer reviews to fetch and attach to each product's `reviews[]` field (also populates `ratingBreakdown` and `recommendPercent`). Only applies to mode=search and mode=productDetails, since those are the modes that fetch full product details. Set to 0 to skip fetching reviews.",
                        "default": 5
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify Proxy to use. The actor tries the free datacenter (AUTO) pool first (Tier 3: Playwright); if mvideo.ru's anti-bot blocks every attempt, it automatically escalates to a residential proxy session (Tier 4: Camoufox) regardless of this setting.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
