{
  "data": {
    "id": "PKTIXhzs7ROGYFfPO",
    "actId": "L2mrRaxKqV5naozzW",
    "userId": "IYgBDiXtHOijAaUel",
    "startedAt": "2026-10-24T15:49:51.836Z",
    "finishedAt": "2026-10-24T15:50:35.062Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 43165,
      "runTimeSecs": 43.165,
      "computeUnits": 0.047961111111111114,
      "imageSizeBytes": 3142556160
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "QYo53EZkJk0prePWY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"M.Video Scraper Input\",\n  \"description\": \"Search mvideo.ru, browse a category, or fetch full details for specific products.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"description\": \"What to fetch.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"search\",\n        \"byCategory\",\n        \"productDetails\",\n        \"reviews\"\n      ],\n      \"enumTitles\": [\n        \"Search products by keyword\",\n        \"Browse a category\",\n        \"Fetch product details by URL/ID\",\n        \"Fetch customer reviews by product URL/ID\"\n      ],\n      \"default\": \"search\",\n      \"prefill\": \"search\"\n    },\n    \"searchQuery\": {\n      \"title\": \"Search query (mode=search)\",\n      \"type\": \"string\",\n      \"description\": \"Free-text product search, e.g. телевизор, ноутбук, холодильник. The full result set is paginated automatically.\",\n      \"editor\": \"textfield\",\n      \"default\": \"телевизор\",\n      \"prefill\": \"телевизор\"\n    },\n    \"city\": {\n      \"title\": \"City\",\n      \"type\": \"string\",\n      \"description\": \"Russian city name or mvideo city ID (e.g. Москва, Санкт-Петербург, CityCZ_975). City changes stock availability, pickup stores and delivery dates.\",\n      \"editor\": \"textfield\",\n      \"default\": \"Москва\",\n      \"prefill\": \"Москва\"\n    },\n    \"category\": {\n      \"title\": \"Category (mode=byCategory)\",\n      \"type\": \"string\",\n      \"description\": \"Top-level mvideo.ru category to browse. Use `categoryUrl` for any sub-category not listed here.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"\",\n        \"5\",\n        \"19\",\n        \"6327\",\n        \"7\",\n        \"32156\",\n        \"6247\",\n        \"55394\",\n        \"37\",\n        \"50\",\n        \"34821\",\n        \"51\",\n        \"47\",\n        \"41\",\n        \"58\",\n        \"42\",\n        \"21\",\n        \"9\",\n        \"2287\",\n        \"20\",\n        \"4\",\n        \"64\",\n        \"32\",\n        \"56461\",\n        \"55882\",\n        \"31034\",\n        \"27763\",\n        \"11\",\n        \"3787\",\n        \"4107\",\n        \"24\",\n        \"5427\",\n        \"34\",\n        \"31517\",\n        \"32328\",\n        \"23226\",\n        \"3\",\n        \"56077\",\n        \"55\",\n        \"17\",\n        \"54\",\n        \"8\",\n        \"57404\",\n        \"57446\",\n        \"56457\",\n        \"57445\",\n        \"9375\",\n        \"23\",\n        \"4147\",\n        \"25\",\n        \"53\",\n        \"29\",\n        \"57366\",\n        \"2428\",\n        \"56\",\n        \"31713\",\n        \"8027\",\n        \"30420\",\n        \"1461\",\n        \"28153\",\n        \"10\",\n        \"5487\",\n        \"28151\",\n        \"2427\",\n        \"9491\",\n        \"1\",\n        \"31\",\n        \"31018\",\n        \"5927\",\n        \"33737\",\n        \"26087\",\n        \"23497\",\n        \"35\",\n        \"14\",\n        \"25841\",\n        \"8410\",\n        \"4887\",\n        \"36\",\n        \"2\",\n        \"36546\",\n        \"35284\",\n        \"7672\",\n        \"59\",\n        \"12\",\n        \"28\",\n        \"2687\",\n        \"2468\",\n        \"25344\",\n        \"7950\",\n        \"4507\"\n      ],\n      \"enumTitles\": [\n        \"(none - required for byCategory)\",\n        \"Hi-Fi техника\",\n        \"PC игры и софт\",\n        \"Автодиагностика и сервис\",\n        \"Автозвук\",\n        \"Автомобильная безопасность\",\n        \"Автомобильная электрика\",\n        \"Аксессуары\",\n        \"Аксессуары для автомобилей\",\n        \"Аксессуары для дома\",\n        \"Аксессуары для домашней техники\",\n        \"Аксессуары для кухонной техники\",\n        \"Аксессуары для планшетов\",\n        \"Аксессуары для телевизоров\",\n        \"Аксессуары для телефонов\",\n        \"Аксессуары для фото и видеотехники\",\n        \"Аудиодиски и кассеты\",\n        \"Аудиотехника и DJ оборудование\",\n        \"Видеокамеры и экшн-камеры\",\n        \"Видеотехника\",\n        \"Встраиваемая техника\",\n        \"Гаджеты\",\n        \"Домашние и офисные телефоны/Радиостанции\",\n        \"Запчасти и аксессуары для садовой техники\",\n        \"Игровые консоли и игры\",\n        \"Игрушки, игры и творчество\",\n        \"Канцелярия\",\n        \"Климатическая техника\",\n        \"Коды для фильмов, музыки и книг\",\n        \"Компьютерная техника\",\n        \"Компьютерные аксессуары\",\n        \"Компьютерные комплектующие\",\n        \"Крупная кухонная техника\",\n        \"Кухонные принадлежности\",\n        \"Мебель\",\n        \"Медицинские товары\",\n        \"Мелкая кухонная техника\",\n        \"Мототовары\",\n        \"Музыкальные инструменты\",\n        \"Навигаторы и автомобильная электроника\",\n        \"Наушники\",\n        \"Ноутбуки, планшеты, компьютеры\",\n        \"Обувь\",\n        \"Одежда детская\",\n        \"Одежда женская\",\n        \"Одежда мужская\",\n        \"Освещение\",\n        \"Периферийные устройства\",\n        \"Планшеты и электронные книги\",\n        \"Портативное аудио\",\n        \"Посуда\",\n        \"Приготовление кофе\",\n        \"Продукты\",\n        \"Пылесосы и аксессуары\",\n        \"Радиоуправляемые устройства\",\n        \"Ручной инструмент и наборы\",\n        \"Садовая техника и оборудование\",\n        \"Сантехника\",\n        \"Сервисы\",\n        \"Силовая техника и строительное оборудование\",\n        \"Смартфоны и связь\",\n        \"Спутниковое/цифровое ТВ\",\n        \"Станки\",\n        \"Стиральные и сушильные машины\",\n        \"Строительные расходные материалы и оснастка\",\n        \"Телевизоры и цифровое ТВ\",\n        \"Товары для авто\",\n        \"Товары для активного отдыха\",\n        \"Товары для бритья и стрижки\",\n        \"Товары для дачи и сада\",\n        \"Товары для дома\",\n        \"Товары для животных\",\n        \"Товары для здоровья\",\n        \"Товары для красоты\",\n        \"Товары для праздников\",\n        \"Товары для спорта\",\n        \"Товары для укладки волос\",\n        \"Товары для ухода за детьми\",\n        \"Товары для ухода за одеждой\",\n        \"Транспортные средства\",\n        \"Тренажёры\",\n        \"Устройства для \\\"Умного дома\\\"\",\n        \"Устройства охраны и видеонаблюдения\",\n        \"Фотоаппараты\",\n        \"Хобби\",\n        \"Холодильники и морозильники\",\n        \"Цифровые фоторамки и фотопринтеры\",\n        \"Электрика\",\n        \"Электроинструменты\",\n        \"Электротранспорт\"\n      ],\n      \"default\": \"\",\n      \"prefill\": \"1\"\n    },\n    \"categoryUrl\": {\n      \"title\": \"Custom category URL or ID (mode=byCategory)\",\n      \"type\": \"string\",\n      \"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.\",\n      \"editor\": \"textfield\"\n    },\n    \"productUrls\": {\n      \"title\": \"Product URLs or IDs (mode=productDetails / reviews)\",\n      \"type\": \"array\",\n      \"description\": \"mvideo.ru product URLs (e.g. https://www.mvideo.ru/products/televizor-...-401211841) or bare numeric product IDs. Used by productDetails and reviews modes.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": [\n        \"https://www.mvideo.ru/products/televizor-general-electronics-ge55lqs2-401211841\"\n      ]\n    },\n    \"sortOrder\": {\n      \"title\": \"Sort order (mode=search / byCategory)\",\n      \"type\": \"string\",\n      \"description\": \"Result ordering. Only popularity and price ordering are supported by the source; other orderings are not promised.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"popularity\",\n        \"priceAsc\",\n        \"priceDesc\"\n      ],\n      \"enumTitles\": [\n        \"Popularity (default)\",\n        \"Price: low to high\",\n        \"Price: high to low\"\n      ],\n      \"default\": \"popularity\",\n      \"prefill\": \"popularity\"\n    },\n    \"brands\": {\n      \"title\": \"Brands (mode=search / byCategory)\",\n      \"type\": \"array\",\n      \"description\": \"Only return products from these brands. Accepts brand names or mvideo.ru slugs (e.g. `Samsung`, `samsung`, `LG`). The matching facet is resolved from the live response, so no hardcoded IDs are needed. Multiple values are OR'd together.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"sellers\": {\n      \"title\": \"Sellers (mode=byCategory)\",\n      \"type\": \"array\",\n      \"description\": \"Only return products from these marketplace sellers. Accepts seller names or mvideo.ru seller slugs (e.g. `BQ.ru`, `bqru`). The seller facet exists in category browsing only; the search response has no seller facet, so a search run with sellers set stops with a clear message. Multiple values are OR'd together.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"minPrice\": {\n      \"title\": \"Min price (RUB)\",\n      \"type\": \"integer\",\n      \"description\": \"Drop products cheaper than this (sale price, in Russian rubles). Applied server-side in search/category mode and client-side for detail records.\",\n      \"minimum\": 0,\n      \"maximum\": 10000000\n    },\n    \"maxPrice\": {\n      \"title\": \"Max price (RUB)\",\n      \"type\": \"integer\",\n      \"description\": \"Drop products more expensive than this (sale price, in Russian rubles). Applied server-side in search/category mode and client-side for detail records.\",\n      \"minimum\": 0,\n      \"maximum\": 10000000\n    },\n    \"minRating\": {\n      \"title\": \"Min rating\",\n      \"type\": \"number\",\n      \"description\": \"Drop products with a customer rating below this (0-5 stars). Applied after catalog fetches (the API has no rating facet). Products with no rating are excluded when this filter is set.\",\n      \"editor\": \"number\",\n      \"minimum\": 0,\n      \"maximum\": 5\n    },\n    \"minDiscount\": {\n      \"title\": \"Min discount (%)\",\n      \"type\": \"integer\",\n      \"description\": \"Drop products with a smaller discount than this (0-99 percent). Applied after catalog fetches (the API has no discount facet). Products without a discount are excluded when this filter is set.\",\n      \"editor\": \"number\",\n      \"minimum\": 0,\n      \"maximum\": 99\n    },\n    \"condition\": {\n      \"title\": \"Condition (mode=search / byCategory)\",\n      \"type\": \"string\",\n      \"description\": \"Filter by item condition. The matching facet is resolved from the live response; if it is unavailable for a query/category, the run stops with a clear message instead of returning unfiltered results.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"any\",\n        \"new\",\n        \"refurbished\",\n        \"used\",\n        \"markdown\",\n        \"showcase\"\n      ],\n      \"enumTitles\": [\n        \"Any condition\",\n        \"New\",\n        \"Refurbished\",\n        \"Used\",\n        \"Markdown / clearance\",\n        \"Showcase / display unit\"\n      ],\n      \"default\": \"any\",\n      \"prefill\": \"any\"\n    },\n    \"fromAbroad\": {\n      \"title\": \"Parallel import only (mode=search)\",\n      \"type\": \"boolean\",\n      \"description\": \"Only return parallel-import listings. Applies to search mode only; ignored in category mode.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"maxItems\": {\n      \"title\": \"Max items\",\n      \"type\": \"integer\",\n      \"description\": \"Hard cap on emitted records (products, or review rows in mode=reviews). Search covers the full result set across all pages, de-duplicated by product ID. Use 0 for all (up to the 10,000 cap).\",\n      \"minimum\": 0,\n      \"maximum\": 10000,\n      \"default\": 100,\n      \"prefill\": 3\n    },\n    \"maxReviews\": {\n      \"title\": \"Max customer reviews per product\",\n      \"type\": \"integer\",\n      \"description\": \"Reviews to fetch per product in mode=productDetails (attached as `reviews[]`) and mode=reviews (one row per review). Paginated 20 at a time; 0 skips review fetching.\",\n      \"minimum\": 0,\n      \"maximum\": 200,\n      \"default\": 20,\n      \"prefill\": 0\n    },\n    \"includeStoreStock\": {\n      \"title\": \"Include store stock (mode=productDetails)\",\n      \"type\": \"boolean\",\n      \"description\": \"Fetch per-store pickup availability for the selected city and attach a `stores[]` list.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"storeLimit\": {\n      \"title\": \"Max stores per product\",\n      \"type\": \"integer\",\n      \"description\": \"Cap on `stores[]` entries per product when store stock is included.\",\n      \"minimum\": 1,\n      \"maximum\": 200,\n      \"default\": 20,\n      \"prefill\": 20\n    },\n    \"includeOtherOffers\": {\n      \"title\": \"Include other seller offers (mode=productDetails)\",\n      \"type\": \"boolean\",\n      \"description\": \"Fetch the seller/buybox block and attach `otherOffers[]` with prices and seller details when available.\",\n      \"default\": true,\n      \"prefill\": false\n    },\n    \"failOnEmpty\": {\n      \"title\": \"Fail when nothing is found\",\n      \"type\": \"boolean\",\n      \"description\": \"Mark the run as failed when zero records are emitted (for example a blocked connection or an empty query).\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"proxyConfiguration\": {\n      \"title\": \"Proxy configuration\",\n      \"type\": \"object\",\n      \"description\": \"Optional. The actor connects directly first and only escalates to Apify Proxy if mvideo.ru blocks a request. Change this only if you need a specific proxy setup.\",\n      \"editor\": \"proxy\",\n      \"prefill\": {\n        \"useApifyProxy\": true\n      },\n      \"default\": {\n        \"useApifyProxy\": true\n      }\n    }\n  },\n  \"required\": [\n    \"mode\"\n  ]\n}",
    "readme": "# M.Video Russia Electronics Product & Review Scraper\r\n\r\nScrape **mvideo.ru**, one of Russia's largest electronics and appliance retailers, without cookies, logins, or proxy setup. Search the full catalog, browse any category with live brand / condition / price filters, pull complete product detail with seller and store availability, and export customer reviews — all for a chosen Russian city.\r\n\r\n## What this actor does\r\n\r\n- **Four modes:** `search`, `byCategory`, `productDetails`, `reviews`\r\n- **Full pagination** — search walks every result page (about 2,100+ unique TV listings across ~38 pages at test time), de-duplicated by product ID\r\n- **Live facets** — brand, seller, condition and parallel-import filters are resolved from each response, so the actor uses the IDs the site is actually serving instead of stale hardcoded values\r\n- **City-aware availability** — stock status, pickup stores and delivery dates follow the city you choose (Москва, Санкт-Петербург, Владивосток, Казань, Екатеринбург, Новосибирск and others)\r\n- **Product detail** — prices, promo discounts, bonus rubles, rating, specifications, images, breadcrumbs, similar SKUs, seller/buybox and other marketplace offers\r\n- **Store stock** — optional per-store pickup list with address, metro, coordinates, quantity and schedule\r\n- **Customer reviews** — paginated review export with rating, text, pros/cons, photos, replies and likes; product detail adds the star histogram\r\n- **Empty fields are omitted** — no `null` placeholders anywhere in a record\r\n\r\n## Output per product (`recordType: \"product\"`)\r\n\r\n- `productId`, `name`, `modelName`, `brandName`, `brandId`\r\n- `productUrl`, `sourceUrl`\r\n- `categoryId`, `categoryName`, `breadcrumbs[]`, `breadcrumbPath[]` (`{name, categoryId}`)\r\n- `salePrice`, `basePrice`, `promoPrice`, `discountPercent`, `discountAmount`, `discounts[]`, `bonusAmount`, `currency`\r\n- `ratingStar`, `ratingCount`, `totalRating`, `ratingsStats`, `ratingBreakdown`, `reviewsTotal`, `reviews[]`\r\n- `inStock`, `soldOut`, `availabilityStatus`, `availabilityDate`, `storeOnly`, `isPrepayment`, `showcase`, `isPreorder`, `isLastChance`, `isNew`\r\n- `condition`, `productType`, `materialSource`\r\n- `description`, `specifications[]`, `weightKg`, `imageUrl`, `imageUrls[]`, `videos[]`, `images3d[]`, `certificates[]`, `instructions[]`\r\n- `seller` (`{id, name, legalName, inn, ogrn, address, phone, rating, orders, reviews}`), `multiofferCount`, `otherOffers[]`, `similarProducts[]`\r\n- `deliveryDate`, `stockLocation`, `hasExpressDelivery`, `prepaidOnly`\r\n- `stores[]` (`{storeId, name, address, metro, lat, lng, quantity, availabilityDate, schedule, isAllDay}`), `storeCount`, `storeQuantity`\r\n- `cityId`, `cityName`, `regionId`\r\n- `position`, `query`, `source`, `recordType`, `scrapedAt`\r\n\r\nListing modes (`search`, `byCategory`) return the identity, price, stock, rating and image fields available in the catalog response. Detail enrichment (specifications, seller, stores, reviews) is produced by `productDetails`.\r\n\r\n## Output per review (`recordType: \"review\"`, mode = `reviews`)\r\n\r\n- `reviewId`, `productId`, `productUrl`\r\n- `rating`, `author`, `date`\r\n- `text`, `pros`, `cons`\r\n- `photos[]`, `responses[]`\r\n- `likes`, `dislikes`, `isPopular`\r\n- `recordType`, `scrapedAt`\r\n\r\n## Output per error record (`recordType: \"error\"`)\r\n\r\nInvalid or unavailable product IDs in `productDetails` mode produce an error row instead of being dropped. Error rows carry `errorType` (`invalid_input`), `productId`, `message`, `mode`, `sourceUrl`, `retryable`, `cityId`, `cityName`, `regionId` and `scrapedAt`, and never count toward `maxItems`.\r\n\r\n## Input\r\n\r\n| Field | Type | Default | Description |\r\n|---|---|---|---|\r\n| `mode` | string | `search` | `search` / `byCategory` / `productDetails` / `reviews` |\r\n| `searchQuery` | string | `телевизор` | Free-text query (mode=search) |\r\n| `city` | string | `Москва` | City name or mvideo city ID; controls stock, stores and delivery |\r\n| `category` | string (select) | `\"\"` | Top-level category (mode=byCategory) |\r\n| `categoryUrl` | string | – | Any category URL or slug/ID; overrides `category` |\r\n| `productUrls` | array | `[]` | Product URLs or numeric IDs (mode=productDetails / reviews) |\r\n| `brands` | array | `[]` | Brand names or slugs, e.g. `Samsung`, `lg` |\r\n| `sellers` | array | `[]` | Seller names or slugs, e.g. `BQ.ru`, `bqru` (mode=byCategory; search has no seller facet) |\r\n| `minPrice` / `maxPrice` | integer | – | Sale-price range in RUB |\r\n| `minRating` | number | – | Minimum rating (0–5); unrated products are excluded when set |\r\n| `minDiscount` | integer | – | Minimum discount percent (0–99) |\r\n| `condition` | string | `any` | `any` / `new` / `refurbished` / `used` / `markdown` / `showcase` (search / category; resolved from the live facet) |\r\n| `fromAbroad` | boolean | `false` | Parallel-import listings only (mode=search) |\r\n| `sortOrder` | string | `popularity` | `popularity` / `priceAsc` / `priceDesc` |\r\n| `maxItems` | integer | `100` | Hard cap on emitted records (0–10,000; `0` = all, capped at 10,000) |\r\n| `maxReviews` | integer | `20` | Reviews per product (0–200; 20 per page) |\r\n| `includeStoreStock` | boolean | `false` | Attach `stores[]` in mode=productDetails |\r\n| `storeLimit` | integer | `20` | Maximum stores per product |\r\n| `includeOtherOffers` | boolean | `true` | Attach `otherOffers[]` in mode=productDetails |\r\n| `failOnEmpty` | boolean | `false` | Mark the run failed when zero records are emitted |\r\n| `proxyConfiguration` | object | automatic | Optional; the actor connects directly first and escalates only if blocked |\r\n\r\n### Example: search with filters\r\n\r\n```json\r\n{\r\n  \"mode\": \"search\",\r\n  \"searchQuery\": \"телевизор\",\r\n  \"city\": \"Москва\",\r\n  \"brands\": [\"Samsung\", \"LG\"],\r\n  \"minPrice\": 30000,\r\n  \"maxPrice\": 90000,\r\n  \"condition\": \"new\",\r\n  \"sortOrder\": \"priceAsc\",\r\n  \"maxItems\": 200\r\n}\r\n```\r\n\r\n### Example: browse a category, used or refurbished only\r\n\r\n```json\r\n{\r\n  \"mode\": \"byCategory\",\r\n  \"categoryUrl\": \"https://www.mvideo.ru/televizory-i-cifrovoe-tv-1/televizory-65\",\r\n  \"city\": \"Санкт-Петербург\",\r\n  \"condition\": \"refurbished\",\r\n  \"minDiscount\": 10,\r\n  \"maxItems\": 100\r\n}\r\n```\r\n\r\n### Example: full detail with stores and seller offers\r\n\r\n```json\r\n{\r\n  \"mode\": \"productDetails\",\r\n  \"productUrls\": [\r\n    \"https://www.mvideo.ru/products/televizor-general-electronics-ge55lqs2-401211841\",\r\n    \"402415077\"\r\n  ],\r\n  \"city\": \"Москва\",\r\n  \"maxReviews\": 20,\r\n  \"includeStoreStock\": true,\r\n  \"includeOtherOffers\": true\r\n}\r\n```\r\n\r\n### Example: export reviews\r\n\r\n```json\r\n{\r\n  \"mode\": \"reviews\",\r\n  \"productUrls\": [\"400205087\"],\r\n  \"maxReviews\": 200,\r\n  \"maxItems\": 200\r\n}\r\n```\r\n\r\n## Use cases\r\n\r\n- **Price monitoring** — track sale prices, promo discounts and bonus rubles across a category\r\n- **Assortment research** — compare brand and seller coverage in Russian electronics retail\r\n- **Catalog enrichment** — pull specifications, images and breadcrumbs for a known SKU list\r\n- **Availability intelligence** — monitor stock and pickup stores by city for selected products\r\n- **Review analytics** — export review text, pros/cons and star distributions for sentiment analysis\r\n- **Marketplace seller tracking** — compare the buybox seller and other offers on marketplace listings\r\n\r\n## FAQ\r\n\r\n**Do I need cookies, a login, or a proxy?** No. Catalog, product detail and reviews are read from mvideo.ru's public endpoints without an account. The actor connects directly first; if the site temporarily rate-limits a detail or review request, it retries and falls back to a real browser session, and only then to a different Apify Proxy route. If every HTTP route is blocked, it can continue in a browser-only session. You do not configure anything.\r\n\r\n**Why does the city matter?** mvideo.ru serves city-specific stock, pickup stores and delivery dates. In testing, catalog prices for fixed products did not differ between cities, so treat the city setting as an availability selector rather than a price-comparison tool.\r\n\r\n**How many search results can I get?** Search pages through the source's own cursor. At the time of testing, `телевизор` declared 2,253 results across 38 pages and yielded 2,125 unique products; the source itself does not surface a small number of advertised or duplicate rows. Set `maxItems` to the number you need.\r\n\r\n**Why are some fields missing on some products?** Empty fields are omitted. Marketplace rows may lack a description, an M.Video-owned product has no third-party seller, and not every SKU has a rating, discount, store stock or video.\r\n\r\n**Are videos and 3D images included?** The fields exist and are filled when mvideo.ru returns them, but most products have none. The actor does not promise video or 3D content.\r\n\r\n**What does `condition` guarantee?** The filter is applied through the site's live condition facet. Refurbished and markdown items can be recognized from the product name; marketplace \"used\" listings do not always expose a machine-readable condition, so treat the echoed condition as the filter you requested, not a per-row certification.\r\n\r\n**Can I sort by rating, newest, or discount?** No. Popularity and sale-price ordering are supported. For `priceAsc` / `priceDesc`, the actor sorts the emitted rows by sale price because the source's own ordering is approximate. `minRating` and `minDiscount` are applied as filters instead.\r\n\r\n**Why is there no \"in stock only\" toggle?** In validation, every sampled catalog listing was marked available, so the toggle was a no-op. Use the `inStock` / `soldOut` fields in the output if you need to filter downstream.\r\n\r\n**How many reviews can I fetch?** The source serves 20 reviews per page with no login wall. `maxReviews` controls the per-product cap (up to 200); `maxItems` caps the total rows in `reviews` mode.\r\n\r\n**Are review filters or date sorting supported?** No. The review list supports useful/rating ordering; the undocumented review filters returned empty results in testing, so they are not exposed.\r\n\r\n**Why did a brand or seller filter stop the run?** Filter facets are resolved from the live response. If a requested brand, seller, condition or parallel-import facet is not present for that query or category, the actor stops with a clear message rather than silently returning unfiltered results. Remove that filter or try a broader query/category.\r\n\r\n**How fresh is the data?** Every run reads current catalog, price, stock and review data directly from mvideo.ru.\r\n\r\n**Is this actor affiliated with mvideo.ru?** No. It is an independent, third-party actor that reads publicly reachable product data. It is not affiliated with, endorsed by, or operated by M.Video.\r\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "m-video-russia-electronics-product-and-review",
      "title": "M.Video Russia Electronics Product & Review Scraper",
      "description": "Search the full mvideo.ru catalog, browse categories with live brand/condition/price filters, fetch product detail with seller and store availability, or export customer reviews for any Russian city.",
      "version": "1.1",
      "buildTag": "latest",
      "defaultMemoryMbytes": 2048,
      "minMemoryMbytes": 2048,
      "dockerfile": "./Dockerfile",
      "readme": "# M.Video Russia Electronics Product & Review Scraper\r\n\r\nScrape **mvideo.ru**, one of Russia's largest electronics and appliance retailers, without cookies, logins, or proxy setup. Search the full catalog, browse any category with live brand / condition / price filters, pull complete product detail with seller and store availability, and export customer reviews — all for a chosen Russian city.\r\n\r\n## What this actor does\r\n\r\n- **Four modes:** `search`, `byCategory`, `productDetails`, `reviews`\r\n- **Full pagination** — search walks every result page (about 2,100+ unique TV listings across ~38 pages at test time), de-duplicated by product ID\r\n- **Live facets** — brand, seller, condition and parallel-import filters are resolved from each response, so the actor uses the IDs the site is actually serving instead of stale hardcoded values\r\n- **City-aware availability** — stock status, pickup stores and delivery dates follow the city you choose (Москва, Санкт-Петербург, Владивосток, Казань, Екатеринбург, Новосибирск and others)\r\n- **Product detail** — prices, promo discounts, bonus rubles, rating, specifications, images, breadcrumbs, similar SKUs, seller/buybox and other marketplace offers\r\n- **Store stock** — optional per-store pickup list with address, metro, coordinates, quantity and schedule\r\n- **Customer reviews** — paginated review export with rating, text, pros/cons, photos, replies and likes; product detail adds the star histogram\r\n- **Empty fields are omitted** — no `null` placeholders anywhere in a record\r\n\r\n## Output per product (`recordType: \"product\"`)\r\n\r\n- `productId`, `name`, `modelName`, `brandName`, `brandId`\r\n- `productUrl`, `sourceUrl`\r\n- `categoryId`, `categoryName`, `breadcrumbs[]`, `breadcrumbPath[]` (`{name, categoryId}`)\r\n- `salePrice`, `basePrice`, `promoPrice`, `discountPercent`, `discountAmount`, `discounts[]`, `bonusAmount`, `currency`\r\n- `ratingStar`, `ratingCount`, `totalRating`, `ratingsStats`, `ratingBreakdown`, `reviewsTotal`, `reviews[]`\r\n- `inStock`, `soldOut`, `availabilityStatus`, `availabilityDate`, `storeOnly`, `isPrepayment`, `showcase`, `isPreorder`, `isLastChance`, `isNew`\r\n- `condition`, `productType`, `materialSource`\r\n- `description`, `specifications[]`, `weightKg`, `imageUrl`, `imageUrls[]`, `videos[]`, `images3d[]`, `certificates[]`, `instructions[]`\r\n- `seller` (`{id, name, legalName, inn, ogrn, address, phone, rating, orders, reviews}`), `multiofferCount`, `otherOffers[]`, `similarProducts[]`\r\n- `deliveryDate`, `stockLocation`, `hasExpressDelivery`, `prepaidOnly`\r\n- `stores[]` (`{storeId, name, address, metro, lat, lng, quantity, availabilityDate, schedule, isAllDay}`), `storeCount`, `storeQuantity`\r\n- `cityId`, `cityName`, `regionId`\r\n- `position`, `query`, `source`, `recordType`, `scrapedAt`\r\n\r\nListing modes (`search`, `byCategory`) return the identity, price, stock, rating and image fields available in the catalog response. Detail enrichment (specifications, seller, stores, reviews) is produced by `productDetails`.\r\n\r\n## Output per review (`recordType: \"review\"`, mode = `reviews`)\r\n\r\n- `reviewId`, `productId`, `productUrl`\r\n- `rating`, `author`, `date`\r\n- `text`, `pros`, `cons`\r\n- `photos[]`, `responses[]`\r\n- `likes`, `dislikes`, `isPopular`\r\n- `recordType`, `scrapedAt`\r\n\r\n## Output per error record (`recordType: \"error\"`)\r\n\r\nInvalid or unavailable product IDs in `productDetails` mode produce an error row instead of being dropped. Error rows carry `errorType` (`invalid_input`), `productId`, `message`, `mode`, `sourceUrl`, `retryable`, `cityId`, `cityName`, `regionId` and `scrapedAt`, and never count toward `maxItems`.\r\n\r\n## Input\r\n\r\n| Field | Type | Default | Description |\r\n|---|---|---|---|\r\n| `mode` | string | `search` | `search` / `byCategory` / `productDetails` / `reviews` |\r\n| `searchQuery` | string | `телевизор` | Free-text query (mode=search) |\r\n| `city` | string | `Москва` | City name or mvideo city ID; controls stock, stores and delivery |\r\n| `category` | string (select) | `\"\"` | Top-level category (mode=byCategory) |\r\n| `categoryUrl` | string | – | Any category URL or slug/ID; overrides `category` |\r\n| `productUrls` | array | `[]` | Product URLs or numeric IDs (mode=productDetails / reviews) |\r\n| `brands` | array | `[]` | Brand names or slugs, e.g. `Samsung`, `lg` |\r\n| `sellers` | array | `[]` | Seller names or slugs, e.g. `BQ.ru`, `bqru` (mode=byCategory; search has no seller facet) |\r\n| `minPrice` / `maxPrice` | integer | – | Sale-price range in RUB |\r\n| `minRating` | number | – | Minimum rating (0–5); unrated products are excluded when set |\r\n| `minDiscount` | integer | – | Minimum discount percent (0–99) |\r\n| `condition` | string | `any` | `any` / `new` / `refurbished` / `used` / `markdown` / `showcase` (search / category; resolved from the live facet) |\r\n| `fromAbroad` | boolean | `false` | Parallel-import listings only (mode=search) |\r\n| `sortOrder` | string | `popularity` | `popularity` / `priceAsc` / `priceDesc` |\r\n| `maxItems` | integer | `100` | Hard cap on emitted records (0–10,000; `0` = all, capped at 10,000) |\r\n| `maxReviews` | integer | `20` | Reviews per product (0–200; 20 per page) |\r\n| `includeStoreStock` | boolean | `false` | Attach `stores[]` in mode=productDetails |\r\n| `storeLimit` | integer | `20` | Maximum stores per product |\r\n| `includeOtherOffers` | boolean | `true` | Attach `otherOffers[]` in mode=productDetails |\r\n| `failOnEmpty` | boolean | `false` | Mark the run failed when zero records are emitted |\r\n| `proxyConfiguration` | object | automatic | Optional; the actor connects directly first and escalates only if blocked |\r\n\r\n### Example: search with filters\r\n\r\n```json\r\n{\r\n  \"mode\": \"search\",\r\n  \"searchQuery\": \"телевизор\",\r\n  \"city\": \"Москва\",\r\n  \"brands\": [\"Samsung\", \"LG\"],\r\n  \"minPrice\": 30000,\r\n  \"maxPrice\": 90000,\r\n  \"condition\": \"new\",\r\n  \"sortOrder\": \"priceAsc\",\r\n  \"maxItems\": 200\r\n}\r\n```\r\n\r\n### Example: browse a category, used or refurbished only\r\n\r\n```json\r\n{\r\n  \"mode\": \"byCategory\",\r\n  \"categoryUrl\": \"https://www.mvideo.ru/televizory-i-cifrovoe-tv-1/televizory-65\",\r\n  \"city\": \"Санкт-Петербург\",\r\n  \"condition\": \"refurbished\",\r\n  \"minDiscount\": 10,\r\n  \"maxItems\": 100\r\n}\r\n```\r\n\r\n### Example: full detail with stores and seller offers\r\n\r\n```json\r\n{\r\n  \"mode\": \"productDetails\",\r\n  \"productUrls\": [\r\n    \"https://www.mvideo.ru/products/televizor-general-electronics-ge55lqs2-401211841\",\r\n    \"402415077\"\r\n  ],\r\n  \"city\": \"Москва\",\r\n  \"maxReviews\": 20,\r\n  \"includeStoreStock\": true,\r\n  \"includeOtherOffers\": true\r\n}\r\n```\r\n\r\n### Example: export reviews\r\n\r\n```json\r\n{\r\n  \"mode\": \"reviews\",\r\n  \"productUrls\": [\"400205087\"],\r\n  \"maxReviews\": 200,\r\n  \"maxItems\": 200\r\n}\r\n```\r\n\r\n## Use cases\r\n\r\n- **Price monitoring** — track sale prices, promo discounts and bonus rubles across a category\r\n- **Assortment research** — compare brand and seller coverage in Russian electronics retail\r\n- **Catalog enrichment** — pull specifications, images and breadcrumbs for a known SKU list\r\n- **Availability intelligence** — monitor stock and pickup stores by city for selected products\r\n- **Review analytics** — export review text, pros/cons and star distributions for sentiment analysis\r\n- **Marketplace seller tracking** — compare the buybox seller and other offers on marketplace listings\r\n\r\n## FAQ\r\n\r\n**Do I need cookies, a login, or a proxy?** No. Catalog, product detail and reviews are read from mvideo.ru's public endpoints without an account. The actor connects directly first; if the site temporarily rate-limits a detail or review request, it retries and falls back to a real browser session, and only then to a different Apify Proxy route. If every HTTP route is blocked, it can continue in a browser-only session. You do not configure anything.\r\n\r\n**Why does the city matter?** mvideo.ru serves city-specific stock, pickup stores and delivery dates. In testing, catalog prices for fixed products did not differ between cities, so treat the city setting as an availability selector rather than a price-comparison tool.\r\n\r\n**How many search results can I get?** Search pages through the source's own cursor. At the time of testing, `телевизор` declared 2,253 results across 38 pages and yielded 2,125 unique products; the source itself does not surface a small number of advertised or duplicate rows. Set `maxItems` to the number you need.\r\n\r\n**Why are some fields missing on some products?** Empty fields are omitted. Marketplace rows may lack a description, an M.Video-owned product has no third-party seller, and not every SKU has a rating, discount, store stock or video.\r\n\r\n**Are videos and 3D images included?** The fields exist and are filled when mvideo.ru returns them, but most products have none. The actor does not promise video or 3D content.\r\n\r\n**What does `condition` guarantee?** The filter is applied through the site's live condition facet. Refurbished and markdown items can be recognized from the product name; marketplace \"used\" listings do not always expose a machine-readable condition, so treat the echoed condition as the filter you requested, not a per-row certification.\r\n\r\n**Can I sort by rating, newest, or discount?** No. Popularity and sale-price ordering are supported. For `priceAsc` / `priceDesc`, the actor sorts the emitted rows by sale price because the source's own ordering is approximate. `minRating` and `minDiscount` are applied as filters instead.\r\n\r\n**Why is there no \"in stock only\" toggle?** In validation, every sampled catalog listing was marked available, so the toggle was a no-op. Use the `inStock` / `soldOut` fields in the output if you need to filter downstream.\r\n\r\n**How many reviews can I fetch?** The source serves 20 reviews per page with no login wall. `maxReviews` controls the per-product cap (up to 200); `maxItems` caps the total rows in `reviews` mode.\r\n\r\n**Are review filters or date sorting supported?** No. The review list supports useful/rating ordering; the undocumented review filters returned empty results in testing, so they are not exposed.\r\n\r\n**Why did a brand or seller filter stop the run?** Filter facets are resolved from the live response. If a requested brand, seller, condition or parallel-import facet is not present for that query or category, the actor stops with a clear message rather than silently returning unfiltered results. Remove that filter or try a broader query/category.\r\n\r\n**How fresh is the data?** Every run reads current catalog, price, stock and review data directly from mvideo.ru.\r\n\r\n**Is this actor affiliated with mvideo.ru?** No. It is an independent, third-party actor that reads publicly reachable product data. It is not affiliated with, endorsed by, or operated by M.Video.\r\n",
      "input": {
        "title": "M.Video Scraper Input",
        "description": "Search mvideo.ru, browse a category, or fetch full details for specific products.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "description": "What to fetch.",
            "editor": "select",
            "enum": [
              "search",
              "byCategory",
              "productDetails",
              "reviews"
            ],
            "enumTitles": [
              "Search products by keyword",
              "Browse a category",
              "Fetch product details by URL/ID",
              "Fetch customer reviews by product URL/ID"
            ],
            "default": "search",
            "prefill": "search"
          },
          "searchQuery": {
            "title": "Search query (mode=search)",
            "type": "string",
            "description": "Free-text product search, e.g. телевизор, ноутбук, холодильник. The full result set is paginated automatically.",
            "editor": "textfield",
            "default": "телевизор",
            "prefill": "телевизор"
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "Russian city name or mvideo city ID (e.g. Москва, Санкт-Петербург, CityCZ_975). City changes stock availability, pickup stores and delivery dates.",
            "editor": "textfield",
            "default": "Москва",
            "prefill": "Москва"
          },
          "category": {
            "title": "Category (mode=byCategory)",
            "type": "string",
            "description": "Top-level mvideo.ru category to browse. Use `categoryUrl` for any sub-category not listed here.",
            "editor": "select",
            "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"
            ],
            "enumTitles": [
              "(none - required for byCategory)",
              "Hi-Fi техника",
              "PC игры и софт",
              "Автодиагностика и сервис",
              "Автозвук",
              "Автомобильная безопасность",
              "Автомобильная электрика",
              "Аксессуары",
              "Аксессуары для автомобилей",
              "Аксессуары для дома",
              "Аксессуары для домашней техники",
              "Аксессуары для кухонной техники",
              "Аксессуары для планшетов",
              "Аксессуары для телевизоров",
              "Аксессуары для телефонов",
              "Аксессуары для фото и видеотехники",
              "Аудиодиски и кассеты",
              "Аудиотехника и DJ оборудование",
              "Видеокамеры и экшн-камеры",
              "Видеотехника",
              "Встраиваемая техника",
              "Гаджеты",
              "Домашние и офисные телефоны/Радиостанции",
              "Запчасти и аксессуары для садовой техники",
              "Игровые консоли и игры",
              "Игрушки, игры и творчество",
              "Канцелярия",
              "Климатическая техника",
              "Коды для фильмов, музыки и книг",
              "Компьютерная техника",
              "Компьютерные аксессуары",
              "Компьютерные комплектующие",
              "Крупная кухонная техника",
              "Кухонные принадлежности",
              "Мебель",
              "Медицинские товары",
              "Мелкая кухонная техника",
              "Мототовары",
              "Музыкальные инструменты",
              "Навигаторы и автомобильная электроника",
              "Наушники",
              "Ноутбуки, планшеты, компьютеры",
              "Обувь",
              "Одежда детская",
              "Одежда женская",
              "Одежда мужская",
              "Освещение",
              "Периферийные устройства",
              "Планшеты и электронные книги",
              "Портативное аудио",
              "Посуда",
              "Приготовление кофе",
              "Продукты",
              "Пылесосы и аксессуары",
              "Радиоуправляемые устройства",
              "Ручной инструмент и наборы",
              "Садовая техника и оборудование",
              "Сантехника",
              "Сервисы",
              "Силовая техника и строительное оборудование",
              "Смартфоны и связь",
              "Спутниковое/цифровое ТВ",
              "Станки",
              "Стиральные и сушильные машины",
              "Строительные расходные материалы и оснастка",
              "Телевизоры и цифровое ТВ",
              "Товары для авто",
              "Товары для активного отдыха",
              "Товары для бритья и стрижки",
              "Товары для дачи и сада",
              "Товары для дома",
              "Товары для животных",
              "Товары для здоровья",
              "Товары для красоты",
              "Товары для праздников",
              "Товары для спорта",
              "Товары для укладки волос",
              "Товары для ухода за детьми",
              "Товары для ухода за одеждой",
              "Транспортные средства",
              "Тренажёры",
              "Устройства для \"Умного дома\"",
              "Устройства охраны и видеонаблюдения",
              "Фотоаппараты",
              "Хобби",
              "Холодильники и морозильники",
              "Цифровые фоторамки и фотопринтеры",
              "Электрика",
              "Электроинструменты",
              "Электротранспорт"
            ],
            "default": "",
            "prefill": "1"
          },
          "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.",
            "editor": "textfield"
          },
          "productUrls": {
            "title": "Product URLs or IDs (mode=productDetails / reviews)",
            "type": "array",
            "description": "mvideo.ru product URLs (e.g. https://www.mvideo.ru/products/televizor-...-401211841) or bare numeric product IDs. Used by productDetails and reviews modes.",
            "editor": "stringList",
            "default": [],
            "prefill": [
              "https://www.mvideo.ru/products/televizor-general-electronics-ge55lqs2-401211841"
            ]
          },
          "sortOrder": {
            "title": "Sort order (mode=search / byCategory)",
            "type": "string",
            "description": "Result ordering. Only popularity and price ordering are supported by the source; other orderings are not promised.",
            "editor": "select",
            "enum": [
              "popularity",
              "priceAsc",
              "priceDesc"
            ],
            "enumTitles": [
              "Popularity (default)",
              "Price: low to high",
              "Price: high to low"
            ],
            "default": "popularity",
            "prefill": "popularity"
          },
          "brands": {
            "title": "Brands (mode=search / byCategory)",
            "type": "array",
            "description": "Only return products from these brands. Accepts brand names or mvideo.ru slugs (e.g. `Samsung`, `samsung`, `LG`). The matching facet is resolved from the live response, so no hardcoded IDs are needed. Multiple values are OR'd together.",
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "sellers": {
            "title": "Sellers (mode=byCategory)",
            "type": "array",
            "description": "Only return products from these marketplace sellers. Accepts seller names or mvideo.ru seller slugs (e.g. `BQ.ru`, `bqru`). The seller facet exists in category browsing only; the search response has no seller facet, so a search run with sellers set stops with a clear message. Multiple values are OR'd together.",
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "minPrice": {
            "title": "Min price (RUB)",
            "type": "integer",
            "description": "Drop products cheaper than this (sale price, in Russian rubles). Applied server-side in search/category mode and client-side for detail records.",
            "minimum": 0,
            "maximum": 10000000
          },
          "maxPrice": {
            "title": "Max price (RUB)",
            "type": "integer",
            "description": "Drop products more expensive than this (sale price, in Russian rubles). Applied server-side in search/category mode and client-side for detail records.",
            "minimum": 0,
            "maximum": 10000000
          },
          "minRating": {
            "title": "Min rating",
            "type": "number",
            "description": "Drop products with a customer rating below this (0-5 stars). Applied after catalog fetches (the API has no rating facet). Products with no rating are excluded when this filter is set.",
            "editor": "number",
            "minimum": 0,
            "maximum": 5
          },
          "minDiscount": {
            "title": "Min discount (%)",
            "type": "integer",
            "description": "Drop products with a smaller discount than this (0-99 percent). Applied after catalog fetches (the API has no discount facet). Products without a discount are excluded when this filter is set.",
            "editor": "number",
            "minimum": 0,
            "maximum": 99
          },
          "condition": {
            "title": "Condition (mode=search / byCategory)",
            "type": "string",
            "description": "Filter by item condition. The matching facet is resolved from the live response; if it is unavailable for a query/category, the run stops with a clear message instead of returning unfiltered results.",
            "editor": "select",
            "enum": [
              "any",
              "new",
              "refurbished",
              "used",
              "markdown",
              "showcase"
            ],
            "enumTitles": [
              "Any condition",
              "New",
              "Refurbished",
              "Used",
              "Markdown / clearance",
              "Showcase / display unit"
            ],
            "default": "any",
            "prefill": "any"
          },
          "fromAbroad": {
            "title": "Parallel import only (mode=search)",
            "type": "boolean",
            "description": "Only return parallel-import listings. Applies to search mode only; ignored in category mode.",
            "default": false,
            "prefill": false
          },
          "maxItems": {
            "title": "Max items",
            "type": "integer",
            "description": "Hard cap on emitted records (products, or review rows in mode=reviews). Search covers the full result set across all pages, de-duplicated by product ID. Use 0 for all (up to the 10,000 cap).",
            "minimum": 0,
            "maximum": 10000,
            "default": 100,
            "prefill": 3
          },
          "maxReviews": {
            "title": "Max customer reviews per product",
            "type": "integer",
            "description": "Reviews to fetch per product in mode=productDetails (attached as `reviews[]`) and mode=reviews (one row per review). Paginated 20 at a time; 0 skips review fetching.",
            "minimum": 0,
            "maximum": 200,
            "default": 20,
            "prefill": 0
          },
          "includeStoreStock": {
            "title": "Include store stock (mode=productDetails)",
            "type": "boolean",
            "description": "Fetch per-store pickup availability for the selected city and attach a `stores[]` list.",
            "default": false,
            "prefill": false
          },
          "storeLimit": {
            "title": "Max stores per product",
            "type": "integer",
            "description": "Cap on `stores[]` entries per product when store stock is included.",
            "minimum": 1,
            "maximum": 200,
            "default": 20,
            "prefill": 20
          },
          "includeOtherOffers": {
            "title": "Include other seller offers (mode=productDetails)",
            "type": "boolean",
            "description": "Fetch the seller/buybox block and attach `otherOffers[]` with prices and seller details when available.",
            "default": true,
            "prefill": false
          },
          "failOnEmpty": {
            "title": "Fail when nothing is found",
            "type": "boolean",
            "description": "Mark the run as failed when zero records are emitted (for example a blocked connection or an empty query).",
            "default": false,
            "prefill": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. The actor connects directly first and only escalates to Apify Proxy if mvideo.ru blocks a request. Change this only if you need a specific proxy setup.",
            "editor": "proxy",
            "prefill": {
              "useApifyProxy": true
            },
            "default": {
              "useApifyProxy": true
            }
          }
        },
        "required": [
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "M.Video Russia Electronics Product & Review Scraper Output",
        "description": "mvideo.ru product records with price, stock, rating, specifications, images, seller and store availability, plus standalone review records from reviews mode.",
        "properties": {
          "products": {
            "type": "string",
            "title": "M.Video products and reviews",
            "description": "Dataset containing scraped M.Video products (recordType=product), customer reviews (recordType=review), and invalid-input error rows (recordType=error).",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Products",
              "transformation": {
                "fields": [
                  "recordType",
                  "name",
                  "brandName",
                  "salePrice",
                  "currency",
                  "ratingStar",
                  "inStock",
                  "cityName",
                  "productUrl"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            }
          }
        }
      },
      "environmentVariables": {}
    },
    "buildNumber": "1.1.2",
    "imageDigest": "048f9bbabfa66c2f3aa7dc3a7bdb0ed6ee82788cc0b3e1c3747691f0b37a4fe3",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.1"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.047961111111111114
    }
  }
}