Vexaloom Labs

Ozon.ru Product Pricing, Ratings & Seller Scraper

Search, browse categories, or fetch full product details from Ozon.ru with pricing, discount, rating breakdown, seller profile, spec, and variant data via a required Russian residential proxy.

Input schema

Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.

FieldTypeRequiredDescription
modestringrequiredWhat to collect.
searchQueriesarrayoptionalOne or more keywords, e.g. `iphone`, `телевизор`, `кофемашина`. Each query is collected in order.
categoryUrlsarrayoptionalFull Ozon category/brand URLs or bare slugs, e.g. `https://www.ozon.ru/category/smartfony-15502/` or `smartfony-15502`.
Show all input fields
FieldTypeRequiredDescription
modestringrequiredWhat to collect.
searchQueriesarrayoptionalOne or more keywords, e.g. `iphone`, `телевизор`, `кофемашина`. Each query is collected in order.
categoryUrlsarrayoptionalFull Ozon category/brand URLs or bare slugs, e.g. `https://www.ozon.ru/category/smartfony-15502/` or `smartfony-15502`.
productUrlsarrayoptionalFull Ozon product URLs, short `ozon.ru/t/...` links, or bare numeric SKU/product IDs.
sellerUrlsarrayoptionalOzon seller storefront URLs, slugs, or numeric seller IDs, e.g. `https://www.ozon.ru/seller/dubaidutyfree/`.
sortBystringoptionalResult ordering for search, category, and seller catalog listings.
sortReviewsstringoptionalHow product reviews are ordered.
storefrontstringoptionalWhich Ozon market to read. Prices use the local currency: RUB for Russia, BYN for Belarus, KZT for Kazakhstan.
minPriceintegeroptionalDrop products cheaper than this amount in the selected storefront currency.
maxPriceintegeroptionalDrop products pricier than this amount in the selected storefront currency.
minRatingnumberoptionalDrop products rated below this value on the 0-5 scale.
inStockOnlybooleanoptionalOnly keep products that are currently available.
maxItemsintegeroptionalHard cap on emitted records. In seller mode this includes the seller profile row.
maxReviewsPerProductintegeroptionalHow many review rows to collect for each product. Set 0 to collect only question rows.
includeProductDetailsbooleanoptionalFor search and category rows, also fetch the product page for description, full specifications, gallery, and variants.
includeOtherSellersbooleanoptionalAdd the buybox list of other sellers for each product.
includeSellerDetailsbooleanoptionalAdd the seller's legal name, registration number, address, and confirmed brands to product rows.
includeSellerProductsbooleanoptionalEmit the seller's catalog products as product rows in addition to the seller profile.
includeQuestionsbooleanoptionalAlso emit buyer questions and their answers for each product.

Download the published input schema

