# Wildberries Product Reviews Scraper (`stealth_mode/wildberries-product-reviews-scraper`) Actor

Extract comprehensive product reviews from Wildberries.ru, Russia's largest e-commerce marketplace. Scrape ratings, text reviews, pros/cons, size accuracy, photos, videos, and user interactions. Perfect for market research, product analytics, and competitive intelligence in the Russian retail market

- **URL**: https://apify.com/stealth\_mode/wildberries-product-reviews-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 4 total users, 3 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Wildberries Product Reviews Scraper: Extract Customer Feedback Data

### Understanding Wildberries Reviews and Their Business Value

Wildberries.ru dominates Russian e-commerce with millions of product listings and customer reviews. Product review pages contain rich feedback data: detailed text reviews, structured pros/cons, matching assessments (size, photo, description accuracy), multimedia content (photos, videos), and community engagement (votes, helpfulness ratings).

This data reveals product quality perception, common complaints, feature preferences, and sizing accuracy—critical for sellers optimizing listings, brands monitoring reputation, and researchers analyzing consumer sentiment in Russian markets. Manual collection across hundreds of products is impractical; this scraper automates extraction into structured datasets.

### What This Scraper Extracts

The scraper processes product review page URLs (format: `wildberries.ru/catalog/[PRODUCT_ID]/feedbacks`) and extracts comprehensive review data:

**Review Content:** Full text reviews, structured pros/cons, product matching assessments (size, photo, description accuracy), color and size purchased.

**User Data:** Reviewer IDs (global and Wildberries-specific), user profile details for credibility assessment.

**Ratings & Metrics:** Product valuation (star rating), votes (helpful/unhelpful), helpfulness score, rank within reviews.

**Media:** Attached photos and videos showing actual product usage and quality.

**Metadata:** Review ID, creation/update dates, answer status (seller responses), parent feedback ID (reply threads), exclusion flags, classification tags.

**Moderation Data:** Status ID, rejection reasons, helping identify filtered or disputed reviews.

**Target Users:** E-commerce sellers optimize listings using size accuracy data and common complaints. Brands monitor reputation and respond to feedback. Market researchers analyze sentiment trends across products/categories. Competitive intelligence teams benchmark competitor products. Product managers identify improvement priorities from structured pros/cons.

### Input Configuration

**Example:**

```json
{
  "urls": ["https://www.wildberries.ru/catalog/387458057/feedbacks"],
  "ignore_url_failures": true,
  "max_items_per_url": 50
}
````

**urls:** Array of product review page URLs. Each URL must follow format `https://www.wildberries.ru/catalog/[PRODUCT_ID]/feedbacks`. Collect product IDs from search results or category browsing, then append `/feedbacks`. Can process multiple products in single run.

**ignore\_url\_failures:** Set `true` for batch processing—failed URLs won't stop scraping. Essential when processing 50+ products where some may be removed or restricted. Set `false` only if every URL must succeed.

**max\_items\_per\_url:** Maximum reviews per product (default: 20). Wildberries displays reviews paginated; setting higher values (50-100) captures more feedback per product. Balance data volume against runtime—100 reviews per product across 50 products requires significant processing.

### Output Structure and Field Definitions

**Sample Output:**

```json
{
  "id": "uJQqkOlXegawnAJ1Q9rA",
  "global_user_id": "ykLMDLA9Tr6kHvNVE8E0+/wIE9bRVj0k4xL0St65Ffbj",
  "wb_user_id": 0,
  "wb_user_details": {
    "country": "ru",
    "name": "Людмила",
    "has_photo": false
  },
  "nm_id": 387453515,
  "text": "",
  "pros": "Телефон очень хороший  спасибо",
  "cons": "",
  "matching_size": "",
  "matching_photo": "",
  "matching_description": "",
  "product_valuation": 5,
  "color": "Синий · 64 ГБ",
  "size": "0",
  "created_date": "2026-05-05T14:22:53Z",
  "updated_date": "2026-05-05T16:50:36.311937020Z",
  "answer": {
    "text": "Благодарим за отзыв — это помогает становиться лучше!",
    "state": "wbRu",
    "last_update": null,
    "create_date": "2026-05-05T15:20:05Z",
    "reject_reason": null,
    "metadata": {
      "edit_text": "",
      "edit_reject_reason": 0
    }
  },
  "feedback_helpfulness": null,
  "video": null,
  "votes": {
    "pluses": 0,
    "minuses": 0
  },
  "rank": 1034.0,
  "status_id": 16,
  "reasons": {
    "good": [],
    "bad": []
  },
  "parent_feedback_id": null,
  "excluded_from_rating": {
    "is_excluded": true,
    "reasons": [
      "hasIncludedChild"
    ]
  },
  "tags": null,
  "from_url": "https://www.wildberries.ru/catalog/387458057/feedbacks?imtId=378736899&size=562024885"
}
```

**ID:** Unique review identifier within Wildberries system. **Use:** Tracking specific reviews, avoiding duplicates, referencing in databases.

**Global User ID / WB User ID:** Reviewer identifiers across Wildberries platform. **Use:** Analyzing reviewer behavior patterns, identifying power reviewers, detecting fake reviews.

**WB User Details:** Profile information including name, verification status, review count. **Use:** Assessing reviewer credibility, weighting reviews by user reputation.

**NM ID:** Product nomenclature ID (internal Wildberries product identifier). **Use:** Linking reviews to products, cross-referencing with product catalogs.

