{
  "data": {
    "id": "7kQKbzMdW6uXxbhTN",
    "actId": "lTbX9EgwclAhay8Rq",
    "userId": "NL4ThgItAwaoBlffQ",
    "startedAt": "2026-10-29T23:22:58.488Z",
    "finishedAt": "2026-10-29T23:23:08.092Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 9500,
      "runTimeSecs": 9.5,
      "computeUnits": 0.010555555555555556,
      "imageSizeBytes": 319440384
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "zifX0mkAFMHe8CatY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Ozon Scraper Input\",\n  \"description\": \"Search Ozon, browse a category, fetch product details, inspect a seller, or collect reviews and buyer questions for RU, BY, or KZ.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"description\": \"What to collect.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"search\",\n        \"byCategory\",\n        \"productDetails\",\n        \"seller\",\n        \"reviews\"\n      ],\n      \"enumTitles\": [\n        \"Search products by keyword\",\n        \"Browse category or brand listings\",\n        \"Fetch full product details by URL or SKU\",\n        \"Seller profile and catalog\",\n        \"Product reviews and buyer questions\"\n      ],\n      \"default\": \"search\",\n      \"prefill\": \"search\"\n    },\n    \"searchQueries\": {\n      \"title\": \"Search queries (mode=search)\",\n      \"type\": \"array\",\n      \"description\": \"One or more keywords, e.g. `iphone`, `телевизор`, `кофемашина`. Each query is collected in order.\",\n      \"editor\": \"stringList\",\n      \"default\": [\n        \"iphone\"\n      ],\n      \"prefill\": [\n        \"iphone\"\n      ]\n    },\n    \"categoryUrls\": {\n      \"title\": \"Category URLs or slugs (mode=byCategory)\",\n      \"type\": \"array\",\n      \"description\": \"Full Ozon category/brand URLs or bare slugs, e.g. `https://www.ozon.ru/category/smartfony-15502/` or `smartfony-15502`.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"productUrls\": {\n      \"title\": \"Product URLs or SKUs (mode=productDetails or reviews)\",\n      \"type\": \"array\",\n      \"description\": \"Full Ozon product URLs, short `ozon.ru/t/...` links, or bare numeric SKU/product IDs.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"sellerUrls\": {\n      \"title\": \"Seller URLs or IDs (mode=seller)\",\n      \"type\": \"array\",\n      \"description\": \"Ozon seller storefront URLs, slugs, or numeric seller IDs, e.g. `https://www.ozon.ru/seller/dubaidutyfree/`.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"sortBy\": {\n      \"title\": \"Sort order\",\n      \"type\": \"string\",\n      \"description\": \"Result ordering for search, category, and seller catalog listings.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"relevance\",\n        \"price_asc\",\n        \"price_desc\",\n        \"rating\",\n        \"new\",\n        \"discount\"\n      ],\n      \"enumTitles\": [\n        \"Relevance (default)\",\n        \"Price: low to high\",\n        \"Price: high to low\",\n        \"Highest rated\",\n        \"Newest\",\n        \"Biggest discounts\"\n      ],\n      \"default\": \"relevance\",\n      \"prefill\": \"relevance\"\n    },\n    \"sortReviews\": {\n      \"title\": \"Review order (mode=reviews)\",\n      \"type\": \"string\",\n      \"description\": \"How product reviews are ordered.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"usefulness_desc\",\n        \"score_desc\",\n        \"score_asc\"\n      ],\n      \"enumTitles\": [\n        \"Most useful first\",\n        \"Highest rating first\",\n        \"Lowest rating first\"\n      ],\n      \"default\": \"usefulness_desc\",\n      \"prefill\": \"usefulness_desc\"\n    },\n    \"storefront\": {\n      \"title\": \"Storefront\",\n      \"type\": \"string\",\n      \"description\": \"Which Ozon market to read. Prices use the local currency: RUB for Russia, BYN for Belarus, KZT for Kazakhstan.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"ru\",\n        \"by\",\n        \"kz\"\n      ],\n      \"enumTitles\": [\n        \"Ozon Russia (RUB)\",\n        \"Ozon Belarus (BYN)\",\n        \"Ozon Kazakhstan (KZT)\"\n      ],\n      \"default\": \"ru\",\n      \"prefill\": \"ru\"\n    },\n    \"minPrice\": {\n      \"title\": \"Minimum price\",\n      \"type\": \"integer\",\n      \"description\": \"Drop products cheaper than this amount in the selected storefront currency.\",\n      \"minimum\": 0,\n      \"maximum\": 100000000,\n      \"default\": 0,\n      \"prefill\": 0\n    },\n    \"maxPrice\": {\n      \"title\": \"Maximum price\",\n      \"type\": \"integer\",\n      \"description\": \"Drop products pricier than this amount in the selected storefront currency.\",\n      \"minimum\": 0,\n      \"maximum\": 100000000\n    },\n    \"minRating\": {\n      \"title\": \"Minimum rating\",\n      \"type\": \"number\",\n      \"description\": \"Drop products rated below this value on the 0-5 scale.\",\n      \"minimum\": 0,\n      \"maximum\": 5\n    },\n    \"inStockOnly\": {\n      \"title\": \"In stock only\",\n      \"type\": \"boolean\",\n      \"description\": \"Only keep products that are currently available.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"maxItems\": {\n      \"title\": \"Maximum records\",\n      \"type\": \"integer\",\n      \"description\": \"Hard cap on emitted records. In seller mode this includes the seller profile row.\",\n      \"minimum\": 1,\n      \"maximum\": 1000,\n      \"default\": 50,\n      \"prefill\": 3\n    },\n    \"maxReviewsPerProduct\": {\n      \"title\": \"Maximum reviews per product (mode=reviews)\",\n      \"type\": \"integer\",\n      \"description\": \"How many review rows to collect for each product. Set 0 to collect only question rows.\",\n      \"minimum\": 0,\n      \"maximum\": 1000,\n      \"default\": 30,\n      \"prefill\": 1\n    },\n    \"includeProductDetails\": {\n      \"title\": \"Enrich listing rows with full details\",\n      \"type\": \"boolean\",\n      \"description\": \"For search and category rows, also fetch the product page for description, full specifications, gallery, and variants.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeOtherSellers\": {\n      \"title\": \"Include competing seller offers\",\n      \"type\": \"boolean\",\n      \"description\": \"Add the buybox list of other sellers for each product.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeSellerDetails\": {\n      \"title\": \"Include seller legal details\",\n      \"type\": \"boolean\",\n      \"description\": \"Add the seller's legal name, registration number, address, and confirmed brands to product rows.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeSellerProducts\": {\n      \"title\": \"Include seller catalog products (mode=seller)\",\n      \"type\": \"boolean\",\n      \"description\": \"Emit the seller's catalog products as product rows in addition to the seller profile.\",\n      \"default\": true,\n      \"prefill\": true\n    },\n    \"includeQuestions\": {\n      \"title\": \"Include buyer questions (mode=reviews)\",\n      \"type\": \"boolean\",\n      \"description\": \"Also emit buyer questions and their answers for each product.\",\n      \"default\": false,\n      \"prefill\": false\n    }\n  },\n  \"required\": [\n    \"mode\"\n  ]\n}",
    "readme": "# Ozon.ru Product Pricing, Ratings & Seller Scraper\n\nScrape **Ozon** — one of Russia's largest marketplaces — for products, prices, sellers, reviews, and buyer questions. Five modes cover keyword search, category browsing, product lookup by URL or SKU, seller storefronts, and review/Q&A collection. Prices follow the selected storefront (RUB, BYN, or KZT), and every record is ready for price monitoring, assortment analysis, seller vetting, and catalog enrichment.\n\n## What this actor does\n\n- **Five modes:** `search`, `byCategory`, `productDetails`, `seller`, `reviews`\n- **Three storefronts:** Ozon Russia (RUB), Belarus (BYN), Kazakhstan (KZT)\n- **Product depth:** description, full specification table, package contents, variants, gallery, videos, hashtags, rating distribution, and availability\n- **Seller intelligence:** legal entity, registration number, address, years on Ozon, premium status, confirmed brands, catalog products, and competing buybox offers\n- **Reviews and Q&A:** review text, rating, author, date, photos, videos, helpful votes, verified-purchase flag, seller replies, plus buyer questions with answers\n- **Filters and sorts:** price range, minimum rating, in-stock only, and six listing sort orders\n- **Empty fields are omitted** — records contain only data that was actually found\n\n## Services\n\n- **Product search and category scraping** — collect listing rows with live price, discount, rating, review count, image, stock, and delivery estimate.\n- **Full product cards** — enrich any product with specifications, description, variants, seller details, and the complete buybox.\n- **Seller monitoring** — read a seller's public profile, legal identity, and catalog in one run.\n- **Review and Q&A collection** — build voice-of-customer datasets with review media and seller responses.\n- **Cross-market pricing** — compare the same marketplace across Russia, Belarus, and Kazakhstan in local currency.\n\n## How it works\n\nOzon publishes its storefront data as a public widget tree. The actor reads that public data through a translation mirror, so no Ozon account, cookie, login, API key, or proxy setup is required. Listings are followed with Ozon's own pagination tokens, not hand-built page numbers. Product details combine the main product page, the description/specification page, and the reviews page. Reviews are collected 30 rows per page and buyer questions 10 rows per page, following the site's own next-page tokens until `maxReviewsPerProduct` (reviews) or `maxItems` (questions) is reached. Duplicate products and duplicate review/question rows are removed by their natural identifiers.\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `search` | `search` / `byCategory` / `productDetails` / `seller` / `reviews` |\n| `searchQueries` | array | `[\"iphone\"]` | Keywords for search mode |\n| `categoryUrls` | array | – | Category or brand URLs/slugs for byCategory mode |\n| `productUrls` | array | – | Product URLs, short links, or numeric SKUs for productDetails/reviews |\n| `sellerUrls` | array | – | Seller URLs, slugs, or IDs for seller mode |\n| `sortBy` | string | `relevance` | `relevance` / `price_asc` / `price_desc` / `rating` / `new` / `discount` |\n| `sortReviews` | string | `usefulness_desc` | `usefulness_desc` / `score_desc` / `score_asc` |\n| `storefront` | string | `ru` | `ru` (RUB) / `by` (BYN) / `kz` (KZT) |\n| `minPrice` | integer | 0 | Drop products below this local-currency price |\n| `maxPrice` | integer | – | Drop products above this local-currency price |\n| `minRating` | number | – | Drop products below this rating (0-5) |\n| `inStockOnly` | boolean | `false` | Keep only available products |\n| `maxItems` | integer | `50` | Hard cap on emitted records (1-1000) |\n| `maxReviewsPerProduct` | integer | `30` | Review rows per product; `0` collects only questions |\n| `includeProductDetails` | boolean | `false` | Enrich search/category rows with the full product card |\n| `includeOtherSellers` | boolean | `false` | Add competing seller offers (buybox) |\n| `includeSellerDetails` | boolean | `false` | Add seller legal details to product rows |\n| `includeSellerProducts` | boolean | `true` | Emit the seller catalog in seller mode |\n| `includeQuestions` | boolean | `false` | Add buyer questions and answers in reviews mode |\n\n### Example: search with filters\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQueries\": [\"робот-пылесос\", \"кофемашина\"],\n  \"sortBy\": \"price_asc\",\n  \"minRating\": 4.2,\n  \"maxItems\": 40,\n  \"storefront\": \"ru\"\n}\n```\n\n### Example: product details with seller and buybox\n\n```json\n{\n  \"mode\": \"productDetails\",\n  \"productUrls\": [\n    \"https://www.ozon.ru/product/apple-smartfon-iphone-15-5728498907/\",\n    \"1681720398\"\n  ],\n  \"includeSellerDetails\": true,\n  \"includeOtherSellers\": true\n}\n```\n\n### Example: seller profile and catalog\n\n```json\n{\n  \"mode\": \"seller\",\n  \"sellerUrls\": [\"https://www.ozon.ru/seller/dubaidutyfree/\"],\n  \"sortBy\": \"price_desc\",\n  \"maxItems\": 25,\n  \"includeSellerProducts\": true\n}\n```\n\n### Example: reviews and buyer questions\n\n```json\n{\n  \"mode\": \"reviews\",\n  \"productUrls\": [\"5728498907\"],\n  \"maxReviewsPerProduct\": 60,\n  \"sortReviews\": \"score_desc\",\n  \"includeQuestions\": true,\n  \"maxItems\": 100\n}\n```\n\n## Output\n\nOne dataset holds four record types, distinguished by `recordType`. Actor views provide product, seller, review, and question table layouts; filter on `recordType` to isolate one type.\n\n### Product rows (`recordType: \"product\"`)\n\n- `sku`, `name`, `productUrl`, `imageUrl`, `images[]`, `videos[]`\n- `brand` — only when Ozon publishes an explicit brand value\n- `price`, `originalPrice`, `discountPercent`, `cardPrice`, `currency`, `storefront`\n- `rating`, `reviewCount`, `ratingBreakdown[]` — star buckets with count and percentage\n- `sellerName`, `sellerUrl`, `sellerRating`, `sellerOrdersCount`\n- `sellerId`, `sellerLegalName`, `sellerRegistrationNumber`, `sellerAddress`, `sellerYearsOnOzon`, `sellerIsPremium`, `sellerConfirmedBrands[]` (when seller details are enabled)\n- `otherSellers[]`, `otherSellersCount`, `otherSellersMinPrice` (when buybox is enabled)\n- `category`, `breadcrumbs[]`\n- `characteristics` — full specification table when available, otherwise the short product panel\n- `characteristicsCount`, `description`, `packageContents`, `hashtags[]`\n- `variants[]` — other colors/configurations with their own SKU, price, URL, and availability\n- `questionCount`, `similarProducts[]`, `marketingLabels[]`\n- `availability`, `availabilityText`, `unitsLeft`, `stockQuantity`, `deliveryText`, `deliveryInfo`\n- `recordType`, `scrapedAt`\n\n### Seller rows (`recordType: \"seller\"`)\n\n- `sellerId`, `name`, `url`, `logoUrl`, `storefront`\n- `rating`, `reviewsCount`, `ordersCount`, `yearsOnOzon`, `isPremium`\n- `legalName`, `registrationNumber`, `address`, `operatingHours`, `confirmedBrands[]`\n- `catalogProducts`, `scrapedAt`\n\n### Review rows (`recordType: \"review\"`)\n\n- `reviewId`, `sku`, `productUrl`\n- `rating`, `authorName`, `publishedAt`\n- `comment`, `pros`, `cons` (pros/cons are usually absent in current Ozon reviews)\n- `photos[]`, `videos[]`\n- `usefulCount`, `notUsefulCount`, `isPurchaseVerified`\n- `commentsCount`, `sellerResponse`, `badgeDelivery`\n- `recordType`, `scrapedAt`\n\n### Question rows (`recordType: \"question\"`)\n\n- `questionId`, `sku`, `productUrl`\n- `text`, `authorName`, `createdAt`, `likes`, `dislikes`\n- `answers[]` — each with `authorName`, `createdAt`, `text`, `likes`, `dislikes`, and `isBestAnswer`\n- `recordType`, `scrapedAt`\n\n## Use cases\n\n- **Price monitoring** — track product, card, and original prices across three Ozon storefronts.\n- **Market and assortment research** — compare categories, brands, ratings, and discount depth.\n- **Seller vetting** — collect legal identity, order history, and confirmed brands before partnering.\n- **Competitive intelligence** — see which sellers hold the buybox and at what delivered price.\n- **Voice of customer** — export review text, media, and buyer questions for product teams.\n- **Catalog enrichment** — fill your own listings with structured specifications and variants.\n\n## Usage cost\n\nThis actor uses standard Apify platform usage and does not add per-event charges. A typical search run reads one listing page per batch of results; enabling product details, buybox, seller details, or reviews adds one or more page reads per product. Keep `maxItems` and `maxReviewsPerProduct` close to what you need.\n\n## FAQ\n\n**Do I need an Ozon account, cookies, or a proxy?** No. The actor reads Ozon's public storefront data without credentials, and you do not configure any proxy.\n\n**What is the difference between `price` and `cardPrice`?** `price` is the regular selling price and `cardPrice` is the lower Ozon Card price when the product page shows one.\n\n**Why is `brand` sometimes missing?** Ozon often shows a trust badge such as \"Оригинал\" instead of a real brand name. The actor only emits `brand` when Ozon publishes an explicit brand value and never guesses it from the title.\n\n**Why is `deliveryInfo` often missing while `deliveryText` appears?** Product pages frequently carry an empty delivery widget. `deliveryText` comes from a visible listing or buybox estimate; `deliveryInfo` only appears when the product page itself publishes delivery text.\n\n**Why are `pros` and `cons` usually absent?** Current Ozon reviews usually expose a single comment body and leave the separate positive/negative fields empty. The actor includes them when they exist but does not split comments itself.\n\n**What does `maxItems` count in seller mode?** It counts every emitted record, including the seller profile row. With `maxItems: 20`, you get the seller row plus up to 19 catalog products.\n\n**Can I collect every review and question for a product?** Reviews are capped by `maxReviewsPerProduct` and read 30 per page. Questions are read 10 per page and capped by `maxItems`, not by `maxReviewsPerProduct`. Both follow Ozon's next-page token, so large histories are limited by your input rather than a fixed page count.\n\n**Are the three storefronts the same catalog?** They share many listings but not all. Prices and availability differ, and the currency follows the storefront you choose.\n\n**Why do deep results under a non-default sort sometimes look less relevant?** Ozon itself appends recommendation filler after a narrow sorted feed runs out. The actor returns what the site returns; for strict topical relevance, use the default relevance sort.\n\n**Is this affiliated with Ozon?** No. This is an independent third-party actor that reads public storefront data and is not operated or endorsed by Ozon.\n\n## Notes\n\n- Empty values are omitted at every depth; there are no `null` fields.\n- Product, review, and question rows are deduplicated by their natural identifiers.\n- `publishedAt` on reviews is an ISO 8601 UTC timestamp; question `createdAt` keeps Ozon's displayed date text.\n- Partial failures do not stop the run: valid rows are still returned, and the run status message reports how many targets failed.\n- Legacy task inputs (`searchQuery`, `categoryUrl`, `-price`, and `proxyConfiguration`) are accepted in code; `proxyConfiguration` is ignored.\n\n## Limitations\n\n- **Public data only.** Private account data, cart contents, orders, and checkout pricing are not available.\n- **Mirror dependency.** Ozon's public pages are read through a translation mirror. If the mirror rate-limits or is unavailable, the run returns partial data and reports it in the status message.\n- **Brand, delivery, and similar-product shelves** are published inconsistently by Ozon. They are included only when the page carries them.\n- **Search relevance filler.** Ozon may append recommendations on deep sorted pages; the actor does not claim stricter relevance than the source.\n- **Question dates** are kept exactly as Ozon displays them, which may be a localized date rather than an ISO timestamp.\n- **Seller catalogs** reflect the public storefront at run time; hidden or regional-only listings may not appear.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "ozon-ru-product-pricing-ratings-and-seller-scraper",
      "title": "Ozon.ru Product Pricing, Ratings & Seller Scraper",
      "description": "Scrape Ozon.ru products by search, category, URL, or SKU, plus seller profiles, competing offers, reviews, and buyer Q&A. Get live RUB/BYN/KZT pricing, specifications, variants, and ratings.",
      "version": "1.0",
      "buildTag": "latest",
      "defaultRunOptions": {
        "build": "latest",
        "timeoutSecs": 3600,
        "memoryMbytes": 1024
      },
      "dockerfile": "./Dockerfile",
      "readme": "# Ozon.ru Product Pricing, Ratings & Seller Scraper\n\nScrape **Ozon** — one of Russia's largest marketplaces — for products, prices, sellers, reviews, and buyer questions. Five modes cover keyword search, category browsing, product lookup by URL or SKU, seller storefronts, and review/Q&A collection. Prices follow the selected storefront (RUB, BYN, or KZT), and every record is ready for price monitoring, assortment analysis, seller vetting, and catalog enrichment.\n\n## What this actor does\n\n- **Five modes:** `search`, `byCategory`, `productDetails`, `seller`, `reviews`\n- **Three storefronts:** Ozon Russia (RUB), Belarus (BYN), Kazakhstan (KZT)\n- **Product depth:** description, full specification table, package contents, variants, gallery, videos, hashtags, rating distribution, and availability\n- **Seller intelligence:** legal entity, registration number, address, years on Ozon, premium status, confirmed brands, catalog products, and competing buybox offers\n- **Reviews and Q&A:** review text, rating, author, date, photos, videos, helpful votes, verified-purchase flag, seller replies, plus buyer questions with answers\n- **Filters and sorts:** price range, minimum rating, in-stock only, and six listing sort orders\n- **Empty fields are omitted** — records contain only data that was actually found\n\n## Services\n\n- **Product search and category scraping** — collect listing rows with live price, discount, rating, review count, image, stock, and delivery estimate.\n- **Full product cards** — enrich any product with specifications, description, variants, seller details, and the complete buybox.\n- **Seller monitoring** — read a seller's public profile, legal identity, and catalog in one run.\n- **Review and Q&A collection** — build voice-of-customer datasets with review media and seller responses.\n- **Cross-market pricing** — compare the same marketplace across Russia, Belarus, and Kazakhstan in local currency.\n\n## How it works\n\nOzon publishes its storefront data as a public widget tree. The actor reads that public data through a translation mirror, so no Ozon account, cookie, login, API key, or proxy setup is required. Listings are followed with Ozon's own pagination tokens, not hand-built page numbers. Product details combine the main product page, the description/specification page, and the reviews page. Reviews are collected 30 rows per page and buyer questions 10 rows per page, following the site's own next-page tokens until `maxReviewsPerProduct` (reviews) or `maxItems` (questions) is reached. Duplicate products and duplicate review/question rows are removed by their natural identifiers.\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `search` | `search` / `byCategory` / `productDetails` / `seller` / `reviews` |\n| `searchQueries` | array | `[\"iphone\"]` | Keywords for search mode |\n| `categoryUrls` | array | – | Category or brand URLs/slugs for byCategory mode |\n| `productUrls` | array | – | Product URLs, short links, or numeric SKUs for productDetails/reviews |\n| `sellerUrls` | array | – | Seller URLs, slugs, or IDs for seller mode |\n| `sortBy` | string | `relevance` | `relevance` / `price_asc` / `price_desc` / `rating` / `new` / `discount` |\n| `sortReviews` | string | `usefulness_desc` | `usefulness_desc` / `score_desc` / `score_asc` |\n| `storefront` | string | `ru` | `ru` (RUB) / `by` (BYN) / `kz` (KZT) |\n| `minPrice` | integer | 0 | Drop products below this local-currency price |\n| `maxPrice` | integer | – | Drop products above this local-currency price |\n| `minRating` | number | – | Drop products below this rating (0-5) |\n| `inStockOnly` | boolean | `false` | Keep only available products |\n| `maxItems` | integer | `50` | Hard cap on emitted records (1-1000) |\n| `maxReviewsPerProduct` | integer | `30` | Review rows per product; `0` collects only questions |\n| `includeProductDetails` | boolean | `false` | Enrich search/category rows with the full product card |\n| `includeOtherSellers` | boolean | `false` | Add competing seller offers (buybox) |\n| `includeSellerDetails` | boolean | `false` | Add seller legal details to product rows |\n| `includeSellerProducts` | boolean | `true` | Emit the seller catalog in seller mode |\n| `includeQuestions` | boolean | `false` | Add buyer questions and answers in reviews mode |\n\n### Example: search with filters\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQueries\": [\"робот-пылесос\", \"кофемашина\"],\n  \"sortBy\": \"price_asc\",\n  \"minRating\": 4.2,\n  \"maxItems\": 40,\n  \"storefront\": \"ru\"\n}\n```\n\n### Example: product details with seller and buybox\n\n```json\n{\n  \"mode\": \"productDetails\",\n  \"productUrls\": [\n    \"https://www.ozon.ru/product/apple-smartfon-iphone-15-5728498907/\",\n    \"1681720398\"\n  ],\n  \"includeSellerDetails\": true,\n  \"includeOtherSellers\": true\n}\n```\n\n### Example: seller profile and catalog\n\n```json\n{\n  \"mode\": \"seller\",\n  \"sellerUrls\": [\"https://www.ozon.ru/seller/dubaidutyfree/\"],\n  \"sortBy\": \"price_desc\",\n  \"maxItems\": 25,\n  \"includeSellerProducts\": true\n}\n```\n\n### Example: reviews and buyer questions\n\n```json\n{\n  \"mode\": \"reviews\",\n  \"productUrls\": [\"5728498907\"],\n  \"maxReviewsPerProduct\": 60,\n  \"sortReviews\": \"score_desc\",\n  \"includeQuestions\": true,\n  \"maxItems\": 100\n}\n```\n\n## Output\n\nOne dataset holds four record types, distinguished by `recordType`. Actor views provide product, seller, review, and question table layouts; filter on `recordType` to isolate one type.\n\n### Product rows (`recordType: \"product\"`)\n\n- `sku`, `name`, `productUrl`, `imageUrl`, `images[]`, `videos[]`\n- `brand` — only when Ozon publishes an explicit brand value\n- `price`, `originalPrice`, `discountPercent`, `cardPrice`, `currency`, `storefront`\n- `rating`, `reviewCount`, `ratingBreakdown[]` — star buckets with count and percentage\n- `sellerName`, `sellerUrl`, `sellerRating`, `sellerOrdersCount`\n- `sellerId`, `sellerLegalName`, `sellerRegistrationNumber`, `sellerAddress`, `sellerYearsOnOzon`, `sellerIsPremium`, `sellerConfirmedBrands[]` (when seller details are enabled)\n- `otherSellers[]`, `otherSellersCount`, `otherSellersMinPrice` (when buybox is enabled)\n- `category`, `breadcrumbs[]`\n- `characteristics` — full specification table when available, otherwise the short product panel\n- `characteristicsCount`, `description`, `packageContents`, `hashtags[]`\n- `variants[]` — other colors/configurations with their own SKU, price, URL, and availability\n- `questionCount`, `similarProducts[]`, `marketingLabels[]`\n- `availability`, `availabilityText`, `unitsLeft`, `stockQuantity`, `deliveryText`, `deliveryInfo`\n- `recordType`, `scrapedAt`\n\n### Seller rows (`recordType: \"seller\"`)\n\n- `sellerId`, `name`, `url`, `logoUrl`, `storefront`\n- `rating`, `reviewsCount`, `ordersCount`, `yearsOnOzon`, `isPremium`\n- `legalName`, `registrationNumber`, `address`, `operatingHours`, `confirmedBrands[]`\n- `catalogProducts`, `scrapedAt`\n\n### Review rows (`recordType: \"review\"`)\n\n- `reviewId`, `sku`, `productUrl`\n- `rating`, `authorName`, `publishedAt`\n- `comment`, `pros`, `cons` (pros/cons are usually absent in current Ozon reviews)\n- `photos[]`, `videos[]`\n- `usefulCount`, `notUsefulCount`, `isPurchaseVerified`\n- `commentsCount`, `sellerResponse`, `badgeDelivery`\n- `recordType`, `scrapedAt`\n\n### Question rows (`recordType: \"question\"`)\n\n- `questionId`, `sku`, `productUrl`\n- `text`, `authorName`, `createdAt`, `likes`, `dislikes`\n- `answers[]` — each with `authorName`, `createdAt`, `text`, `likes`, `dislikes`, and `isBestAnswer`\n- `recordType`, `scrapedAt`\n\n## Use cases\n\n- **Price monitoring** — track product, card, and original prices across three Ozon storefronts.\n- **Market and assortment research** — compare categories, brands, ratings, and discount depth.\n- **Seller vetting** — collect legal identity, order history, and confirmed brands before partnering.\n- **Competitive intelligence** — see which sellers hold the buybox and at what delivered price.\n- **Voice of customer** — export review text, media, and buyer questions for product teams.\n- **Catalog enrichment** — fill your own listings with structured specifications and variants.\n\n## Usage cost\n\nThis actor uses standard Apify platform usage and does not add per-event charges. A typical search run reads one listing page per batch of results; enabling product details, buybox, seller details, or reviews adds one or more page reads per product. Keep `maxItems` and `maxReviewsPerProduct` close to what you need.\n\n## FAQ\n\n**Do I need an Ozon account, cookies, or a proxy?** No. The actor reads Ozon's public storefront data without credentials, and you do not configure any proxy.\n\n**What is the difference between `price` and `cardPrice`?** `price` is the regular selling price and `cardPrice` is the lower Ozon Card price when the product page shows one.\n\n**Why is `brand` sometimes missing?** Ozon often shows a trust badge such as \"Оригинал\" instead of a real brand name. The actor only emits `brand` when Ozon publishes an explicit brand value and never guesses it from the title.\n\n**Why is `deliveryInfo` often missing while `deliveryText` appears?** Product pages frequently carry an empty delivery widget. `deliveryText` comes from a visible listing or buybox estimate; `deliveryInfo` only appears when the product page itself publishes delivery text.\n\n**Why are `pros` and `cons` usually absent?** Current Ozon reviews usually expose a single comment body and leave the separate positive/negative fields empty. The actor includes them when they exist but does not split comments itself.\n\n**What does `maxItems` count in seller mode?** It counts every emitted record, including the seller profile row. With `maxItems: 20`, you get the seller row plus up to 19 catalog products.\n\n**Can I collect every review and question for a product?** Reviews are capped by `maxReviewsPerProduct` and read 30 per page. Questions are read 10 per page and capped by `maxItems`, not by `maxReviewsPerProduct`. Both follow Ozon's next-page token, so large histories are limited by your input rather than a fixed page count.\n\n**Are the three storefronts the same catalog?** They share many listings but not all. Prices and availability differ, and the currency follows the storefront you choose.\n\n**Why do deep results under a non-default sort sometimes look less relevant?** Ozon itself appends recommendation filler after a narrow sorted feed runs out. The actor returns what the site returns; for strict topical relevance, use the default relevance sort.\n\n**Is this affiliated with Ozon?** No. This is an independent third-party actor that reads public storefront data and is not operated or endorsed by Ozon.\n\n## Notes\n\n- Empty values are omitted at every depth; there are no `null` fields.\n- Product, review, and question rows are deduplicated by their natural identifiers.\n- `publishedAt` on reviews is an ISO 8601 UTC timestamp; question `createdAt` keeps Ozon's displayed date text.\n- Partial failures do not stop the run: valid rows are still returned, and the run status message reports how many targets failed.\n- Legacy task inputs (`searchQuery`, `categoryUrl`, `-price`, and `proxyConfiguration`) are accepted in code; `proxyConfiguration` is ignored.\n\n## Limitations\n\n- **Public data only.** Private account data, cart contents, orders, and checkout pricing are not available.\n- **Mirror dependency.** Ozon's public pages are read through a translation mirror. If the mirror rate-limits or is unavailable, the run returns partial data and reports it in the status message.\n- **Brand, delivery, and similar-product shelves** are published inconsistently by Ozon. They are included only when the page carries them.\n- **Search relevance filler.** Ozon may append recommendations on deep sorted pages; the actor does not claim stricter relevance than the source.\n- **Question dates** are kept exactly as Ozon displays them, which may be a localized date rather than an ISO timestamp.\n- **Seller catalogs** reflect the public storefront at run time; hidden or regional-only listings may not appear.\n",
      "input": {
        "title": "Ozon Scraper Input",
        "description": "Search Ozon, browse a category, fetch product details, inspect a seller, or collect reviews and buyer questions for RU, BY, or KZ.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "description": "What to collect.",
            "editor": "select",
            "enum": [
              "search",
              "byCategory",
              "productDetails",
              "seller",
              "reviews"
            ],
            "enumTitles": [
              "Search products by keyword",
              "Browse category or brand listings",
              "Fetch full product details by URL or SKU",
              "Seller profile and catalog",
              "Product reviews and buyer questions"
            ],
            "default": "search",
            "prefill": "search"
          },
          "searchQueries": {
            "title": "Search queries (mode=search)",
            "type": "array",
            "description": "One or more keywords, e.g. `iphone`, `телевизор`, `кофемашина`. Each query is collected in order.",
            "editor": "stringList",
            "default": [
              "iphone"
            ],
            "prefill": [
              "iphone"
            ]
          },
          "categoryUrls": {
            "title": "Category URLs or slugs (mode=byCategory)",
            "type": "array",
            "description": "Full Ozon category/brand URLs or bare slugs, e.g. `https://www.ozon.ru/category/smartfony-15502/` or `smartfony-15502`.",
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "productUrls": {
            "title": "Product URLs or SKUs (mode=productDetails or reviews)",
            "type": "array",
            "description": "Full Ozon product URLs, short `ozon.ru/t/...` links, or bare numeric SKU/product IDs.",
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "sellerUrls": {
            "title": "Seller URLs or IDs (mode=seller)",
            "type": "array",
            "description": "Ozon seller storefront URLs, slugs, or numeric seller IDs, e.g. `https://www.ozon.ru/seller/dubaidutyfree/`.",
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "sortBy": {
            "title": "Sort order",
            "type": "string",
            "description": "Result ordering for search, category, and seller catalog listings.",
            "editor": "select",
            "enum": [
              "relevance",
              "price_asc",
              "price_desc",
              "rating",
              "new",
              "discount"
            ],
            "enumTitles": [
              "Relevance (default)",
              "Price: low to high",
              "Price: high to low",
              "Highest rated",
              "Newest",
              "Biggest discounts"
            ],
            "default": "relevance",
            "prefill": "relevance"
          },
          "sortReviews": {
            "title": "Review order (mode=reviews)",
            "type": "string",
            "description": "How product reviews are ordered.",
            "editor": "select",
            "enum": [
              "usefulness_desc",
              "score_desc",
              "score_asc"
            ],
            "enumTitles": [
              "Most useful first",
              "Highest rating first",
              "Lowest rating first"
            ],
            "default": "usefulness_desc",
            "prefill": "usefulness_desc"
          },
          "storefront": {
            "title": "Storefront",
            "type": "string",
            "description": "Which Ozon market to read. Prices use the local currency: RUB for Russia, BYN for Belarus, KZT for Kazakhstan.",
            "editor": "select",
            "enum": [
              "ru",
              "by",
              "kz"
            ],
            "enumTitles": [
              "Ozon Russia (RUB)",
              "Ozon Belarus (BYN)",
              "Ozon Kazakhstan (KZT)"
            ],
            "default": "ru",
            "prefill": "ru"
          },
          "minPrice": {
            "title": "Minimum price",
            "type": "integer",
            "description": "Drop products cheaper than this amount in the selected storefront currency.",
            "minimum": 0,
            "maximum": 100000000,
            "default": 0,
            "prefill": 0
          },
          "maxPrice": {
            "title": "Maximum price",
            "type": "integer",
            "description": "Drop products pricier than this amount in the selected storefront currency.",
            "minimum": 0,
            "maximum": 100000000
          },
          "minRating": {
            "title": "Minimum rating",
            "type": "number",
            "description": "Drop products rated below this value on the 0-5 scale.",
            "minimum": 0,
            "maximum": 5
          },
          "inStockOnly": {
            "title": "In stock only",
            "type": "boolean",
            "description": "Only keep products that are currently available.",
            "default": false,
            "prefill": false
          },
          "maxItems": {
            "title": "Maximum records",
            "type": "integer",
            "description": "Hard cap on emitted records. In seller mode this includes the seller profile row.",
            "minimum": 1,
            "maximum": 1000,
            "default": 50,
            "prefill": 3
          },
          "maxReviewsPerProduct": {
            "title": "Maximum reviews per product (mode=reviews)",
            "type": "integer",
            "description": "How many review rows to collect for each product. Set 0 to collect only question rows.",
            "minimum": 0,
            "maximum": 1000,
            "default": 30,
            "prefill": 1
          },
          "includeProductDetails": {
            "title": "Enrich listing rows with full details",
            "type": "boolean",
            "description": "For search and category rows, also fetch the product page for description, full specifications, gallery, and variants.",
            "default": false,
            "prefill": false
          },
          "includeOtherSellers": {
            "title": "Include competing seller offers",
            "type": "boolean",
            "description": "Add the buybox list of other sellers for each product.",
            "default": false,
            "prefill": false
          },
          "includeSellerDetails": {
            "title": "Include seller legal details",
            "type": "boolean",
            "description": "Add the seller's legal name, registration number, address, and confirmed brands to product rows.",
            "default": false,
            "prefill": false
          },
          "includeSellerProducts": {
            "title": "Include seller catalog products (mode=seller)",
            "type": "boolean",
            "description": "Emit the seller's catalog products as product rows in addition to the seller profile.",
            "default": true,
            "prefill": true
          },
          "includeQuestions": {
            "title": "Include buyer questions (mode=reviews)",
            "type": "boolean",
            "description": "Also emit buyer questions and their answers for each product.",
            "default": false,
            "prefill": false
          }
        },
        "required": [
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Ozon.ru Product Pricing, Ratings & Seller Scraper Output",
        "description": "Ozon products, seller profiles, buyer reviews, and questions with local-currency pricing, full specifications, variants, buybox offers, and legal seller details.",
        "properties": {
          "products": {
            "type": "string",
            "title": "Ozon products",
            "description": "Dataset view of product rows.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          },
          "sellers": {
            "type": "string",
            "title": "Ozon sellers",
            "description": "Dataset view of seller profile rows.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          },
          "reviews": {
            "type": "string",
            "title": "Ozon reviews",
            "description": "Dataset view of product review rows.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          },
          "questions": {
            "type": "string",
            "title": "Ozon buyer questions",
            "description": "Dataset view of buyer question and answer rows.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "products": {
              "title": "Products",
              "transformation": {
                "fields": [
                  "recordType",
                  "sku",
                  "name",
                  "brand",
                  "price",
                  "originalPrice",
                  "discountPercent",
                  "cardPrice",
                  "currency",
                  "rating",
                  "reviewCount",
                  "sellerName",
                  "sellerLegalName",
                  "availability",
                  "productUrl",
                  "storefront"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            },
            "sellers": {
              "title": "Sellers",
              "transformation": {
                "fields": [
                  "recordType",
                  "sellerId",
                  "name",
                  "rating",
                  "reviewsCount",
                  "ordersCount",
                  "yearsOnOzon",
                  "isPremium",
                  "legalName",
                  "registrationNumber",
                  "address",
                  "confirmedBrands",
                  "url"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            },
            "reviews": {
              "title": "Reviews",
              "transformation": {
                "fields": [
                  "recordType",
                  "reviewId",
                  "sku",
                  "rating",
                  "authorName",
                  "publishedAt",
                  "comment",
                  "photos",
                  "videos",
                  "usefulCount",
                  "isPurchaseVerified",
                  "productUrl"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            },
            "questions": {
              "title": "Buyer questions",
              "transformation": {
                "fields": [
                  "recordType",
                  "questionId",
                  "sku",
                  "text",
                  "authorName",
                  "createdAt",
                  "answers",
                  "productUrl"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            }
          }
        }
      },
      "environmentVariables": {}
    },
    "buildNumber": "1.0.2",
    "imageDigest": "40990ba8868562723d6c1a75df8c3dc0906dfcceeb9a110af73527bc4b70d3ae",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.010555555555555556
    }
  }
}