View complete JSON
{
  "description": "Search Ozon, browse a category, fetch product details, inspect a seller, or collect reviews and buyer questions for RU, BY, or KZ.",
  "properties": {
    "categoryUrls": {
      "default": [],
      "description": "Full Ozon category/brand URLs or bare slugs, e.g. `https://www.ozon.ru/category/smartfony-15502/` or `smartfony-15502`.",
      "editor": "stringList",
      "prefill": [],
      "title": "Category URLs or slugs (mode=byCategory)",
      "type": "array"
    },
    "inStockOnly": {
      "default": false,
      "description": "Only keep products that are currently available.",
      "prefill": false,
      "title": "In stock only",
      "type": "boolean"
    },
    "includeOtherSellers": {
      "default": false,
      "description": "Add the buybox list of other sellers for each product.",
      "prefill": false,
      "title": "Include competing seller offers",
      "type": "boolean"
    },
    "includeProductDetails": {
      "default": false,
      "description": "For search and category rows, also fetch the product page for description, full specifications, gallery, and variants.",
      "prefill": false,
      "title": "Enrich listing rows with full details",
      "type": "boolean"
    },
    "includeQuestions": {
      "default": false,
      "description": "Also emit buyer questions and their answers for each product.",
      "prefill": false,
      "title": "Include buyer questions (mode=reviews)",
      "type": "boolean"
    },
    "includeSellerDetails": {
      "default": false,
      "description": "Add the seller's legal name, registration number, address, and confirmed brands to product rows.",
      "prefill": false,
      "title": "Include seller legal details",
      "type": "boolean"
    },
    "includeSellerProducts": {
      "default": true,
      "description": "Emit the seller's catalog products as product rows in addition to the seller profile.",
      "prefill": true,
      "title": "Include seller catalog products (mode=seller)",
      "type": "boolean"
    },
    "maxItems": {
      "default": 50,
      "description": "Hard cap on emitted records. In seller mode this includes the seller profile row.",
      "maximum": 1000,
      "minimum": 1,
      "prefill": 3,
      "title": "Maximum records",
      "type": "integer"
    },
    "maxPrice": {
      "description": "Drop products pricier than this amount in the selected storefront currency.",
      "maximum": 100000000,
      "minimum": 0,
      "title": "Maximum price",
      "type": "integer"
    },
    "maxReviewsPerProduct": {
      "default": 30,
      "description": "How many review rows to collect for each product. Set 0 to collect only question rows.",
      "maximum": 1000,
      "minimum": 0,
      "prefill": 1,
      "title": "Maximum reviews per product (mode=reviews)",
      "type": "integer"
    },
    "minPrice": {
      "default": 0,
      "description": "Drop products cheaper than this amount in the selected storefront currency.",
      "maximum": 100000000,
      "minimum": 0,
      "prefill": 0,
      "title": "Minimum price",
      "type": "integer"
    },
    "minRating": {
      "description": "Drop products rated below this value on the 0-5 scale.",
      "maximum": 5,
      "minimum": 0,
      "title": "Minimum rating",
      "type": "number"
    },
    "mode": {
      "default": "search",
      "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"
      ],
      "prefill": "search",
      "title": "Mode",
      "type": "string"
    },
    "productUrls": {
      "default": [],
      "description": "Full Ozon product URLs, short `ozon.ru/t/...` links, or bare numeric SKU/product IDs.",
      "editor": "stringList",
      "prefill": [],
      "title": "Product URLs or SKUs (mode=productDetails or reviews)",
      "type": "array"
    },
    "searchQueries": {
      "default": [
        "iphone"
      ],
      "description": "One or more keywords, e.g. `iphone`, `телевизор`, `кофемашина`. Each query is collected in order.",
      "editor": "stringList",
      "prefill": [
        "iphone"
      ],
      "title": "Search queries (mode=search)",
      "type": "array"
    },
    "sellerUrls": {
      "default": [],
      "description": "Ozon seller storefront URLs, slugs, or numeric seller IDs, e.g. `https://www.ozon.ru/seller/dubaidutyfree/`.",
      "editor": "stringList",
      "prefill": [],
      "title": "Seller URLs or IDs (mode=seller)",
      "type": "array"
    },
    "sortBy": {
      "default": "relevance",
      "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"
      ],
      "prefill": "relevance",
      "title": "Sort order",
      "type": "string"
    },
    "sortReviews": {
      "default": "usefulness_desc",
      "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"
      ],
      "prefill": "usefulness_desc",
      "title": "Review order (mode=reviews)",
      "type": "string"
    },
    "storefront": {
      "default": "ru",
      "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)"
      ],
      "prefill": "ru",
      "title": "Storefront",
      "type": "string"
    }
  },
  "required": [
    "mode"
  ],
  "schemaVersion": 1,
  "title": "Ozon Scraper Input",
  "type": "object"
}

Output schema

Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.

FieldTypeRequiredDescription
productsstringoptionalDataset view of product rows.
sellersstringoptionalDataset view of seller profile rows.
reviewsstringoptionalDataset view of product review rows.
questionsstringoptionalDataset view of buyer question and answer rows.

Download the published output schema

View complete JSON
{
  "actorOutputSchemaVersion": 1,
  "description": "Ozon products, seller profiles, buyer reviews, and questions with local-currency pricing, full specifications, variants, buybox offers, and legal seller details.",
  "properties": {
    "products": {
      "description": "Dataset view of product rows.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "Ozon products",
      "type": "string"
    },
    "questions": {
      "description": "Dataset view of buyer question and answer rows.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "Ozon buyer questions",
      "type": "string"
    },
    "reviews": {
      "description": "Dataset view of product review rows.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "Ozon reviews",
      "type": "string"
    },
    "sellers": {
      "description": "Dataset view of seller profile rows.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "Ozon sellers",
      "type": "string"
    }
  },
  "title": "Ozon.ru Product Pricing, Ratings & Seller Scraper Output"
}

Dataset schema

Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.

Download the published dataset schema

