# Wildberries Niche Analyzer: аналитика ниш WB (`getascraper/wildberries-niche-analyzer`) Actor

Analyze any Wildberries (Вайлдберриз) keyword or category as a market: seller and brand counts, competition concentration (HHI), price min/avg/median/max, rating and review distributions, and in-stock rate. One aggregate row per niche for product research and competitor analysis.

- **URL**: https://apify.com/getascraper/wildberries-niche-analyzer.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** E-commerce, SEO tools, Automation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 niche reports

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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 Niche Analyzer: аналитика ниш WB

<table width="100%">
<tr>
<td colspan="3" style="padding:14px 18px;background:#FCF0F8;border-top:3px solid #CB11AB;border-left:1px solid #D6D3D1;border-right:1px solid #D6D3D1;border-radius:8px 8px 0 0">
<span style="font-size:16px;font-weight:700;color:#1C1917">Analyze any Wildberries keyword as a market, not a product list.</span> <span style="font-size:15px;color:#57534E">One aggregate row per niche: seller and brand counts, competition concentration, the ruble price band, ratings, and review demand. Built for sellers deciding where to compete.</span>
</td>
</tr>
<tr>
<td colspan="3" style="padding:10px 14px;background:#481173;border-left:1px solid #D6D3D1;border-right:1px solid #D6D3D1">
<span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">Wildberries (Вайлдберриз) suite</span>
<span style="color:#E9D5F5;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Products, sellers, reviews, prices, resale, and niche analysis</span>
</td>
</tr>
<tr>
<td style="padding:10px 12px;border-left:1px solid #D6D3D1;border-bottom:1px solid #D6D3D1;vertical-align:top;width:33%;background:#FFFFFF">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-JwB0sO103gYe6olyU-dIx4X28OiJ-unnamed_%288%29.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/getascraper/wildberries-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Product&nbsp;Search</a></span><br>
<span style="color:#57534E;font-size:11px">Products, prices, and full catalogs</span>
</td>
<td style="padding:10px 12px;border-left:1px solid #D6D3D1;border-bottom:1px solid #D6D3D1;vertical-align:top;width:33%;background:#FFFFFF">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-KklTEyojMBQdURMlq-1YwVQHxMgT-ChatGPT_Image_Jun_30__2026__12_54_51_AM.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/getascraper/wildberries-seller-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Seller&nbsp;Scraper</a></span><br>
<span style="color:#57534E;font-size:11px">Supplier intel and shop stats</span>
</td>
<td style="padding:10px 12px;border-left:1px solid #D6D3D1;border-bottom:1px solid #D6D3D1;border-right:1px solid #D6D3D1;vertical-align:top;width:33%;background:#FFFFFF">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-5Ku4BeT57obDsJsr3-ftYcePUkiR-ChatGPT_Image_Jun_30__2026__12_54_51_AM.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/getascraper/wildberries-reviews-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Reviews&nbsp;Scraper</a></span><br>
<span style="color:#57534E;font-size:11px">Ratings, text and buyer photos</span>
</td>
</tr>
<tr>
<td style="padding:10px 12px;border-left:1px solid #D6D3D1;border-bottom:1px solid #D6D3D1;vertical-align:top;width:33%;background:#FFFFFF;border-radius:0 0 0 8px">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-1Wf4WDOdWp3xcdl92-yYOLVIowak-ChatGPT_Image_Jun_30__2026__12_54_51_AM.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/getascraper/wildberries-price-tracker" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Price&nbsp;Tracker</a></span><br>
<span style="color:#57534E;font-size:11px">Price and search-rank monitoring</span>
</td>
<td style="padding:10px 12px;border-left:1px solid #D6D3D1;border-bottom:1px solid #D6D3D1;vertical-align:top;width:33%;background:#FFFFFF">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-Ppxb8VzzVqh9OdepJ-icwkT1wybp-ChatGPT_Image_Jun_30__2026__12_54_51_AM.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/getascraper/wildberries-resale-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Resale&nbsp;Scraper</a></span><br>
<span style="color:#57534E;font-size:11px">Resale and secondhand listings</span>
</td>
<td style="padding:10px 12px;border-left:1px solid #D6D3D1;border-bottom:1px solid #D6D3D1;border-right:1px solid #D6D3D1;vertical-align:top;width:33%;background:#F3E8FF;border-radius:0 0 8px 0">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-R0wWPjk9ItyrICO4Z-XpZYDPVzJv-ChatGPT_Image_Jun_30__2026__12_54_51_AM.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/getascraper/wildberries-niche-analyzer" style="color:#7B1FA2;text-decoration:none;font-weight:700;font-size:13px">Niche&nbsp;Analyzer</a></span><br>
<span style="color:#7B1FA2;font-size:11px;font-weight:700">&#10148; You are here</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td style="padding:24px 28px;background:#F5F3FF;border:1px solid #DCC9F5;border-top:4px solid #6C2BD9;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">See how crowded a Wildberries niche is before you source inventory</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Give the Actor a shortlist of keywords and get one market-summary row for each: how many sellers compete, how tightly they hold the niche, the ruble price band, ratings, and review demand. The research you would pay an analytics subscription for, on demand.</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #DCC9F5;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#7B1FA2">🧭 One row per niche</span><br>
<span style="font-size:12px;color:#57534E">Each keyword comes back as a single market summary, not a catalog to sort yourself.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #DCC9F5;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#7B1FA2">🧮 Competition, scored</span><br>
<span style="font-size:12px;color:#57534E">A 0 to 10000 concentration index shows how many sellers already own the niche.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #DCC9F5;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#7B1FA2">🏷️ Ruble price band</span><br>
<span style="font-size:12px;color:#57534E">Minimum, average, median, and maximum price show you where the market sits.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #DCC9F5;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#7B1FA2">📈 Ratings and demand</span><br>
<span style="font-size:12px;color:#57534E">Average ratings and total review counts flag the quality bar and buyer interest.</span>
</td>
</tr>
</table>

