# Wildberries Scraper (`mina_safwat/wildberries-scraper`) Actor

Scrapes Wildberries products by keyword, category or product link: prices in roubles, rating, reviews count, brand, seller, stock, sizes and images, with optional descriptions, characteristics and reviews.

- **URL**: https://apify.com/mina_safwat/wildberries-scraper.md
- **Developed by:** [Mina](https://apify.com/mina_safwat) (community)
- **Categories:** E-commerce, Marketing, Automation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Wildberries Scraper do?

**Wildberries Scraper** collects products from [Wildberries](https://www.wildberries.ru), the largest online marketplace in Russia and the CIS. Give it **search keywords**, **search, category, brand or seller links**, or **product links**, and it returns **one clean row per product**. Each row has the price and the price before discount in roubles (or tenge, Belarusian roubles, drams, sums or Kyrgyz soms), the rating, the number of reviews, stock, brand, seller, colours, sizes, category and image links.

Optionally it also adds each product's **description and characteristics table** and its **newest reviews**.

Because it runs on the Apify platform, you can call it through the API, schedule it (for example, daily price monitoring), connect it to Google Sheets, Make, Zapier or webhooks, and monitor every run.

### Why use Wildberries Scraper?

- **Price monitoring**: track your own or competitors' prices, discounts and stock every day.
- **Market research**: see which brands and sellers lead a category, and at what prices.
- **Assortment analysis**: compare ratings, review counts and characteristics across a whole category.
- **Seller and brand tracking**: export every product of a seller or brand in one run.
- **Review mining**: collect the newest reviews, with pros, cons and sellers' answers, for sentiment analysis.

### How to scrape Wildberries

1. Click **Try for free** (or **Start**) on this page.
2. Type one or more keywords into **Search keywords**, such as `чайник`, or paste links from wildberries.ru into **Wildberries links**.
3. Set **Max products per keyword or link** and, if you want, a sort order.
4. Turn on **Add description and characteristics** or **Add reviews** if you need them.
5. Click **Start**. When the run finishes, open the **Output** tab and download the data as JSON, CSV, Excel or HTML.

### Input

Fill in the fields on the **Input** tab, or pass JSON through the API. Every field is optional, but you need at least one keyword or link.

| Field | Type | Default | What it does |
|---|---|---|---|
| `searchQueries` | array of strings | `[]` | Keywords to search for, such as `чайник` or `iphone 17`. |
| `startUrls` | array of strings or `{"url": ...}` objects | `[]` | Product, search, category, brand or seller links from wildberries.ru, or bare product numbers. Links pasted without `https://` work too. |
| `maxProducts` | integer | `100` | Products to save for each keyword or listing link. Product links give one product each. |
| `sort` | string | `popular` | `popular`, `rate`, `priceup`, `pricedown`, `newly` or `benefit` (best deals). A link that has its own `sort=` keeps it. |
| `includeDetails` | boolean | `false` | Adds `description`, `characteristics`, `vendorCode`, `variantIds`, `cardCreatedAt` and `cardUpdatedAt`. |
| `includeReviews` | boolean | `false` | Adds `reviews`, the newest reviews of each product. |
| `maxReviewsPerProduct` | integer | `20` | Reviews to add per product (up to 1,000). |
| `currency` | string | `rub` | `rub`, `kzt`, `byn`, `amd`, `uzs` or `kgs`. |
| `dest` | integer | `-1257786` | Wildberries' delivery-region number. The default is Moscow. It affects stock and some prices. |

Supported links:

- Product: `https://www.wildberries.ru/catalog/8781920/detail.aspx`, the same link on wildberries.kz, .by, .am, .uz and other Wildberries sites, or just `8781920`
- Search: `https://www.wildberries.ru/catalog/0/search.aspx?search=чайник&sort=priceup`
- Category: `https://www.wildberries.ru/catalog/elektronika/smartfony-i-telefony/vse-smartfony`
- Brand: `https://www.wildberries.ru/brands/apple`
- Seller: `https://www.wildberries.ru/seller/33172`

Filters you set on Wildberries before copying a search, category, brand or seller link are kept: price range (`priceU`), subject (`xsubject`), brand, colour, rating and other `f…` filters.

```json
{
    "searchQueries": ["чайник"],
    "startUrls": [
        "https://www.wildberries.ru/brands/apple",
        { "url": "https://www.wildberries.ru/catalog/8781920/detail.aspx" }
    ],
    "maxProducts": 100,
    "sort": "popular",
    "includeDetails": true,
    "includeReviews": true,
    "maxReviewsPerProduct": 5
}
```

### Output

Each product is one row. Here is a real row, shortened (with details and reviews turned on):

```json
{
  "id": 164567025,
  "url": "https://www.wildberries.ru/catalog/164567025/detail.aspx",
  "name": "Чайник заварочный стеклянный жаропрочный 600мл",
  "brand": "CnGlass",
  "brandId": 30323,
  "sellerName": "CnGlass официальный магазин бренда",
  "sellerId": 33172,
  "sellerRating": 4.9,
  "price": 866,
  "walletPrice": 840,
  "originalPrice": 1400,
  "discountPercent": 38,
  "currency": "RUB",
  "rating": 5,
  "reviewsCount": 6758,
  "quantity": 50,
  "inStock": true,
  "colors": ["прозрачный"],
  "sizes": [],
  "categoryId": 2144,
  "category": "Чайники заварочные",
  "parentCategory": "Посуда и инвентарь",
  "imageUrls": ["https://basket-11.wbcontent.net/vol1645/part164567/164567025/images/big/1.webp"],
  "isNew": false,
  "rootId": 150901155,
  "position": 1,
  "sourceInput": "https://www.wildberries.ru/seller/33172",
  "description": "Откройте для себя эстетику чаепития с кухонной посудой от бренда cnglass! …",
  "characteristics": [{ "name": "Длина упаковки", "value": "13 см" }],
  "vendorCode": "H28",
  "variantIds": [164567025, 167800365, 541958553],
  "cardCreatedAt": "2023-06-08T09:41:03.845428Z",
  "cardUpdatedAt": "2026-10-14T21:04:14.429139Z",
  "reviews": [{
    "id": "1bgrS0yr4GVo0EfwydKw", "productId": 164567025, "rating": 5,
    "text": "Отличный чайник. Советую к покупке", "pros": null, "cons": null,
    "date": "2026-10-20T13:36:00.262Z", "color": "Прозрачный · 600 мл", "size": null,
    "likes": 0, "dislikes": 0, "photosCount": 0, "sellerAnswer": null
  }],
  "scrapedAt": "2026-10-20T15:13:34.571513+00:00"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### Data fields

| Field | Description |
|---|---|
| `id` | Wildberries product number (nm, "артикул"). |
| `url` | Product page on wildberries.ru. |
| `name`, `brand`, `brandId` | Product name, brand and brand number. |
| `sellerName`, `sellerId`, `sellerRating` | The seller's shop name, number and rating. |
| `price` | The price a buyer pays now with a bank card, in the chosen currency (not in kopecks). |
| `walletPrice` | The price when paying with WB Wallet. It is worked out from the wallet discount Wildberries offers visitors (3% in October 2026), rounded down to whole units like the site does. |
| `originalPrice` | The price before the discount. |
| `discountPercent` | Discount from `originalPrice` to `price`, in whole percent. |
| `currency` | `RUB`, `KZT`, `BYN`, `AMD`, `UZS` or `KGS`. |
| `rating` | Average review rating out of 5; `null` when there are no reviews. |
| `reviewsCount` | Number of ratings and reviews. Some ratings have no published review, so `reviews` can hold fewer items, or none. |
| `quantity`, `inStock` | Units in stock for the delivery region, as Wildberries shows them. Wildberries caps this number (at 50 in our tests), so 50 means "50 or more". |
| `colors` | Without details: Wildberries' broad colour family for the product (for example `белый`). With **Add description and characteristics**: the seller's own colour names (for example `черный`, `прозрачный`). |
| `sizes` | Size names (empty when the product has no sizes). |
| `categoryId`, `category`, `parentCategory` | Wildberries subject number and name, and its parent category. |
| `imageUrls` | Links to the full-size product photos. |
| `isNew` | Wildberries marks the product as new. |
| `rootId` | The product card group shared by all colour variants (imt id). |
| `position` | Place in the listing for the chosen sort (1 = first); `null` for product links. |
| `sourceInput` | The keyword or link that found the product. |
| `description`, `characteristics`, `vendorCode`, `variantIds`, `cardCreatedAt`, `cardUpdatedAt` | Only with **Add description and characteristics**. `variantIds` are the product numbers of all its colour variants. This option also replaces `colors` with the seller's colour names. |
| `reviews` | Only with **Add reviews**: the newest reviews with rating, text, pros, cons, date, colour and size bought, likes, dislikes, photo count and the seller's answer. `null` if the reviews could not be loaded. |
| `scrapedAt` | When the row was saved (ISO 8601, UTC). |

### How much does it cost to scrape Wildberries?

The Actor is billed **per product saved**; see the **Pricing** tab for the exact price. Inputs that return nothing (a typo, a removed product, an empty search) are never billed.

Platform costs are low: the Actor works over plain HTTP and only briefly starts a browser once per run to pass Wildberries' bot check, so it needs no paid proxy in normal operation. A run of 2,000 products took under a minute.

### Tips

- **Copy links from the site** to keep your filters: set a price range, brand or rating filter on wildberries.ru, then paste the address bar.
- **Lower `maxProducts`** for quick checks; each Wildberries page holds 100 products.
- **Reviews and details** add one or two requests per product, so leave them off when you only need prices. Without them a run saves thousands of products a minute; with details and reviews on, expect roughly 25–50 products a minute, depending on how fast Wildberries' file servers answer.
- **Stock and delivery depend on the region.** Change `dest` to scrape a different delivery address.
- **Use the spending limit**: if you set a maximum cost per run, the Actor stops cleanly once it is reached.
- Inputs that gave nothing are listed with the reason in the **FAILED_INPUTS** record of the run's key-value store.

### FAQ, disclaimers and support

**Is it legal to scrape Wildberries?** The Actor reads only public product information that anyone can see without logging in. You are responsible for using the data in line with Wildberries' terms and the laws that apply to you, such as data-protection and copyright law. The Actor does not log in and solves no CAPTCHA.

**Does it collect personal data?** Reviewers' names and ids are not saved. Review texts are public, but may still mention people; handle them with care.

**Why is a product missing?** Product links of removed products are listed in FAILED_INPUTS. If Wildberries stops answering partway through a long listing, the products saved so far are kept and FAILED_INPUTS notes that the input stopped early. A listing returns what Wildberries shows for that region and sort, and a product that also turned up under an earlier input is saved only once.

**Why is the price slightly different from what I see?** Wildberries shows two prices: the card price (`price`) and a lower price for paying with WB Wallet (`walletPrice`, about 3% less), and the site highlights the wallet price. Prices also depend on the delivery region (`dest`). Logged-in buyers can get extra personal discounts that the Actor cannot see.

**Something does not work?** Open an issue on the **Issues** tab with the input you used, and we will look into it. Need a custom Wildberries dataset? Ask there too.

# Actor input Schema

## `searchQueries` (type: `array`):

Words to search Wildberries for, one per line, such as чайник or iphone 17. Each keyword returns products in the order Wildberries shows them for the sort chosen below. Add keywords here, links below, or both.

## `startUrls` (type: `array`):

Links copied from wildberries.ru, one per line: a product (https://www.wildberries.ru/catalog/8781920/detail.aspx, or just its number 8781920), a search (https://www.wildberries.ru/catalog/0/search.aspx?search=чайник), a category (https://www.wildberries.ru/catalog/elektronika/smartfony-i-telefony/vse-smartfony), a brand (https://www.wildberries.ru/brands/apple) or a seller (https://www.wildberries.ru/seller/33172). Filters and the sort order in a search, category or brand link are kept. Product links from wildberries.kz, .by, .am, .uz and other Wildberries sites work too.

## `maxProducts` (type: `integer`):

Stops each keyword, search, category, brand or seller after this many products. Wildberries pages hold 100 products each. Product links always give one product each.

## `sort` (type: `string`):

The order for keywords and listing links. A link that already has a sort order (…\&sort=priceup) keeps its own.

## `includeDetails` (type: `boolean`):

Adds each product's description, characteristics table, vendor code, the ids of its other colour variants, and when its card was created. Slightly slower: one more request per product.

## `includeReviews` (type: `boolean`):

Adds the newest reviews of each product (rating, text, pros, cons, date, colour and size bought, likes and the seller's answer). Reviewers' names are not saved. Wildberries shares reviews across all colour variants of a product.

## `maxReviewsPerProduct` (type: `integer`):

How many of the newest reviews to add to each product when reviews are on. Wildberries publishes up to about 1,000 per product.

## `currency` (type: `string`):

The currency prices are shown in, as on the matching Wildberries country site.

## `dest` (type: `integer`):

Wildberries' number for the delivery address, which decides stock, delivery and some prices. The default, -1257786, is Moscow. To use another address, open wildberries.ru, choose the address, and copy the dest=… number from any request the page makes.

## Actor input object example

```json
{
  "searchQueries": [
    "чайник"
  ],
  "startUrls": [],
  "maxProducts": 20,
  "sort": "popular",
  "includeDetails": false,
  "includeReviews": false,
  "maxReviewsPerProduct": 20,
  "currency": "rub",
  "dest": -1257786
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "чайник"
    ],
    "maxProducts": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("mina_safwat/wildberries-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQueries": ["чайник"],
    "maxProducts": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("mina_safwat/wildberries-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "чайник"
  ],
  "maxProducts": 20
}' |
apify call mina_safwat/wildberries-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mina_safwat/wildberries-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/nyIUrL8SOqQ7V2P7V/builds/Kx9SCPee5zJ6Zj1rO/openapi.json