View complete JSON
{
  "actorSpecification": 1,
  "views": {
    "products": {
      "display": {
        "component": "table",
        "properties": {}
      },
      "title": "Products",
      "transformation": {
        "fields": [
          "recordType",
          "sku",
          "name",
          "brand",
          "price",
          "originalPrice",
          "discountPercent",
          "cardPrice",
          "currency",
          "rating",
          "reviewCount",
          "sellerName",
          "sellerLegalName",
          "availability",
          "productUrl",
          "storefront"
        ]
      }
    },
    "questions": {
      "display": {
        "component": "table",
        "properties": {}
      },
      "title": "Buyer questions",
      "transformation": {
        "fields": [
          "recordType",
          "questionId",
          "sku",
          "text",
          "authorName",
          "createdAt",
          "answers",
          "productUrl"
        ]
      }
    },
    "reviews": {
      "display": {
        "component": "table",
        "properties": {}
      },
      "title": "Reviews",
      "transformation": {
        "fields": [
          "recordType",
          "reviewId",
          "sku",
          "rating",
          "authorName",
          "publishedAt",
          "comment",
          "photos",
          "videos",
          "usefulCount",
          "isPurchaseVerified",
          "productUrl"
        ]
      }
    },
    "sellers": {
      "display": {
        "component": "table",
        "properties": {}
      },
      "title": "Sellers",
      "transformation": {
        "fields": [
          "recordType",
          "sellerId",
          "name",
          "rating",
          "reviewsCount",
          "ordersCount",
          "yearsOnOzon",
          "isPremium",
          "legalName",
          "registrationNumber",
          "address",
          "confirmedBrands",
          "url"
        ]
      }
    }
  }
}

Key-value schema

Published key-value store definitions, when provided by this build.

This definition is not present in the default published build. See the published README for available documentation.

Published README

Read the full published documentation

Ozon.ru Product Pricing, Ratings & Seller Scraper

Scrape 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.

What this actor does

  • Five modes: search, byCategory, productDetails, seller, reviews
  • Three storefronts: Ozon Russia (RUB), Belarus (BYN), Kazakhstan (KZT)
  • Product depth: description, full specification table, package contents, variants, gallery, videos, hashtags, rating distribution, and availability
  • Seller intelligence: legal entity, registration number, address, years on Ozon, premium status, confirmed brands, catalog products, and competing buybox offers
  • Reviews and Q&A: review text, rating, author, date, photos, videos, helpful votes, verified-purchase flag, seller replies, plus buyer questions with answers
  • Filters and sorts: price range, minimum rating, in-stock only, and six listing sort orders
  • Empty fields are omitted — records contain only data that was actually found

Services

  • Product search and category scraping — collect listing rows with live price, discount, rating, review count, image, stock, and delivery estimate.
  • Full product cards — enrich any product with specifications, description, variants, seller details, and the complete buybox.
  • Seller monitoring — read a seller's public profile, legal identity, and catalog in one run.
  • Review and Q&A collection — build voice-of-customer datasets with review media and seller responses.
  • Cross-market pricing — compare the same marketplace across Russia, Belarus, and Kazakhstan in local currency.

How it works

Ozon 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.

Input

Field Type Default Description
mode string search search / byCategory / productDetails / seller / reviews
searchQueries array ["iphone"] Keywords for search mode
categoryUrls array – Category or brand URLs/slugs for byCategory mode
productUrls array – Product URLs, short links, or numeric SKUs for productDetails/reviews
sellerUrls array – Seller URLs, slugs, or IDs for seller mode
sortBy string relevance relevance / price_asc / price_desc / rating / new / discount
sortReviews string usefulness_desc usefulness_desc / score_desc / score_asc
storefront string ru ru (RUB) / by (BYN) / kz (KZT)
minPrice integer 0 Drop products below this local-currency price
maxPrice integer – Drop products above this local-currency price
minRating number – Drop products below this rating (0-5)
inStockOnly boolean false Keep only available products
maxItems integer 50 Hard cap on emitted records (1-1000)
maxReviewsPerProduct integer 30 Review rows per product; 0 collects only questions
includeProductDetails boolean false Enrich search/category rows with the full product card
includeOtherSellers boolean false Add competing seller offers (buybox)
includeSellerDetails boolean false Add seller legal details to product rows
includeSellerProducts boolean true Emit the seller catalog in seller mode
includeQuestions boolean false Add buyer questions and answers in reviews mode

Example: search with filters

{
  "mode": "search",
  "searchQueries": ["робот-пылесос", "кофемашина"],
  "sortBy": "price_asc",
  "minRating": 4.2,
  "maxItems": 40,
  "storefront": "ru"
}

Example: product details with seller and buybox