**Text:** Full review content in Russian. **Use:** Sentiment analysis, keyword extraction, natural language processing for themes.

**Pros / Cons:** Structured positive and negative aspects. **Use:** Quick identification of strengths/weaknesses, feature prioritization, comparison matrices.

**Matching Size / Matching Photo / Matching Description:** Boolean or rating fields indicating accuracy of size chart, product photos, and description. **Use:** Critical for clothing/footwear sellers—identifies if items run large/small, photos misrepresent products.

**Product Valuation:** Star rating (typically 1-5). **Use:** Quantitative quality metric, filtering reviews by satisfaction level.

**Color / Size:** Specific variant purchased. **Use:** Identifying quality variations across SKUs, size-specific issues (e.g., "Large fits like Medium").

**Created Date / Updated Date:** Review timestamps. **Use:** Tracking feedback velocity, seasonal patterns, identifying recent vs. old reviews.

**Answer:** Seller/brand response to review. **Use:** Monitoring response rates, analyzing resolution strategies, competitive benchmarking of customer service.

**Feedback Helpfulness:** Community rating of review usefulness. **Use:** Filtering most valuable reviews, identifying trusted reviewers.

**Video:** Attached video content URLs. **Use:** Visual quality assessment, unboxing experiences, usage demonstrations.

**Votes:** Upvotes/downvotes from community. **Use:** Identifying most impactful reviews, detecting manipulation (abnormal vote patterns).

**Rank:** Review position in sorting algorithm. **Use:** Understanding Wildberries' review prioritization logic.

**Status ID / Reasons:** Moderation status and rejection reasons. **Use:** Identifying censored reviews, understanding platform policies, detecting suspicious patterns.

**Parent Feedback ID:** Links replies to original reviews. **Use:** Threading conversations, analyzing seller engagement depth.

**Excluded From Rating:** Flag if review doesn't count toward product rating. **Use:** Identifying filtered or disputed feedback affecting aggregate scores.

**Tags:** Classification labels (verified purchase, promotional, etc.). **Use:** Segmenting review types, filtering authentic feedback.

### Implementation Guide

1. **Collect Product URLs:** Browse Wildberries, identify target products, copy product IDs, construct review URLs: `wildberries.ru/catalog/[ID]/feedbacks`
2. **Configure Input:** Add URLs to array, set `max_items_per_url` based on needs (20 for quick scan, 100+ for deep analysis)
3. **Run Scraper:** Monitor progress—50 products with 50 reviews each typically completes in 5-10 minutes
4. **Export Data:** JSON for databases, CSV for spreadsheet analysis
5. **Handle Russian Text:** Ensure UTF-8 encoding when exporting to preserve Cyrillic characters

### Strategic Applications

**Size Chart Optimization:** Aggregate `matching_size` scores across reviews to identify if products run large/small. Update size charts reducing returns.

**Photo Quality Improvement:** Low `matching_photo` scores indicate misleading images. Prioritize photography updates for these products.

**Sentiment Trends:** Track review sentiment over time—declining scores signal quality issues or increased competition.

**Competitive Benchmarking:** Compare your products' pros/cons against competitors' reviews for same category.

**Fake Review Detection:** Analyze vote patterns, user profiles, and timing—clusters of 5-star reviews from new accounts with generic text indicate manipulation.

**Customer Service ROI:** Measure `answer` response rates and subsequent review updates to quantify engagement impact.

### Best Practices

**Schedule Regular Scraping:** Weekly scraping tracks review accumulation, identifies emerging issues early.

**Cyrillic Text Processing:** Use proper NLP tools for Russian language—standard English sentiment analyzers fail. Consider Yandex ML services.

**Focus on Matching Scores:** For fashion/apparel, `matching_size` is more actionable than star ratings—directly impacts return rates.

**Filter Verified Purchases:** Use `tags` to prioritize verified buyer reviews over promotional or incentivized feedback.

**Monitor Excluded Reviews:** High `excluded_from_rating` counts may indicate seller gaming ratings—competitive intelligence opportunity.

### Conclusion

The Wildberries Product Reviews Scraper transforms Russia's largest e-commerce review database into actionable intelligence. From size accuracy optimization to sentiment analysis, structured review data drives product improvements, competitive positioning, and customer satisfaction in Russian markets.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the product reviews urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.wildberries.ru/catalog/387458057/feedbacks"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# 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 = {
    "urls": [
        "https://www.wildberries.ru/catalog/387458057/feedbacks"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/wildberries-product-reviews-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 = {
    "urls": ["https://www.wildberries.ru/catalog/387458057/feedbacks"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

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

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

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

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.wildberries.ru/catalog/387458057/feedbacks"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/wildberries-product-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=stealth_mode/wildberries-product-reviews-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Wildberries Product Reviews Scraper",
        "description": "Extract comprehensive product reviews from Wildberries.ru, Russia's largest e-commerce marketplace. Scrape ratings, text reviews, pros/cons, size accuracy, photos, videos, and user interactions. Perfect for market research, product analytics, and competitive intelligence in the Russian retail market",
        "version": "0.0",
        "x-build-id": "y0nbB67kK0tpjbV7d"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~wildberries-product-reviews-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-wildberries-product-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/stealth_mode~wildberries-product-reviews-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-wildberries-product-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/stealth_mode~wildberries-product-reviews-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-wildberries-product-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "urls": {
                        "title": "URLs of the product reviews urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the product reviews urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
