Yandex Market Scraping: Cards, Offers and Prices

One Yandex Market card can carry several merchants at different prices, and the price moves with the city. We pin modelId, marketSku, oskuId and wareId so rows stay comparable.

Yandex Market Scraper
Solutions

How we run and deliver the feed

You set the scope: a category node, a keyword list, a brand, a merchant, or a list of marketSku values you already track, in the cities you actually sell in. We build the crawler, run it on your cadence, and hand back rows with every identifier intact.

Yandex Market answers anything that does not look like a real browser session with a captcha wall instead of the card, so anti-bot handling, proxy rotation and CAPTCHA solving are part of the service rather than your problem. We keep the request rate polite and stay off the paths the site's robots file closes.

Output is CSV, JSON, XLSX or an API endpoint your systems call, pushed to S3, to cloud storage, or into a database you own. Price work is written as dated snapshots per region, so a change reads as a series. Maintenance is included: when the markup shifts, we repair the crawler.

Fields a Yandex Market scraper returns

A row is useful only when it says which level it describes, so we extract Yandex Market data with every identifier kept on the row and every price labelled with its type.

  • Identifiers - modelId, marketSku, oskuId and wareId, the canonical card and model URLs, and the numeric hid and nid of the category the item sits in.
  • Merchant - businessId and businessName, shopId, supplierId and supplierType, plus shopSku, the article the merchant sends in its own feed, a plain number or a UUID.
  • Titles and taxonomy - item name, brand with its vendorId, and the whole breadcrumb path, for example Home appliances, Small kitchen appliances, Toasters, Toasters Tefal.
  • Price - the base price and the additionalPrices array, whose priceType values include yaBank, the Yandex Pay card price printed in large type, and withDiscount; plus the struck-through old price, the discount percent and any promo code with its minimum order.
  • Stock - isAvailable and lastStock.stockItemCount, the source of the 3 left line on a card.
  • Delivery - deliveryType, either COURIER or PICKUP, with deliveryDateFrom, deliveryDateTo, deliveryDays, the precise flag and calculatedFor, which ties the quote to one address and one offer.
  • Service flags and badges - isExpress, isUltima, isOnDemand, isCrossBorder, isComfortPlus, the sponsored flag on advertised tiles, and featureBadges such as Original or a promo code token.
  • Ratings - the unrounded rating value, numGrades, numReviews, salesNumber and the whose field, which says whether the stars belong to the model or to the merchant.
  • Specs - name and value pairs grouped the way each category groups them: a fridge carries Dimensions and volume, a toaster Number of toasts.
  • Reviews and questions - grade, the separate pros, cons and comment fields, helpfulness votes, photo and video flags, and questions with the merchant reply and its date.
  • Media - the gallery on avatars.mds.yandex.net, where one asset is addressable at full size or as a fixed thumbnail.

Reviewer names, buyer profiles and anything behind a login stay out of scope: we collect what a signed-out visitor is shown.

Fields a Yandex Market scraper returns
Where a naive Yandex Market crawler goes wrong

Where a naive Yandex Market crawler goes wrong

The first trap is the identifier in the address bar. On a card the structured Product block publishes an sku that is not the number in the URL: the URL carries the oskuId, the structured block carries the marketSku, and the model behind both has a third id again. Keep only what the URL hands you and your history breaks the first time one merchant's card is swapped for another on the same model.

The second is the headline price. The large figure on a tile is the Yandex Pay card price out of additionalPrices, not the plain price; the plain one lives in the price field and is what gets struck through. Read the rendered number and you record a discount only some buyers get. Signed-in accounts are shown lower prices again, and the site says so on the page - we do not log in, so we report the signed-out price and label it that way.

The third is rating scope. A card can show stars whose owner is the merchant rather than the model, and the same model reads sixty-three grades on one view and several hundred on another. The displayed value is rounded to one decimal while the payload carries it to nine.

The last is coverage. A category listing stops handing back tiles long before the category is exhausted, so covering a category means slicing by brand node, price band, item condition and delivery window rather than paging to the end. Spec facets and the internal endpoints are closed in robots, so slices get planned around what the file allows.

How the Yandex Market catalogue is wired

Yandex Market is a Russian marketplace run by Yandex. It is a first-party retailer with its own warehouses, pickup points and couriers, and at the same time an aggregator where independent merchants list against a shared catalogue card. Both models land on the same page and in the same listing, which is the first thing a Yandex Market scraper has to untangle.

