Yandex Market Price & Seller Offer Comparison Scraper
Scrape product listings, prices, seller offers, and reviews from Yandex Market. Search by keyword, browse a category, pull a product's full seller-offer comparison, or collect product and seller reviews.
Input schema
Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | required | What to scrape. searchProducts: find products by keyword. browseCategory: scrape a product category. getProductDetails: full details + all seller offers for specific product URLs. getReviews: scrape product or seller reviews. |
searchQueries | array | optional | One or more search queries (mode=searchProducts). Examples: 'iPhone 15', 'ноутбук Samsung'. |
categoryUrls | array | optional | Yandex Market category page URLs (mode=browseCategory). Must be market.yandex.ru/catalog URLs. |
Show all input fields
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | required | What to scrape. searchProducts: find products by keyword. browseCategory: scrape a product category. getProductDetails: full details + all seller offers for specific product URLs. getReviews: scrape product or seller reviews. |
searchQueries | array | optional | One or more search queries (mode=searchProducts). Examples: 'iPhone 15', 'ноутбук Samsung'. |
categoryUrls | array | optional | Yandex Market category page URLs (mode=browseCategory). Must be market.yandex.ru/catalog URLs. |
productUrls | array | optional | Yandex Market product page URLs (mode=getProductDetails or getReviews). Format: https://market.yandex.ru/product--{slug}/{id} |
sellerUrls | array | optional | Yandex Market seller page URLs (mode=getReviews only). Format: https://market.yandex.ru/shop--{slug}/{id} |
maxItems | integer | optional | Maximum number of records to return per query/URL. |
sortOrder | string | optional | How to sort search results. Only applies in searchProducts and browseCategory modes. |
minPrice | integer | optional | Minimum price filter in Russian rubles. Only applies in searchProducts and browseCategory modes. |
maxPrice | integer | optional | Maximum price filter in Russian rubles. Only applies in searchProducts and browseCategory modes. |
minRating | string | optional | Filter out products below this rating. Only applies in searchProducts and browseCategory modes. |
reviewsSortOrder | string | optional | How to sort reviews. Only applies in getReviews mode. |
proxyConfiguration | object | optional | Required. Yandex Market only serves Russian IPs. Use Apify Residential proxy with country=RU for reliable access. |
Download the published input schema
View complete JSON
{
"description": "Search products, browse categories, get product details with all seller offers, or scrape reviews from Yandex Market.",
"properties": {
"categoryUrls": {
"description": "Yandex Market category page URLs (mode=browseCategory). Must be market.yandex.ru/catalog URLs.",
"editor": "stringList",
"items": {
"type": "string"
},
"prefill": [
"https://market.yandex.ru/catalog--smartfony/54726"
],
"title": "Category URLs",
"type": "array"
},
"maxItems": {
"default": 50,
"description": "Maximum number of records to return per query/URL.",
"maximum": 1000,
"minimum": 1,
"prefill": 5,
"title": "Max Items",
"type": "integer"
},
"maxPrice": {
"description": "Maximum price filter in Russian rubles. Only applies in searchProducts and browseCategory modes.",
"minimum": 0,
"title": "Max Price (RUB)",
"type": "integer"
},
"minPrice": {
"description": "Minimum price filter in Russian rubles. Only applies in searchProducts and browseCategory modes.",
"minimum": 0,
"title": "Min Price (RUB)",
"type": "integer"
},
"minRating": {
"default": "any",
"description": "Filter out products below this rating. Only applies in searchProducts and browseCategory modes.",
"editor": "select",
"enum": [
"any",
"3",
"3.5",
"4",
"4.5"
],
"enumTitles": [
"Any rating",
"3+ stars",
"3.5+ stars",
"4+ stars",
"4.5+ stars"
],
"title": "Min Rating (search & category only)",
"type": "string"
},
"mode": {
"default": "searchProducts",
"description": "What to scrape. searchProducts: find products by keyword. browseCategory: scrape a product category. getProductDetails: full details + all seller offers for specific product URLs. getReviews: scrape product or seller reviews.",
"editor": "select",
"enum": [
"searchProducts",
"browseCategory",
"getProductDetails",
"getReviews"
],
"enumTitles": [
"Search products by keyword",
"Browse a product category",
"Get product details + all seller offers",
"Get product or seller reviews"
],
"prefill": "searchProducts",
"title": "Mode",
"type": "string"
},
"productUrls": {
"description": "Yandex Market product page URLs (mode=getProductDetails or getReviews). Format: https://market.yandex.ru/product--{slug}/{id}",
"editor": "stringList",
"items": {
"type": "string"
},
"prefill": [
"https://market.yandex.ru/product--smartfon-apple-iphone-7/14206636"
],
"title": "Product URLs",
"type": "array"
},
"proxyConfiguration": {
"description": "Required. Yandex Market only serves Russian IPs. Use Apify Residential proxy with country=RU for reliable access.",
"editor": "proxy",
"prefill": {
"apifyProxyCountry": "RU",
"apifyProxyGroups": [
"RESIDENTIAL"
],
"useApifyProxy": true
},
"title": "Proxy Configuration",
"type": "object"
},
"reviewsSortOrder": {
"default": "newest",
"description": "How to sort reviews. Only applies in getReviews mode.",
"editor": "select",
"enum": [
"newest",
"highestRating",
"lowestRating",
"mostHelpful"
],
"enumTitles": [
"Newest first",
"Highest rated first",
"Lowest rated first",
"Most helpful first"
],
"title": "Reviews Sort Order (getReviews only)",
"type": "string"
},
"searchQueries": {
"description": "One or more search queries (mode=searchProducts). Examples: 'iPhone 15', 'ноутбук Samsung'.",
"editor": "stringList",
"items": {
"type": "string"
},
"prefill": [
"iPhone 15"
],
"title": "Search Queries",
"type": "array"
},
"sellerUrls": {
"description": "Yandex Market seller page URLs (mode=getReviews only). Format: https://market.yandex.ru/shop--{slug}/{id}",
"editor": "stringList",
"items": {
"type": "string"
},
"prefill": [],
"title": "Seller URLs (getReviews only)",
"type": "array"
},
"sortOrder": {
"default": "relevance",
"description": "How to sort search results. Only applies in searchProducts and browseCategory modes.",
"editor": "select",
"enum": [
"relevance",
"priceAsc",
"priceDesc",
"rating",
"popularity"
],
"enumTitles": [
"Relevance (default)",
"Price: low to high",
"Price: high to low",
"Highest rated",
"Most popular"
],
"title": "Sort Order (search & category only)",
"type": "string"
}
},
"required": [
"mode"
],
"schemaVersion": 1,
"title": "Yandex Market 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.
| Field | Type | Required | Description |
|---|---|---|---|
results | string | optional | Dataset with scraped Yandex Market products, seller offers, and reviews. |
Download the published output schema
View complete JSON
{
"actorOutputSchemaVersion": 1,
"description": "Yandex Market products with pricing and seller-offer data, plus product and seller reviews. Products have recordType=product, reviews have recordType=review.",
"properties": {
"results": {
"description": "Dataset with scraped Yandex Market products, seller offers, and reviews.",
"template": "{{links.apiDefaultDatasetUrl}}/items",
"title": "Yandex Market records",
"type": "string"
}
},
"title": "Yandex Market Price & Seller Offer Comparison 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,
"title": "Yandex Market Results",
"views": {
"offers": {
"display": {
"component": "table",
"properties": {
"condition": {
"format": "text",
"label": "Condition"
},
"deliveryInfo": {
"format": "text",
"label": "Delivery"
},
"discount": {
"format": "number",
"label": "Discount %"
},
"name": {
"format": "text",
"label": "Product Name"
},
"offerUrl": {
"format": "link",
"label": "Offer URL"
},
"originalPrice": {
"format": "number",
"label": "Original Price"
},
"price": {
"format": "number",
"label": "Price (RUB)"
},
"productId": {
"format": "text",
"label": "Product ID"
},
"sellerName": {
"format": "text",
"label": "Seller"
},
"sellerRating": {
"format": "number",
"label": "Seller Rating"
}
}
},
"title": "Seller Offers",
"transformation": {
"fields": [
"productId",
"name",
"sellerName",
"sellerRating",
"price",
"originalPrice",
"discount",
"condition",
"deliveryInfo",
"offerUrl"
]
}
},
"products": {
"display": {
"component": "table",
"properties": {
"availability": {
"format": "text",
"label": "Availability"
},
"brand": {
"format": "text",
"label": "Brand"
},
"discount": {
"format": "number",
"label": "Discount %"
},
"name": {
"format": "text",
"label": "Name"
},
"originalPrice": {
"format": "number",
"label": "Original Price"
},
"price": {
"format": "number",
"label": "Price (RUB)"
},
"productId": {
"format": "text",
"label": "Product ID"
},
"rating": {
"format": "number",
"label": "Rating"
},
"reviewCount": {
"format": "number",
"label": "Reviews"
},
"scrapedAt": {
"format": "text",
"label": "Scraped At"
},
"sellerName": {
"format": "text",
"label": "Seller"
},
"url": {
"format": "link",
"label": "Product URL"
}
}
},
"title": "Products Overview",
"transformation": {
"fields": [
"productId",
"name",
"brand",
"price",
"originalPrice",
"discount",
"rating",
"reviewCount",
"sellerName",
"availability",
"url",
"scrapedAt"
]
}
},
"reviews": {
"display": {
"component": "table",
"properties": {
"author": {
"format": "text",
"label": "Author"
},
"date": {
"format": "text",
"label": "Date"
},
"helpfulVotes": {
"format": "number",
"label": "Helpful Votes"
},
"productName": {
"format": "text",
"label": "Product"
},
"rating": {
"format": "number",
"label": "Rating"
},
"reviewType": {
"format": "text",
"label": "Type"
},
"scrapedAt": {
"format": "text",
"label": "Scraped At"
},
"sellerName": {
"format": "text",
"label": "Seller"
},
"text": {
"format": "text",
"label": "Review Text"
},
"title": {
"format": "text",
"label": "Title"
}
}
},
"title": "Reviews",
"transformation": {
"fields": [
"reviewType",
"author",
"rating",
"title",
"text",
"date",
"helpfulVotes",
"productName",
"sellerName",
"scrapedAt"
]
}
}
}
}
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
Yandex Market Price & Seller Offer Comparison Scraper
Pull product listings, pricing, and reviews from Yandex Market, the marketplace where most listings are fulfilled by multiple independent sellers competing on the same product page. Search by keyword, browse a category, compare every seller's price for one product, or collect reviews.
What this actor does
- Searches Yandex Market by one or more keywords and returns matching product cards
- Browses every product listed under a category URL
- Fetches a single product's full detail page together with every seller's competing offer for that product
- Collects reviews for a product or for a seller's storefront
- Empty fields are omitted from records
Output per product
recordType— alwaysproductproductId— Yandex Market's internal product IDnameurl— canonical product page URLcategoryPath— array of category names from top-level down to the product's category (product-detail fetches only)rating,reviewCountprice,originalPrice,discount— current price, pre-discount price, and discount percentage, incurrency(RUB)sellerName— the primary/lead seller shown on a search or category carddeliveryInfo— delivery estimate text as shown on a search or category cardavailability—in_stockorout_of_stockspecs— key/value map of technical specifications (product-detail fetches only, when the page lists any)images— array of product image URLsoffers— populated only in product-detail fetches; array of every competing seller's offer for this product (see below)scrapedAt
Output per seller offer (nested in offers, product-detail fetches only)
sellerName,sellerUrl— when shown on the offerprice,originalPrice— when the offer shows a pre-discount price
Output per review
recordType— alwaysreviewreviewType—productorsellerproductId,productName,productUrl— present on product reviewssellerId,sellerName,sellerUrl— present on seller reviewsauthor,rating,title,text— when the review shows themdatescrapedAt
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode |
string | searchProducts |
searchProducts / browseCategory / getProductDetails / getReviews |
searchQueries |
array | – | Keywords to search, e.g. ["iPhone 15", "Samsung Galaxy"] (mode=searchProducts) |
categoryUrls |
array | – | market.yandex.ru/catalog URLs to browse (mode=browseCategory) |
productUrls |
array | – | Product URLs for detail fetch or product reviews (mode=getProductDetails, getReviews) |
sellerUrls |
array | – | Seller storefront URLs for seller reviews (mode=getReviews) |
maxItems |
integer | 50 |
Records per query/URL (1–1000) |
sortOrder |
string | relevance |
relevance / priceAsc / priceDesc / rating / popularity |
minPrice |
integer | – | Minimum price in RUB |
maxPrice |
integer | – | Maximum price in RUB |
minRating |
string | any |
any / 3 / 3.5 / 4 / 4.5 |
reviewsSortOrder |
string | newest |
newest / highestRating / lowestRating / mostHelpful |
proxyConfiguration |
object | RESIDENTIAL | Yandex Market blocks plain datacenter traffic, so a residential proxy is set by default |
Example: keyword search with price range
{
"mode": "searchProducts",
"searchQueries": ["iPhone 15", "Samsung Galaxy S24"],
"minPrice": 50000,
"maxPrice": 100000,
"sortOrder": "priceAsc"
}
Example: browse a category
{
"mode": "browseCategory",
"categoryUrls": ["https://market.yandex.ru/catalog--smartfony/54726/list"],
"maxItems": 100
}
Example: compare every seller's offer for one product
{
"mode": "getProductDetails",
"productUrls": ["https://market.yandex.ru/product--apple-iphone-15/1926025774"]
}
Example: newest reviews for a product
{
"mode": "getReviews",
"productUrls": ["https://market.yandex.ru/product--apple-iphone-15/1926025774"],
"reviewsSortOrder": "newest",
"maxItems": 100
}
Use cases
- Price monitoring — track how a product's price moves across every seller offering it
- Seller benchmarking — compare seller ratings, delivery times, and pricing side by side
- Catalog research — pull a whole category's listings with specs and current prices
- Sentiment tracking — gather product reviews with pros/cons to spot recurring complaints
- Market-entry analysis — scope typical price ranges and seller competition before listing a product
FAQ
Does searchQueries accept Russian text? Yes — keywords can be in Russian or English; Yandex Market returns whatever matches on its own site.
How do I see every seller's price for one product, not just the lead offer? Use mode: "getProductDetails" with the product URL — the offers array on that record lists every competing seller's offer.
Why does a searchProducts record have an empty offers field? Search and category listing cards only show the lead seller; the full offer comparison is only fetched in getProductDetails mode, to avoid an extra request per card during a listing scan.
Can I get reviews for a seller instead of a product? Yes — pass a storefront URL in sellerUrls with mode: "getReviews"; those records carry reviewType: "seller" and seller identifying fields instead of product ones.
Do I need to configure the proxy myself? No — proxyConfiguration defaults to a residential proxy because Yandex Market blocks plain datacenter traffic; leave the default unless you have your own proxy group to use instead.
What happens if a run finds nothing? If no product, listing, or review records could be extracted for the whole run, the dataset gets a single informational record (type: "yandex_market_scraper_error") naming the mode and suggesting a residential proxy, instead of leaving the dataset silently empty.
Is this affiliated with Yandex? No. This actor reads Yandex Market's publicly accessible pages and is not affiliated with or endorsed by Yandex.
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.
Source build cegVbRb8GCk1Tm8JZ. Documentation is regenerated from the default published build; private drafts are not included.