How to Scrape Wildberries Listings for Regional Price Research
A Wildberries price observation needs a delivery region attached to it. Otherwise, a later change might reflect a different regional context rather than a change in the offer you meant to track.
The Wildberries Listings Scraper collects category or keyword results with prices, stock signals, brand, seller, and ratings. I maintain this Apify Actor. Optional detail and review collection add richer fields and separate charges. This guide starts with a small, fixed-region phone search.

Fix the delivery region and search scope
Use searchQueries for free-text keywords or categoryUrls for Wildberries category pages. Supply at least one source. Category URLs are resolved against the site's category tree, so copy an actual category path rather than guessing one from its display name.
The dest field is a delivery-region ID. Its documented default, -1257786, targets the Moscow region. Keep the same value across price comparisons and save it alongside the output; the published product sample does not include a separate region field.
Open the Actor on Apify, select Input, choose JSON, and enter:
{
"searchQueries": ["iphone"],
"maxItems": 20,
"maxPagesPerList": 1,
"dest": "-1257786",
"sort": "popular",
"enrichDetails": false,
"scrapeReviews": false,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "RU"
}
}
Click Start, then inspect several output rows after completion. The deployed proxy default recommends residential proxies in Russia for larger runs because Wildberries can rate-limit individual IPs. Check that configuration and your account usage before expanding collection.
maxItems is the total product-record cap. maxPagesPerList limits pages per category or search, from one to 100. Zero for maxItems removes your item cap, but not the site's approximate 100-page or 10,000-product limit per list. It is not an unlimited marketplace export.
Check the actual model before comparing prices
Output includes id, url, name, brand, supplier, supplierRating, rating, reviewsCount, priceBasic, priceSale, currency, inStock, totalQuantity, colors, and sizes where available.
The historical README example has priceBasic: 148100, priceSale: 114925, and currency: "RUB". Preserve both price fields and their labels. The higher reference value is not an independent historical observation, and the sale value is not proof of a completed transaction.
A broad iPhone search can mix model generations, storage capacities, SIM configurations, accessories, and conditions. Check the title and source page before including a row in your target model's comparison. If exact specifications are unclear, enable details for a small run and inspect characteristics rather than assuming every match is the same device.

Stock fields are observations for the source and region. A positive totalQuantity should not be treated as a complete supplier inventory across every warehouse or region. Keep size-level availability separate from a general inStock flag if variants matter.
Add specifications and reviews for different questions
Set enrichDetails to true for the full product card, including documented fields such as description, characteristics, category, categoryRoot, vendorCode, and imageUrls.
Set scrapeReviews to true only when your question needs review content. maxReviewsPerProduct defaults to twenty and limits the review sample for each product. The overall reviewsCount can be much larger than the number of review objects returned.
For a specification comparison, details may be useful while reviews are unnecessary. For a product-quality reading queue, retain review rating, text, and date, then read the sample for recurring issues. Do not call twenty selected reviews a representative estimate of all customers' experiences, and do not infer authenticity from a single positive review.
The documented input does not expose direct product IDs or product-page URLs for selective enrichment. If you repeat a search with richer options, match by product ID and expect search contents to change. The second run is not guaranteed to contain precisely the original twenty products.
Build a regional monitoring table
Export CSV for prices and JSON for nested specifications, sizes, or reviews. Keep ID, URL, name, supplier, both prices, currency, stock signals, source, and scrapedAt. Add dest, sort setting, and search query from your saved input.
Deduplicate product IDs within each observation. Add reviewed model, capacity, configuration, and condition columns, then exclude mismatches from the comparison. Keep missing prices as missing and retain records with incomplete specifications in a separate review queue.
For each later run, join on product ID and region. Calculate price differences only for matching variants and comparable observations. Distinguish “newly observed” from “new product,” and “not observed” from “out of stock.” A limited popularity-sorted search can drop a product simply because its ranking changed.
If you investigate a stock change, open the source page for the same region and selected size. If several products change together, check that dest and the search inputs stayed constant before interpreting the movement as a market event.
Account for additive event fees
Prices as of September 6, 2026 are $0.001 per listing, an additional $0.004 per enriched product, and $0.003 per product with returned reviews when reviews are enabled. These are per-product events; the review charge is not multiplied by the number of review objects.
Twenty basic products cost $0.02 in result events. If all twenty receive details, the total becomes $0.10. If all twenty also return reviews, it becomes $0.16. The active event configuration includes a start charge of $0.00005 per GB of allocated memory, minimum one event, despite the README's older no-start-fee claim.
Check live pricing, proxy usage, and separately billed resources before larger runs. For 429 responses, inspect rate-limit messages and proxy setup. For an empty category result, verify the category URL before replacing it with a broader crawl.
The Wildberries Node.js example supports repeat exports after you have confirmed the regional comparison logic.
Frequently asked questions
Why can a price differ from the one I see in my browser?
The Actor uses the delivery-region ID in dest, and prices or stock can vary by region. Compare the same product and regional context before treating a difference as an extraction error.
Does maxItems set the number of reviews?
No. maxItems caps product records. maxReviewsPerProduct limits the nested review sample for each product when scrapeReviews is enabled.
Are details and reviews included in the base listing fee?
No. Detail enrichment and returned reviews have additional per-product events. The review fee is per product with returned reviews, not per individual review.