Several URL grammars live side by side. A catalogue card is /card/{slug}/{skuId}, a model page is /product--{slug}/{modelId}, and a category listing is /catalog--{slug}/{nid}/list while breadcrumbs point at a shorter /category/{slug}. Every merchant offer on one model sits at /offers/{slug}/{modelId}?sku={marketSku}, a merchant storefront at /business--{slug}/{businessId}, and a single live offer at /offer/{wareId}. Words in the slug are decorative: replace them with anything and the numeric id still resolves the page.

The identifiers stack rather than compete. modelId names the model and its spec sheet, marketSku names the Market card for one configuration, oskuId names one merchant's SKU on that card, and wareId is the opaque token for one offer. Category ids come in pairs too: the toaster listing sits on navigation node 54961 while its category id is 90591, and only the second one drives the filters. In September 2026 the navigation sitemap listed 8,634 such category pages.

Listing and card pages are server-rendered React, and each tile carries its own JSON inside a data-zone-data attribute, so a crawler reads Yandex Market field names rather than guessing at rendered text.

Get a Quote
dev_w
25

Developers

customers
500+

Customers worldwide

pages
1 500 000 000+

Pages extracted

stime
15000+

Hours saved for our clients

Plans

Airplane

€199 / one-time

setup fee - included

Data limits100,000
Frequencyone-time
Run timeup to 5 days
Data storing7 days

Helicopter

€169 / mo

setup fee €499

Data limits250,000
Frequencymonthly
Run timeup to 5 days
Data storing14 days

Glasses

€229 / mo

setup fee €499

Data limits1,000,000
Frequencyweekly
Run timeup to 5 days
Data storing30 days

DNA

€549 / mo

setup fee €799

Data limits3,000,000
Frequency3 times daily
Run timesame day
Data storing90 days

Why Yandex Market price data needs a crawler

There is a Yandex Market API, and it is a seller tool. It is keyed to a cabinet, addressed by businessId for the account and campaignId for each shop, and authorised with a token issued inside that cabinet. It moves your own assortment, prices, stocks, orders and ad bids across the FBY, FBS, Express, DBS and LaaS models. It will not read a rival's offer, a category listing, or the catalogue as a shopper meets it, and the buyer-facing content host that once answered catalogue questions no longer answers at all.

So the market view lives on the public pages, and those pages move. The offer on display changes the moment another merchant undercuts it. The delivery promise is recomputed for the address that asked. Promo codes expire, stock counters drop, and the card price and the plain price drift apart on their own schedules.

Region is the sharpest edge. The page carries a regionId in its own session context - 213 is Moscow - and it defaults to wherever the request appears to come from, while Yandex asks crawlers to strip regionId and lr out of indexed URLs entirely. The city is therefore a session property, not part of the address, and the same card genuinely costs different money and arrives on different days in different cities. Teams that scrape Yandex Market for pricing learn this first: a price is not a number, it is a number plus a merchant, a region and a timestamp.

Related Case Studies

The Entire Iherb Supplements Catalog, Captured End-to-End in 3 Days

The Entire Iherb Supplements Catalog, Captured End-to-End in 3 Days

Scraping supplement products from iHerb.com with full details, including descriptions and packaging variations.

Learn More about The Entire Iherb Supplements Catalog, Captured End-to-End in 3 Days
The Lowest Allegro Prices from 150K Eans Collected

The Lowest Allegro Prices from 150K Eans Collected

Daily scraping of lowest prices for 150K products on Allegro.pl to support marketplace pricing and margin optimization.

Learn More about The Lowest Allegro Prices from 150K Eans Collected
Ralph Lauren Monitoring on Amazon, 8 Markets Scanned Into One Clean Dataset

Ralph Lauren Monitoring on Amazon, 8 Markets Scanned Into One Clean Dataset

Regular monitoring of Ralph Lauren clothing, footwear, and accessories sold across Amazon subdomains: AE, DE, ES, FR, IT, NL, PL, UK.

Learn More about Ralph Lauren Monitoring on Amazon, 8 Markets Scanned Into One Clean Dataset
Our Blog

Reads Our Latest News & Blog

Learn how to use web scraping to solve data problems for your organization

6 E-Commerce Sites Like eBay to Scrape in 2026

6 E-Commerce Sites Like eBay to Scrape in 2026

If you sell online, run a marketplace, or advise e-commerce clients, you already know why eBay matters: it’s one of the few places where big retailers compete side by side with thousands of small merchants and private sellers.

