Magnit Market (mm.ru) Scraper
Pricing
from $3.00 / 1,000 results
Magnit Market (mm.ru) Scraper
Scrape Magnit Market (mm.ru / Магнит Маркет) - Russia's marketplace by Magnit. Search products, browse by category, fetch full product details (prices, ratings, stock, images, seller info, characteristics and SKUs), or pull real customer reviews.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Scrape mm.ru — Magnit Market (Магнит Маркет), the marketplace launched in May 2024 by Magnit, Russia's #2 grocery retailer, as the rebrand of KazanExpress. Search products, browse any category, pull full product detail pages (prices, ratings, stock, images, seller info, characteristics, SKU variants), list the category tree, or fetch real customer reviews — all without logging in or paying for a proxy.
What this actor does
- Five modes:
search,byCategory,productDetails,categoryTree,reviews - Search & browse: free-text search or full category listings, sortable by popularity/price/rating, with server-side price/rating/stock/adult filters
- Full product detail: description, characteristics, SKU variants with their own price/stock, seller info, delivery estimate, every photo, and up to 10 similar products
- Category discovery: the full mm.ru category hierarchy (or one branch) with per-category product counts, so you can find category IDs without guessing
- Customer reviews: star rating, review text, pros/cons, purchased variant, reviewer name, like/dislike counts, photos, seller replies, plus a full rating breakdown for the whole product
- Empty fields are omitted from every record — only fields mm.ru actually returned are included
Output per product (mode = search, byCategory)
productId— mm.ru product IDtitlepriceRub,oldPriceRub,isPromotion,discountPercentrating,reviewsCount,ratingsCount,ordersCountquantityAvailable,inStock,isLowStockisForAdultscatalogType,storeCode— mm.ru's internal listing classification and store/warehouse codemainImageUrl,imageUrls[]— up to 10 photosskuGroupId,skuIds[]— up to 30 variant SKU IDsnearestDeliveryDateproductUrl,sourceUrlrecordType: "product",scrapedAt
Output per product detail (mode = productDetails)
productId,title,description,shortDescriptioncategoryId,categoryTitle,categoryPath[]— full breadcrumb from root to this product's categorypriceRub,fullPriceRub,discountPercentrating,externalRating— mm.ru's own rating plus any imported (e.g. legacy KazanExpress) ratingordersCount,reviewsCount,reviewsPhotoCountmainImageUrl,imageUrls[]— up to 20 photosshopId,shopTitle,shopUrl,shopRating,shopOfficial,shopOrdersCount,shopReviewsCountcharacteristics[]— full spec table (name/valuepairs), grouped across SKU variantsquickSpecs[]— the short bullet-point highlights shown at the top of the product page (name/valuepairs)skus[]— every SKU variant:skuId,title,priceRub,fullPriceRub,availableAmount,characteristics[]nearestDeliveryDatesimilarProducts[]— up to 10 related items (unlessincludeSimilarProducts: false), each withproductId,title,priceRub,fullPriceRub,rating,reviewsCount,ordersCount,imageUrl,deliveryDate,categoryId,isAdultCategory,productUrlproductUrl,sourceUrlrecordType: "productDetail",scrapedAt
Output per review (mode = reviews)
reviewId,productIdratingreviewText— full review text;pros/consappear only on the (uncommon) reviews where the reviewer filled in those separate fieldsreviewDatereviewerName— shows***if the reviewer posted anonymously (mm.ru's own masking, not this actor's),isAnonymous,isEditedlikesCount,dislikesCountvariantCharacteristics[]— the purchased variant (e.g. color/size/model),name/valuepairsphotoUrls[]— review photossellerReply—content,shopName,date, present only if the seller repliedproductRatingBreakdown— 1-5 star histogram for the whole product (not just the returned subset)productReviewsTotal,productAvgRating— always reflect mm.ru's full review set for that product, regardless ofreviewsLimitproductUrlrecordType: "review",scrapedAt
Output per category (mode = categoryTree)
categoryId,titledepth— 0 for a top-level categoryparentPath[]— titles of every ancestor categoryproductAmountisLeaf— true if the category has no subcategories (directly usable as abyCategoryseed)isAdult,isEcocategoryUrl,sourceUrlrecordType: "category"
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | search | search / byCategory / productDetails / categoryTree / reviews |
searchQuery | string | – | Free-text query, e.g. iphone, ноутбук (mode=search) |
categoryId | string | – | Numeric category ID or category URL. Overrides rootCategory if both are set (mode=byCategory, categoryTree) |
rootCategory | string | – | Pick one of 20 built-in top-level categories (mode=byCategory, categoryTree) |
productIds | array | – | Product IDs or full product URLs (mode=productDetails, reviews) |
includeSimilarProducts | boolean | true | Add a similarProducts array (up to 10 related items) to each record (mode=productDetails) |
reviewsLimit | integer | 20 | Max reviews emitted per product ID, newest first (mode=reviews) |
sortBy | string | popularityDesc | Popularity / price / rating / newest / discount, asc or desc (mode=search, byCategory) |
cityId | integer | 1 | Delivery-city ID (affects delivery-date estimates only; mode=search, byCategory, productDetails) |
minPrice | integer | – | Minimum price in RUB (mode=search, byCategory) |
maxPrice | integer | – | Maximum price in RUB (mode=search, byCategory) |
minRating | number | – | Minimum rating, 0-5 (mode=search, byCategory) |
inStockOnly | boolean | false | Only emit in-stock products (mode=search, byCategory) |
excludeAdultItems | boolean | false | Skip 18+ flagged products (mode=search, byCategory) |
leafCategoriesOnly | boolean | false | Only emit categories with no subcategories (mode=categoryTree) |
maxItems | integer | 10 | Hard cap on emitted records (all modes) |
proxyConfiguration | object | AUTO group | Apify proxy configuration (all modes) |
Notes on filtering: minPrice/maxPrice/minRating/inStockOnly only exclude
products that actually carry the relevant field in mm.ru's response —
products missing price, rating, or stock-quantity data on the listing pass
the filter through unfiltered rather than being dropped, since they can't be
classified either way.
Sort note: sortBy is always sent to mm.ru's API as requested. Popularity,
price, and rating sorting are confirmed to reorder results server-side
(sponsored/promoted listings can still appear out of strict order — mm.ru's
own placement, not something this actor re-sorts). Newest and discount
sorting are accepted without an error but confirmed to have no effect —
mm.ru silently falls back to its default order for those two.
Example: search for a product
{"mode": "search","searchQuery": "iphone","sortBy": "priceAsc","inStockOnly": true,"maxItems": 20}
Example: browse a built-in category, filtered by price and rating
{"mode": "byCategory","rootCategory": "10004","minPrice": 1000,"maxPrice": 50000,"minRating": 4,"excludeAdultItems": true,"maxItems": 50}
Example: fetch full product details by URL
{"mode": "productDetails","productIds": ["https://mm.ru/product/2560933"],"includeSimilarProducts": true,"maxItems": 10}
Example: pull reviews for a product
{"mode": "reviews","productIds": ["2560933"],"reviewsLimit": 50,"maxItems": 50}
Example: discover category IDs
{"mode": "categoryTree","leafCategoriesOnly": true,"maxItems": 200}
Use cases
- Price monitoring — track a product line's prices and discounts over time
- Assortment research — pull every product in a category to analyze the catalog
- Competitive intelligence — compare seller ratings, stock levels, and pricing across a niche
- Catalog enrichment — fetch full spec sheets (characteristics, SKUs, images) for a known product list
- Category discovery — list the full category tree with per-category product counts to plan what to scrape next
- Voice of customer / sentiment analysis — pull real review text, star ratings, and pros/cons for a known product list
Other Russian marketplace actors by CrawlerBros
FAQ
Do I need an mm.ru account or cookies? No. Every mode uses mm.ru's own public web-app APIs with no login required.
Does this cost extra for proxy? No. mm.ru's APIs are reachable directly without a proxy; the actor uses the free Apify AUTO proxy group by default for resilience, at no extra cost.
Where do I find a category ID?
Run the actor once with mode=categoryTree to get every category ID, title,
and product count in one dataset. Or browse mm.ru, open a category, and copy
the number from the URL (https://mm.ru/category/10044 → ID is 10044). Or
pick one of the 20 built-in top-level categories via rootCategory.
Are prices in rubles?
Yes — priceRub and related fields are converted to whole rubles for you,
regardless of the currency unit mm.ru's own API happens to return internally.
Why do some products have no rating or priceRub field?
mm.ru simply doesn't return that data for every listing (e.g. brand-new
products with no reviews yet). This actor omits fields it can't populate
rather than sending misleading zeros or nulls.
Why does productRatingBreakdown not match the number of reviews returned?
It always reflects mm.ru's full review set for the product, not just the
subset emitted for a given run (capped by reviewsLimit/maxItems).
Is this affiliated with Magnit or mm.ru? No, this is an independent third-party actor that uses mm.ru's public APIs. It is not affiliated with, endorsed by, or sponsored by Magnit or mm.ru.
How fresh is the data? Every run fetches live data directly from mm.ru at the moment the actor runs — nothing is cached or pre-scraped.