Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Yandex Market Scraper icon

Yandex Market Scraper

Scrape Yandex Market products: name, price, old price, discount, rating, stock, specs and images. No API key, no browser. $1.70 per 1,000 products.

5 from 1 review on Apify 155 runs on Apify $0.0017 per product ($1.7 / 1,000)
Run this in the cloudRun on Apify →

Developer & Research Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust searchQueries, startUrls, maxItems (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.0017 per product = $1.7 per 1,000

You are charged forWhenPrice
Product returnedCharged once per unique Yandex Market product returned. Duplicates across pages, products dropped by your own price or rating filters, diagnostic rows for blocked requests and the empty-input sample row are never charged.$0.0017

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-09-22, and they are what you are actually charged.

Inputs

FieldWhat it doesType
searchQueriesWhat to look for on Yandex Market, one per line. Russian terms return the fullest catalogue ("фен", "ноутбук", "кроссовки"), but Latin brand and model names work too ("iphone 15", "dyson"). Each term is paginated until it runs out of products or hits your item cap.array
startUrlsOptional. Paste Yandex Market search pages (https://market.yandex.ru/search?text=ноутбук) or catalogue listings (https://market.yandex.ru/catalog--noutbuki/54544/list). Filters already in the URL are kept. A few catalogue nodes only list products when the URL carries ?hid={categoryId}; if one comes back empty you get an uncharged row telling you so.array
maxItemsHard cap on unique products returned across every search (1-5000). Yandex Market repeats products between pages; duplicates are dropped before the cap is applied, so you get the number you asked for. You are charged per product returned.integer
sortBySorting applied to search terms. Ignored for pasted URLs that already carry their own sort.string
minPriceOnly return products at or above this price, in roubles. Leave empty for no floor.integer
maxPriceOnly return products at or below this price, in roubles. Yandex Market ignores this server-side (it returned 12 of 16 rows above the requested cap in testing), so the scraper also filters it locally and does not charge for the rows it drops.integer
minRatingOnly return products rated at or above this value out of 5. Products with no rating yet are excluded when this is set. Applied locally; dropped products are not charged.integer

What you get

A structured dataset — each result includes fields like:

namepriceoldPricediscountPercentcurrencysellerNameratingratingCountinStockbrandurlimageUrl

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Developer & Research Tools

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

GitHub Scraper iconDeveloper & Research Tools

GitHub Scraper

Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.

18 use cases

Stack Overflow / Stack Exchange Scraper iconDeveloper & Research Tools

Stack Overflow / Stack Exchange Scraper

Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.

2 use cases

Package Registry Scraper (npm + PyPI) iconDeveloper & Research Tools

Package Registry Scraper (npm + PyPI)

Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.

2 use cases

arXiv Scraper iconDeveloper & Research Tools

arXiv Scraper

Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.

2 use cases

OpenAlex Scholarly Works Scraper iconDeveloper & Research Tools

OpenAlex Scholarly Works Scraper

Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.

2 use cases

Crossref Scholarly Works Scraper iconDeveloper & Research Tools

Crossref Scholarly Works Scraper

Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.

2 use cases

See all Developer & Research Tools →

Yandex Market Scraper: products, prices and discounts from Yandex Market

Type a search term the way you would into Yandex Market, or paste a search or catalogue URL, and get one row per product: name, card price, price without the Yandex Pay card, crossed-out old price, discount, rating, shop id, stock, category, the short spec line, images and a clean product link.

Three things worth knowing before the first run. Prices are Moscow prices, because that is the region Yandex Market serves this catalogue from and it does not take a region hint. The headline price is the one on the result card, which assumes payment with a Yandex Pay card, so priceWithoutCard is the number you want for most comparisons. And since September 2026 the search pages no longer carry the seller's name, the brand, the "bought" count, the delivery line or the card's badges, so those fields come back empty.

InputSearch terms, or Yandex Market search and catalogue URLs
OutputOne row per product
Ceiling5,000 products per run; a broad term usually runs dry well before that
Account neededNone, and no API key
Price$1.70 per 1,000 products, flat on every plan

🛒 What Yandex Market Scraper does

Two ways in, and they work together in one run.

Search. A term like фен or iphone 15, and it pages through the results until it hits your cap or the search stops producing anything new. Russian terms reach more of the catalogue; Latin brand and model names work fine.

URLs. Paste a Yandex Market search page or a catalogue listing and it reads that. Filters already sitting in the URL are kept, so you can build the exact view you want in a browser and hand it over.

The three price fields, because mixing them up is how a price monitor goes wrong

FieldWhat it is
priceThe big number on the result card. It assumes payment with a Yandex Pay card.
priceWithoutCardThe same offer without that card discount. null when there is no difference.
oldPriceThe crossed-out list price. discountPercent is worked out from oldPrice against price.

📥 What you give it

{
  "searchQueries": ["фен", "ноутбук"],
  "maxItems": 200,
  "sortBy": "priceAsc",
  "maxPrice": 5000
}
FieldDefaultWhat it is
searchQueriesbox holds фенOne search per line. Each term is paged until it runs out or your cap is reached.
startUrlsemptyYandex Market search pages or catalogue listings. Works alongside the search terms.
maxItems50Hard cap on products across every search, 1 to 5,000. You are charged per product returned, so this is your spend cap.
sortByrelevancerelevance, priceAsc, priceDesc or rating. Ignored on a pasted URL that already carries its own sort.
minPrice, maxPriceemptyBounds in roubles. Yandex treats an upper bound as a hint, so the cap is applied here as well. Products dropped that way are not charged.
minRatingemptyKeep products rated at or above this, out of 5. Products with no rating yet are dropped when you set it.
proxyConfigurationleave it aloneOptional. Only change this if you want the run to go out through your own servers.

Run it with everything empty and you get one labelled sample row.

📤 What you get back

A real product row from a run for фен. The images and specs lists are trimmed here.

{
  "productId": "5741806961",
  "offerId": "Xk6MuvhgNv0UlIrnf1k3Jg",
  "sku": "103834569766",
  "name": "Фен редмонд HD1702, Белый",
  "url": "https://market.yandex.ru/card/fen-redmond-hd1702-1600-vt-2-skorosti-2-temperaturnykh-rezhima-belyy/4756956483",
  "price": 1615,
  "oldPrice": 2379,
  "discountPercent": 32,
  "priceWithoutCard": 1665,
  "currency": "RUB",
  "rating": 4.9,
  "ratingCount": 89,
  "purchasedText": null,
  "sellerName": null,
  "sellerId": "465852",
  "sellerSlug": null,
  "sellerUrl": null,
  "brand": null,
  "inStock": true,
  "stockNote": null,
  "conditionNote": null,
  "deliveryText": null,
  "categoryId": "90401",
  "categoryName": null,
  "badges": [],
  "specs": [{"name": "Мощность фена", "value": "1600 Вт"}, {"name": "Дополнительные функции", "value": "ионизация, подача холодного воздуха"}],
  "imageUrl": "https://avatars.mds.yandex.net/get-mpic/16369241/img_id6349726780689894057.png/orig",
  "images": ["https://avatars.mds.yandex.net/get-mpic/16369241/img_id6349726780689894057.png/orig", "..."],
  "searchQuery": "фен",
  "sourceUrl": null,
  "page": 1,
  "scrapedAt": "2026-09-26T07:07:53.743Z"
}
FieldWhat it is
productId, offerId, skuYandex's model id, the id of the offer it chose to show, and the stock code.
sellerIdThe id of the shop behind the offer on the card. Group by it to see who sells what.
sellerName, sellerSlug, sellerUrl, brandEmpty. The search pages stopped carrying them in September 2026. The fields stay so existing pipelines keep their columns.
rating, ratingCountThe product score and how many ratings it came from. purchasedText is empty for the same reason as the seller name.
inStocktrue when the card offers an add-to-cart button. stockNote and deliveryText are empty.
categoryIdYandex's category id. categoryName is filled only when the page names it, which is rare now.
specsThe short spec line from the card, as name and value pairs. Not the full spec sheet.
badgesAlways an empty list now.
searchQuery, sourceUrl, pageWhich of your inputs produced this row, and which page it came off.

🧾 Reading the output

Three kinds of row can land in your dataset.

RowHow to spot it
A productIt has a productId and a price
The sample rowWritten only when the input was empty
A diagnosticIt carries an errorCode

Diagnostic rows are never charged, and neither are products your price or rating filters dropped.

CodeWhat it means
NO_RESULTSNothing came back for that term or URL. On a catalogue link this usually means the page only lists products when the URL carries its hid= category id; the row tells you so.
BAD_URLThat entry is not a Yandex Market address. The other jobs carry on.
CAPTCHAYandex put a check in front of that page instead of answering it.
FETCH_FAILEDYandex was unreachable, or the page did not carry the product data it normally does.
TIME_LIMITThe run got close to its time limit and stopped early. Everything delivered before that is in your dataset; give the run more time, or ask for fewer products, to get the rest. If nothing had come back by then, the run ends as failed.

If a job stops part way, the products it already returned stay in your dataset and stay charged. The diagnostic row tells you where it stopped.

▶️ How to run it

1. Open Yandex Market Scraper and click Try for free. 2. Put your terms into Search terms, one per line, or paste links into Yandex Market URLs. 3. Set Maximum products low for the first run. 4. Click Start. 5. Download the dataset as JSON, CSV or Excel, or read it from the Apify API.

💰 How much does it cost?

$1.70 per 1,000 products. Flat on every Apify plan, no volume tiers.

One row is one product. The sample row, every diagnostic row and every product dropped by your minPrice, maxPrice or minRating filters are not charged. A search that finds nothing produces no product rows to charge for.

💡 What people use it for

  • Watching a competitor's prices on a schedule and diffing price between runs.
  • Pulling a whole category with oldPrice and discountPercent to see who is really discounting.
  • Counting how many different shops a product line is sold by, through sellerId.
  • Building a product feed with images, specs and stock already on the row.
  • Checking where your own listings sit when a shopper sorts by cheapest first.

🚧 What it does not do

  • No seller names, brands, "bought" counts, delivery lines or badges. Yandex Market stopped putting

them on its search pages in September 2026. You still get the shop id.

  • Moscow prices only. Yandex Market serves this catalogue from Moscow and ignores a region hint,

so a price in Novosibirsk can differ from the one you get here.

  • One offer per product. You get the offer Yandex chose to put on the card, not the full list of

sellers behind it.

  • The same model can arrive twice. Rows are deduplicated on the exact offer, so if Yandex shows

the same product again later under a different offer, that counts as another product and is charged as one.

  • No review text. You get rating and ratingCount, not what anyone wrote.
  • No sponsored flag. Yandex marks effectively everything on these pages as promoted, so the flag

would tell you nothing and is not returned.

  • A broad term runs dry well before 5,000 products. That is Yandex running out, not a cap here. To

go deeper, split the term, use a catalogue URL, or change the sort so a different slice comes back.

  • Strict filters can make a run long and thin. If almost everything is filtered out, the job

keeps turning pages looking for matches. Set maxItems to what you actually need.

  • Specs are the short list from the card. For the full sheet you need the product page itself.

🧭 Which Yandex scraper do you need?

If you wantUse
Products, prices and sellers on Yandex MarketThis one
Where a page ranks on Yandex searchYandex Search Engine Scraper
Businesses, phones and opening hoursYandex Maps Scraper
Second-hand listings and private sellersAvito Listings Scraper

❓ Questions people ask

Do I need a Yandex account or an API key? No. Nothing to register and no quota to watch.

Which price should I compare against? priceWithoutCard when you want the plain shelf price, and price when you want the number a shopper sees on the card. Do not mix the two between runs.

Can I get prices for my own city? No. The catalogue answers with Moscow pricing whatever region you ask for.

Can I paste a filtered catalogue page? Yes. Build the view you want on Yandex Market, copy the URL, and the filters in it are kept.

Can I run it on a schedule? Yes. productId is stable, so a daily run plus a join on that field gives you a price history.

Is scraping Yandex Market legal? These are public product listings. Apify's write-up on scraping and the law is a good place to start, and we are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page. Send the search term or URL and the run ID. The errorCode on the diagnostic row usually names the problem on its own.