Top 8 E-commerce Websites to Scrape in 2026 (From Amazon to 1688)

Top 8 E-commerce Websites to Scrape in 2026 (From Amazon to 1688)

E-commerce teams do not just need “some” competitor data anymore. They need a continuous stream of real prices, discounts, stock levels, reviews, and seller behavior from the platforms that actually shape their markets.

How to Scrape Amazon Data: Benefits, Challenges & Best Practices

How to Scrape Amazon Data: Benefits, Challenges & Best Practices

Amazon provides valuable information gathered in one place: products, reviews, ratings, exclusive offers, news, etc. So scraping data from Amazon will help solve the problems of the time-consuming process of extracting data from e-commerce.

scrapeit logo

About ScrapeIt

ScrapeIt is a managed web scraping agency. We build the crawlers, run them, watch them, and repair them when a site changes underneath. You receive data on a schedule, in the format you asked for, without running any infrastructure yourself.

We are not affiliated with Yandex Market and we do not resell datasets. We collect public pages, scope each project to what a client actually needs, and say plainly when part of a scope is not viable instead of promising it and quietly delivering thin rows.

FAQ

Is there a public Yandex Market API for product and price data?

There is a Partner API, and it is a seller tool. It authorises with a token tied to a cabinet, addresses everything by businessId and campaignId, and covers your own assortment, prices, stocks, orders, reports and ad bids across the FBY, FBS, Express, DBS and LaaS models. It does not return a competitor's offer, a category listing, or the catalogue as a shopper sees it, and the buyer-facing content host that once served catalogue data is gone. Reading the market view means extracting the public storefront, which is what we do.

Which Yandex Market identifier should my rows be keyed on?

Keep all four. modelId is the model and its spec sheet, marketSku is the Market card for one configuration, oskuId is one merchant's SKU on that card, and wareId is the token for one live offer, which is also what the offer URL uses. Price, stock and delivery belong to the offer level; specs and the model rating belong above it. We store the whole stack on every row, together with businessId and shopId for the merchant, so a merged card or a swapped seller does not quietly rewrite your history.

Can you collect Yandex Market prices for more than one city?

Yes, and for price monitoring you should. The region rides in the session rather than in the URL, and it defaults to wherever the request appears to originate, so each city is a separate crawl with its own pinned region. Delivery quotes are computed for one address and one offer, so the arrival date shifts with the city as well. We run the same watchlist across the cities you name and stamp every row with region and capture time, which is the only thing that makes two rows comparable.

How often can the data refresh, and what formats do you deliver?

Daily is the usual cadence for price and stock, hourly works for a narrow watchlist, and weekly is enough for catalogue and category mapping. Output is CSV, JSON, XLSX or an API endpoint of ours, delivered to S3, to cloud storage, or straight into your database. Because we write dated snapshots instead of overwriting, a change in price, in the merchant on display, in the delivery promise or in stock reads as a series you can query rather than a value that silently replaced the last one.

Is scraping Yandex Market legal, and what do you not collect?

We collect public pages a signed-out visitor can see, at a polite rate, and we stay off the paths the site's robots file closes, including its internal endpoints and the buyer profile pages. We do not log in, so anything gated behind an account, including the extra discounts shown to signed-in users, is out of scope. Personal data is out of scope by default: reviewer and questioner names, their profiles and any contact details are not collected. Compliance in your own jurisdiction stays with you, and we scope the job to match.

How does it Work?

Step 1 - Make a Request

You share your needs, expectations, and desired timeframe. We’ll suggest the best solution based on your request and budget.

Step 2 - Configuring Custom Web Crawlers

Our specialists configure the crawlers and extract a sample dataset for your review before proceeding with the full-scale extraction.

Step 3 - Collect and Deliver

Once you approve the sample, we launch the project and start full data collection. We gather, filter, and structure the data for easy use, delivering it on time in your preferred format.

Step 4 - Maintain and Support

Our team manages ongoing processes, monitors website changes, and supports all data extraction cycles. We can also help integrate data into your systems or create dashboards to simplify analysis.

Request a Quote

Tell us more about you and your project information.
Which sites, which fields, how often. A couple of lines is enough.

We reply within 1 business day. No obligation.

scrapiet

Scrapeit Sp. z o.o.
10/208 Legionowa str., 15-099, Bialystok, Poland
NIP: 5423457175
REGON: 523384582