Yandex Market Scraper API | Парсер Яндекс Маркета avatar

Yandex Market Scraper API | Парсер Яндекс Маркета

Pricing

from $1.64 / 1,000 products

Go to Apify Store
Yandex Market Scraper API | Парсер Яндекс Маркета

Yandex Market Scraper API | Парсер Яндекс Маркета

Scrape Yandex Market products by search term or catalogue URL: name, card price, price without the Yandex Pay card, old price, discount, rating, shop id, stock, category, short specs, images and product link. Moscow prices. No API key. $1.70 per 1,000 products.

Pricing

from $1.64 / 1,000 products

Rating

5.0

(1)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

32

Total users

17

Monthly active users

an hour ago

Last modified

Share

Search Yandex Market or paste a 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: prices, discount, rating, shop id, stock, specs, images
Ceiling5,000 products per run; a broad term usually runs dry well before that
SpeedAbout 230 to 280 products a minute, measured on three cloud runs
Account neededNone, and no API key
Price$1.70 per 1,000 products, flat on every plan. The free plan's $5 a month covers about 2,900

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

Three prices come back on every row, and 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 data you get from each Yandex Market product

What you getField
Yandex's model id, the offer it chose to show, and the stock codeproductId, offerId, sku
Name and a clean product linkname, url
Card price, price without the card, old price, discount and currencyprice, priceWithoutCard, oldPrice, discountPercent, currency
Rating and how many ratings it rests onrating, ratingCount
The shop behind the offer, as an idsellerId
Whether it can be added to the cartinStock
Category id, and its name when the page gives onecategoryId, categoryName
The short spec line from the cardspecs
Main image and the card galleryimageUrl, images
Which of your inputs produced the row, and which pagesearchQuery, sourceUrl, page
Kept for existing pipelines, empty since September 2026sellerName, sellerSlug, sellerUrl, brand, purchasedText, stockNote, deliveryText, badges

▶️ How to scrape Yandex Market

  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.

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

💰 How much does it cost to scrape Yandex Market?

$1.70 per 1,000 products. Flat on every Apify plan, no volume tiers. On the free plan, the $5 Apify gives you each month covers about 2,900 products.

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 you give it

{
"searchQueries": ["фен", "ноутбук"],
"maxItems": 200,
"sortBy": "priceAsc",
"maxPrice": 5000
}
FieldDefaultWhat it is
searchQueriesnone, the box 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.

📤 What you get back

A real product row from a run for фен on 26 September 2026. 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"
}
FieldHow to read it
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.
inStocktrue when the card offers an add-to-cart button. stockNote and deliveryText are empty.
categoryNameFilled only when the page names it, which is rare now. categoryId is always there.
specsThe short spec line from the card, as name and value pairs. Not the full spec sheet.

🧾 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 did not serve that page on this run. Worth another run.
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.

💡 What people use it for

  • Watching a competitor's prices on a schedule and diffing priceWithoutCard 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.
  • Collecting images, specs and stock for a set of products, all 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.
  • It is not an official Yandex tool. Dami's Studio is independent and is not affiliated with or endorsed by Yandex, or by any other company named on this page.

🧭 Which Yandex scraper do you need?

If you wantUse
Businesses on Yandex Maps, with phones, hours and coordinatesYandex Maps Scraper
Reviews for a place on Yandex MapsYandex Maps Reviews Scraper
Yandex search results by keyword and regionYandex Search Engine Scraper
Products and prices on Yandex MarketThis one
Second-hand listings and private sellers on AvitoAvito Listings Scraper

❓ Questions people ask

Do I need a Yandex account or an API key to scrape Yandex Market?

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 call it from code or connect it to an AI assistant?

Yes. The API tab has ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/yandex-market-scraper. Either way the run happens on your Apify account at the same price.

These are public product listings. Apify's write-up on the legality of web scraping 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.