Turn a Wildberries (Вайлдберриз) keyword into a market verdict. Instead of a pile of products to sort, the Niche Analyzer samples the live search results for each keyword and returns one aggregate row that scores the niche on competition, price, and demand. It runs on the Apify platform with API access, scheduling, integrations (Make, Zapier, Google Sheets), proxy rotation, and run monitoring built in.

### 🔍 What does Wildberries Niche Analyzer do?

Give it a list of keywords, in Russian or English, and it returns one market-summary row per keyword. Each row tells you how contested the niche is and how much demand it carries:

- **Competition and saturation** - distinct seller count, brand count, a seller concentration index (0 to 10000), the top seller's share, and the biggest sellers and brands by name.
- **Price band** - minimum, average, median, and maximum price in rubles, so you know where the market sits.
- **Quality bar** - the average rating incumbents have earned and the share of products that carry ratings.
- **Demand signal** - the cumulative reviews products in the niche have collected. This is a demand proxy, not a sales or revenue estimate.
- **Availability** - the share of sampled products currently in stock.

This is the sibling of the [Wildberries Scraper](https://apify.com/getascraper/wildberries-scraper), which returns one row per product. The Niche Analyzer returns one row per market, so you can compare a whole shortlist of niches side by side and decide where to compete.

<table width="100%"><tr>
<td style="padding:12px 18px;background:#F5F3FF;border-left:4px solid #6C2BD9">
<span style="font-size:15px;color:#1C1917">&#9889; <b>Research a niche before you spend on inventory.</b> No account or login needed. Compare a full shortlist of keywords in one run and see where you still have room to compete.</span>
</td>
</tr></table>

### 💡 Why use Wildberries Niche Analyzer?

- **I am a new Wildberries seller** comparing ten product niches at once to pick the one with the fewest entrenched sellers, so I commit my first inventory budget where I actually have room to rank.
- **I am a reseller sourcing from wholesalers** checking the price band and in-stock rate of a niche before I place a bulk order, so I never stock a category that is already a price war.
- **I am an established seller expanding my range** scanning adjacent keywords for the ones where the top few sellers do not already own most of the shelf, so I grow into markets I can still win.
- **I am a marketplace consultant** running a client's keyword shortlist every week to show concentration, pricing, and review demand side by side, so my niche recommendations are backed by numbers instead of hunches.

### 🚀 How to use Wildberries Niche Analyzer

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#F5F3FF;border:1px solid #DCC9F5;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#6C2BD9;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Add your keywords</span><br>
<span style="font-size:12px;color:#57534E">Paste the niches you are weighing up, in Russian or English, one per line.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F5F3FF;border:1px solid #DCC9F5;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#6C2BD9;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Pick depth and region</span><br>
<span style="font-size:12px;color:#57534E">Choose how many products to sample per niche and which warehouse region to price against.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F5F3FF;border:1px solid #DCC9F5;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#6C2BD9;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Read the verdict</span><br>
<span style="font-size:12px;color:#57534E">Run it and download one comparison-ready row per niche as JSON, CSV, or Excel.</span>
</td>
</tr>
</table>

### ⚙️ Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `keywords` | array of strings | Yes | Product keywords or niches to analyze, in Russian or English (for example `робот пылесос` or `wireless earbuds`). Each keyword returns one aggregate market-summary row. |
| `maxProductsPerQuery` | integer | No | How many products to sample per keyword before aggregating, from 100 to 5000. Defaults to 300, the top three result pages a shopper actually sees. |
| `priceMinRub` | integer | No | Optional price-band floor in rubles. Analyze only products at or above this price, to size up one segment such as premium models. Leave blank for the whole niche. A narrow band may need a larger sample size. |
| `priceMaxRub` | integer | No | Optional price-band ceiling in rubles. Analyze only products at or below this price. Combine with the minimum to focus on a single price tier of the market. |
| `sort` | enum | No | Which Wildberries result ordering to sample. Popular, the default, reflects what a real shopper sees first. |
| `topN` | integer | No | How many of the biggest sellers and brands to list in each niche row, ranked by product count. Defaults to 5. |
| `region` | enum | No | Warehouse region used for localized pricing and availability, from Moscow to Kazakhstan. Defaults to Moscow and Central. |
| `debugLogging` | boolean | No | Turn on verbose per-niche tracing in the run log. Defaults to false. |
| `proxyConfiguration` | object | No | Proxy settings. A proxy is required, and the shared datacenter group works reliably out of the box. |

### 📦 Output

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. Each row is one niche:

```json
{
  "query": "робот пылесос",
  "queryType": "keyword",
  "region": "MOSCOW",
  "productsAnalyzed": 300,
  "sellerCount": 87,
  "brandCount": 54,
  "sellerConcentrationHHI": 642,
  "topSellerSharePct": 18.3,
  "topSellers": [
    { "id": 1234567, "name": "ООО Техно Импорт", "productCount": 55, "sharePct": 18.3 },
    { "id": 2345678, "name": "Smart Home Store", "productCount": 41, "sharePct": 13.7 }
  ],
  "topBrands": [
    { "name": "Xiaomi", "productCount": 48 },
    { "name": "Dreame", "productCount": 33 }
  ],
  "priceMin": 4990,
  "priceMax": 89990,
  "priceAvg": 27340,
  "priceMedian": 23990,
  "avgRating": 4.6,
  "ratedProductsPct": 92.0,
  "totalFeedbacks": 184230,
  "avgFeedbacks": 614,
  "medianFeedbacks": 212,
  "inStockPct": 88.7,
  "scrapedAt": "2026-07-17T09:30:00Z"
}
````

### 📊 Output data fields

| Field | Type | Description |
| --- | --- | --- |
| `query` | string | The keyword or niche this row summarizes. |
| `queryType` | string | How the niche was requested. Currently `keyword` for every row. |
| `region` | string | The warehouse region the pricing and availability reflect. |
| `productsAnalyzed` | number | How many products were sampled to build this row. |
| `sellerCount` | number | Number of distinct sellers found across the sample. |
| `brandCount` | number | Number of distinct brands found across the sample. |
| `sellerConcentrationHHI` | number | Seller concentration on a 0 to 10000 Herfindahl scale. Higher means a few sellers dominate the niche. |
| `topSellerSharePct` | number | Share of the sample held by the single largest seller, as a percentage. |
| `topSellers` | array | The biggest sellers by product count, each with `id`, `name`, `productCount`, and `sharePct`. |
| `topBrands` | array | The biggest brands by product count in the sample. |
| `priceMin` | number | Lowest product price in the sample, in rubles. |
| `priceMax` | number | Highest product price in the sample, in rubles. |
| `priceAvg` | number | Average product price across the sample, in rubles. |
| `priceMedian` | number | Median product price across the sample, in rubles. |
| `avgRating` | number | Average star rating across rated products, from 1 to 5. |
| `ratedProductsPct` | number | Percentage of sampled products that carry at least one rating. |
| `totalFeedbacks` | number | Cumulative lifetime review count across the sample. A demand proxy, not a sales figure. |
| `avgFeedbacks` | number | Average review count per product in the sample. |
| `medianFeedbacks` | number | Median review count per product in the sample. |
| `inStockPct` | number | Percentage of sampled products currently in stock. |
| `scrapedAt` | string | When the niche was analyzed, in ISO 8601 format. |

### 💰 Pricing

This Actor uses pay-per-result pricing, billed per niche row saved to your dataset. Each keyword you submit becomes one row. There are no monthly subscriptions and no fixed fees, and empty runs cost nothing.

### ⭐ Enjoying Wildberries Niche Analyzer?

<table width="100%">
<tr>
<td style="padding:20px 24px 14px;background:#F1EAFB;border:1px solid #DCC9F5;border-left:5px solid #6C2BD9;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Turning a keyword shortlist into a clear niche verdict, without a monthly analytics subscription?</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other Wildberries sellers and resellers researching niches find it. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#6C2BD9;border:1px solid #DCC9F5;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/wildberries-niche-analyzer/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### ✨ Tips

- Put your whole shortlist in one run so the niches line up side by side in a single sheet.
- Raise `maxProductsPerQuery` for broad keywords where 300 products only cover the first few pages.
- Set `priceMinRub` and `priceMaxRub` to analyze only the price segment you plan to sell in, and raise the sample size if the band is narrow.
- Read a low concentration index as an open, fragmented niche, and a high one as a market a few sellers already hold.
- Pick the `region` closest to your buyers, since pricing and availability shift by warehouse.
- Once you pick a niche, use the sibling [Wildberries Scraper](https://apify.com/getascraper/wildberries-scraper) to pull the actual product listings inside it.

### ❓ FAQ

##### Как проанализировать нишу на Wildberries?

Add the keywords for the niches you are weighing up, then run the Actor. It samples the live Wildberries search results for each keyword and returns one row with the seller count, competition concentration, price band, ratings, and review demand, so you can compare niches and decide which to enter.

##### Does it estimate sales or revenue?

No. The `totalFeedbacks` field is the cumulative number of reviews products in the niche have collected over their lifetime. It is a demand proxy that shows how much buyer engagement a niche carries, not a sales count or a revenue figure. Wildberries does not publish sales, so this Actor never guesses at them.

##### Чем это отличается от парсера товаров Wildberries?

The [Wildberries Scraper](https://apify.com/getascraper/wildberries-scraper) returns one row per product, which is what you want for catalogs and price monitoring. The Niche Analyzer returns one aggregate row per keyword, which is what you want to size up and compare markets before you source inventory.

##### Do I need a proxy, and will it get blocked?

A proxy is required, and the shared datacenter group is the default and works reliably out of the box. Wildberries rate-limits direct requests, so the Actor retries through rotating proxies. If datacenter degrades at scale, you can switch the proxy input to residential.

### 🔗 Other actors

- [Wildberries Scraper](https://apify.com/getascraper/wildberries-scraper) ↗ - returns one row per product with name, brand, price, discount, supplier, rating, and reviews.
- [Wildberries Seller Scraper](https://apify.com/getascraper/wildberries-seller-scraper) ↗ - pulls supplier intel and shop stats for any Wildberries seller.
- [Wildberries Reviews Scraper](https://apify.com/getascraper/wildberries-reviews-scraper) ↗ - extracts ratings, full review text, and buyer photos for any product.
- [Wildberries Price & Rank Tracker](https://apify.com/getascraper/wildberries-price-tracker) ↗ - monitors Wildberries prices and search rank positions on a schedule.
- [Wildberries Resale Scraper](https://apify.com/getascraper/wildberries-resale-scraper) ↗ - scrapes resale and secondhand product listings from Wildberries.

# Actor input Schema

## `keywords` (type: `array`):

One product keyword per niche, in Russian or English (e.g. "робот пылесос", "wireless earbuds"). You get ONE market-summary row per keyword. Add several to compare niches side by side in a single run. At least one keyword is required.

## `maxProductsPerQuery` (type: `integer`):

How many top products to sample per keyword before computing the metrics (100 per page). 300 (the top 3 pages) mirrors what a shopper actually sees and is enough for reliable seller, price, and rating figures. Raise it for deeper niches or when using a narrow price band below.

## `priceMinRub` (type: `integer`):

Optional. Analyze only products priced at or above this amount, so you can size up the exact price segment you plan to sell in (for example, premium models only). Leave blank to include the whole niche. A narrow band may need a larger sample size above.

## `priceMaxRub` (type: `integer`):

Optional. Analyze only products priced at or below this amount. Combine with the minimum to focus on one price tier of the market. Leave blank for no upper limit.

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

Which slice of the niche to sample. "Popular" (the default) reflects the products shoppers see first and gives the most representative market read. "Newest" helps gauge how much fresh competition is entering the niche.

## `region` (type: `string`):

Regional warehouse used for localized pricing and availability. Different regions can show different prices and stock levels.

## `topN` (type: `integer`):

How many of the leading sellers and brands to include in each niche row (ranked by product count), so you can see who dominates the market.

## `debugLogging` (type: `boolean`):

Print per-niche aggregation details to the run log. Handy for troubleshooting; leave off for normal runs.

## `proxyConfiguration` (type: `object`):

Proxy is required: Wildberries returns HTTP 429 on unproxied requests. The shared datacenter group (the default) pages the search endpoint reliably with retries and is far cheaper than residential. Switch to residential only if datacenter starts getting blocked on very large runs.

## Actor input object example

```json
{
  "keywords": [
    "робот пылесос",
    "умные часы",
    "кофемашина"
  ],
  "maxProductsPerQuery": 300,
  "sort": "popular",
  "region": "MOSCOW",
  "topN": 5,
  "debugLogging": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "BUYPROXIES94952"
    ]
  }
}
```

# Actor output Schema

## `results` (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 = {
    "keywords": [
        "робот пылесос",
        "умные часы",
        "кофемашина"
    ],
    "maxProductsPerQuery": 300,
    "sort": "popular",
    "region": "MOSCOW",
    "topN": 5,
    "debugLogging": false,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "BUYPROXIES94952"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/wildberries-niche-analyzer").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 = {
    "keywords": [
        "робот пылесос",
        "умные часы",
        "кофемашина",
    ],
    "maxProductsPerQuery": 300,
    "sort": "popular",
    "region": "MOSCOW",
    "topN": 5,
    "debugLogging": False,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["BUYPROXIES94952"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/wildberries-niche-analyzer").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 '{
  "keywords": [
    "робот пылесос",
    "умные часы",
    "кофемашина"
  ],
  "maxProductsPerQuery": 300,
  "sort": "popular",
  "region": "MOSCOW",
  "topN": 5,
  "debugLogging": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "BUYPROXIES94952"
    ]
  }
}' |
apify call getascraper/wildberries-niche-analyzer --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Wildberries Niche Analyzer: аналитика ниш WB",
        "description": "Analyze any Wildberries (Вайлдберриз) keyword or category as a market: seller and brand counts, competition concentration (HHI), price min/avg/median/max, rating and review distributions, and in-stock rate. One aggregate row per niche for product research and competitor analysis.",
        "version": "0.1",
        "x-build-id": "MQLtzh0zwh1CohJDT"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/getascraper~wildberries-niche-analyzer/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-getascraper-wildberries-niche-analyzer",
                "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/getascraper~wildberries-niche-analyzer/runs": {
            "post": {
                "operationId": "runs-sync-getascraper-wildberries-niche-analyzer",
                "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/getascraper~wildberries-niche-analyzer/run-sync": {
            "post": {
                "operationId": "run-sync-getascraper-wildberries-niche-analyzer",
                "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": {
                    "keywords": {
                        "title": "Keywords / niches to analyze",
                        "type": "array",
                        "description": "One product keyword per niche, in Russian or English (e.g. \"робот пылесос\", \"wireless earbuds\"). You get ONE market-summary row per keyword. Add several to compare niches side by side in a single run. At least one keyword is required.",
                        "default": [
                            "пылесос"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxProductsPerQuery": {
                        "title": "Sample size per niche",
                        "minimum": 100,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "How many top products to sample per keyword before computing the metrics (100 per page). 300 (the top 3 pages) mirrors what a shopper actually sees and is enough for reliable seller, price, and rating figures. Raise it for deeper niches or when using a narrow price band below.",
                        "default": 300
                    },
                    "priceMinRub": {
                        "title": "Price band: minimum (RUB)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional. Analyze only products priced at or above this amount, so you can size up the exact price segment you plan to sell in (for example, premium models only). Leave blank to include the whole niche. A narrow band may need a larger sample size above."
                    },
                    "priceMaxRub": {
                        "title": "Price band: maximum (RUB)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional. Analyze only products priced at or below this amount. Combine with the minimum to focus on one price tier of the market. Leave blank for no upper limit."
                    },
                    "sort": {
                        "title": "Which products to sample",
                        "enum": [
                            "popular",
                            "rate",
                            "priceup",
                            "pricedown",
                            "newly",
                            "benefit"
                        ],
                        "type": "string",
                        "description": "Which slice of the niche to sample. \"Popular\" (the default) reflects the products shoppers see first and gives the most representative market read. \"Newest\" helps gauge how much fresh competition is entering the niche.",
                        "default": "popular"
                    },
                    "region": {
                        "title": "Warehouse region",
                        "enum": [
                            "MOSCOW",
                            "KRASNODAR",
                            "NOVOSIBIRSK",
                            "EKATERINBURGO",
                            "KAZAHSTAN",
                            "ST_PETERSBURG"
                        ],
                        "type": "string",
                        "description": "Regional warehouse used for localized pricing and availability. Different regions can show different prices and stock levels.",
                        "default": "MOSCOW"
                    },
                    "topN": {
                        "title": "Top sellers/brands to list",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "How many of the leading sellers and brands to include in each niche row (ranked by product count), so you can see who dominates the market.",
                        "default": 5
                    },
                    "debugLogging": {
                        "title": "Verbose debug logs",
                        "type": "boolean",
                        "description": "Print per-niche aggregation details to the run log. Handy for troubleshooting; leave off for normal runs.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy is required: Wildberries returns HTTP 429 on unproxied requests. The shared datacenter group (the default) pages the search endpoint reliably with retries and is far cheaper than residential. Switch to residential only if datacenter starts getting blocked on very large runs.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "BUYPROXIES94952"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