{
  "mode": "productDetails",
  "productUrls": [
    "https://www.ozon.ru/product/apple-smartfon-iphone-15-5728498907/",
    "1681720398"
  ],
  "includeSellerDetails": true,
  "includeOtherSellers": true
}

Example: seller profile and catalog

{
  "mode": "seller",
  "sellerUrls": ["https://www.ozon.ru/seller/dubaidutyfree/"],
  "sortBy": "price_desc",
  "maxItems": 25,
  "includeSellerProducts": true
}

Example: reviews and buyer questions

{
  "mode": "reviews",
  "productUrls": ["5728498907"],
  "maxReviewsPerProduct": 60,
  "sortReviews": "score_desc",
  "includeQuestions": true,
  "maxItems": 100
}

Output

One 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.

Product rows (recordType: "product")

  • sku, name, productUrl, imageUrl, images[], videos[]
  • brand — only when Ozon publishes an explicit brand value
  • price, originalPrice, discountPercent, cardPrice, currency, storefront
  • rating, reviewCount, ratingBreakdown[] — star buckets with count and percentage
  • sellerName, sellerUrl, sellerRating, sellerOrdersCount
  • sellerId, sellerLegalName, sellerRegistrationNumber, sellerAddress, sellerYearsOnOzon, sellerIsPremium, sellerConfirmedBrands[] (when seller details are enabled)
  • otherSellers[], otherSellersCount, otherSellersMinPrice (when buybox is enabled)
  • category, breadcrumbs[]
  • characteristics — full specification table when available, otherwise the short product panel
  • characteristicsCount, description, packageContents, hashtags[]
  • variants[] — other colors/configurations with their own SKU, price, URL, and availability
  • questionCount, similarProducts[], marketingLabels[]
  • availability, availabilityText, unitsLeft, stockQuantity, deliveryText, deliveryInfo
  • recordType, scrapedAt

Seller rows (recordType: "seller")

  • sellerId, name, url, logoUrl, storefront
  • rating, reviewsCount, ordersCount, yearsOnOzon, isPremium
  • legalName, registrationNumber, address, operatingHours, confirmedBrands[]
  • catalogProducts, scrapedAt

Review rows (recordType: "review")

  • reviewId, sku, productUrl
  • rating, authorName, publishedAt
  • comment, pros, cons (pros/cons are usually absent in current Ozon reviews)
  • photos[], videos[]
  • usefulCount, notUsefulCount, isPurchaseVerified
  • commentsCount, sellerResponse, badgeDelivery
  • recordType, scrapedAt

Question rows (recordType: "question")

  • questionId, sku, productUrl
  • text, authorName, createdAt, likes, dislikes
  • answers[] — each with authorName, createdAt, text, likes, dislikes, and isBestAnswer
  • recordType, scrapedAt

Use cases

  • Price monitoring — track product, card, and original prices across three Ozon storefronts.
  • Market and assortment research — compare categories, brands, ratings, and discount depth.
  • Seller vetting — collect legal identity, order history, and confirmed brands before partnering.
  • Competitive intelligence — see which sellers hold the buybox and at what delivered price.
  • Voice of customer — export review text, media, and buyer questions for product teams.
  • Catalog enrichment — fill your own listings with structured specifications and variants.

Usage cost

This 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.

FAQ

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

Notes

  • Empty values are omitted at every depth; there are no null fields.
  • Product, review, and question rows are deduplicated by their natural identifiers.
  • publishedAt on reviews is an ISO 8601 UTC timestamp; question createdAt keeps Ozon's displayed date text.
  • Partial failures do not stop the run: valid rows are still returned, and the run status message reports how many targets failed.
  • Legacy task inputs (searchQuery, categoryUrl, -price, and proxyConfiguration) are accepted in code; proxyConfiguration is ignored.

Limitations

  • Public data only. Private account data, cart contents, orders, and checkout pricing are not available.
  • 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.
  • Brand, delivery, and similar-product shelves are published inconsistently by Ozon. They are included only when the page carries them.
  • Search relevance filler. Ozon may append recommendations on deep sorted pages; the actor does not claim stricter relevance than the source.
  • Question dates are kept exactly as Ozon displays them, which may be a localized date rather than an ISO timestamp.
  • Seller catalogs reflect the public storefront at run time; hidden or regional-only listings may not appear.

Python quickstart

Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.

Open the step-by-step Python guide →

Source build 7kQKbzMdW6uXxbhTN. Documentation is regenerated from the default published build; private drafts are not included.