# Marketplace Seller Lead-gen (Wildberries+Ozon+Yandex+Kaspi) (`isolovyev/marketplace-seller-leads`) Actor

B2B lead list of marketplace SELLERS (not products). Search Wildberries, Ozon, Yandex Market and Kaspi.kz by keywords and collect unique sellers with a dossier: store, seller id, legal entity, INN/OGRN, product reach, rating, total reviews, categories. Monitor mode alerts on new competitors.

- **URL**: https://apify.com/isolovyev/marketplace-seller-leads.md
- **Developed by:** [Ivan Solovyev](https://apify.com/isolovyev) (community)
- **Categories:** Lead generation, E-commerce
- **Stats:** 4 total users, 4 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## 🛒 Marketplace Seller Lead-gen - Wildberries + Ozon + Yandex Market + Kaspi

<table width="100%">
<tr>
<td style="padding:24px 28px;background:#EEF2FF;border:1px solid #C7D2FE;border-top:4px solid #4F46E5;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1E1B4B;line-height:1.3">Marketplace sellers as B2B leads - with INN, OGRN and legal entity, not just store names.</span><br>
<span style="font-size:15px;color:#4B5563;line-height:1.6">Point it at a niche and get a deduplicated list of the sellers who rank for it, each resolved to a contactable legal entity across Wildberries, Ozon, Yandex Market (RU) and Kaspi.kz (KZ). One row per seller, not a product dump.</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #E0E7FF;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#4338CA">🏢 Legal dossier</span><br>
<span style="font-size:12px;color:#57534E">INN / OGRN, legal entity and address, resolved per seller</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #E0E7FF;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#4338CA">🛒 4 marketplaces</span><br>
<span style="font-size:12px;color:#57534E">Wildberries, Ozon, Yandex Market and Kaspi.kz in one run</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #E0E7FF;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#4338CA">🔁 Monitor mode</span><br>
<span style="font-size:12px;color:#57534E">Webhook alert when a new competitor enters your niche</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #E0E7FF;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#4338CA">📇 One row per seller</span><br>
<span style="font-size:12px;color:#57534E">Deduplicated and enriched, ready for outreach</span>
</td>
</tr>
</table>

Built for suppliers, agencies and market analysts who need to **find and qualify sellers** - not track
prices. One row per seller.

### 🚀 How to use

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#EEF2FF;border:1px solid #C7D2FE;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#4F46E5;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1E1B4B">Add your niche keywords</span><br>
<span style="font-size:12px;color:#4B5563">e.g. наушники, детская одежда, then pick the platforms.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EEF2FF;border:1px solid #C7D2FE;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#4F46E5;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1E1B4B">Run once or schedule monitor</span><br>
<span style="font-size:12px;color:#4B5563">A one-off pull, or a daily diff that flags new sellers.</span>
</td>
<td style="padding:16px 14px;width:34%;background:#EEF2FF;border:1px solid #C7D2FE;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#4F46E5;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1E1B4B">Export the leads</span><br>
<span style="font-size:12px;color:#4B5563">Excel, CSV, JSON or POST a webhook to n8n / Telegram / Slack.</span>
</td>
</tr>
</table>

### ✨ Why this over single-marketplace seller scrapers

- **Multi-marketplace** - Wildberries, Ozon and Yandex Market (RU) plus Kaspi.kz (KZ) in one run,
  unified seller schema.
- **Legal dossier** - the actor resolves each seller's registered entity: `ИП …` / `ООО …`, **OGRN /
  OGRNIP**, and, where the platform discloses it, **INN**, KPP, trademark and legal address. That turns
  a store name into a contactable B2B lead.
- **Monitor mode** - schedule it and get alerted (webhook → n8n/Telegram/Slack) when a **new competitor**
  appears in your niche.

### ⚙️ Input

| Field | Description |
|---|---|
| `mode` | `search` (collect sellers now) or `monitor` (diff vs last run, flag new/gone). |
| `searchQueries` | Keywords; each is expanded into the sellers who rank for it. |
| `platforms` | `wildberries`, `ozon`, `yandexmarket` and/or `kaspi`. |
| `maxPagesPerQuery` | How many result pages to scan per query, per platform. |
| `maxSellersPerPlatform` | Cap on unique sellers kept (sorted by reach in results). |
| `fetchDossier` | Fetch legal entity / registration numbers per seller (one extra request each). |
| `cities`, `kaspiOfferDepth` | Kaspi: cities to query and how many products to expand into merchant offers. |
| `alertOnly`, `notifyWebhookUrl` | Monitor mode: emit only new/gone sellers and POST a summary webhook. |
| `proxyConfiguration` | Apify Proxy (residential RU) - required for Ozon/Yandex Market, optional for WB/Kaspi. |

### 📤 Output (one row per seller)

`platform, sellerId, name, legalName, legalFullName, legalAddress, inn, ogrn, kpp, trademark, storeUrl,
productCount, avgRating, totalReviews, categories[], foundByQuery[], scrapedAt` (+ `changeType`,
`firstSeenAt` in monitor mode).

Sellers with neither a store name nor registration data are skipped, not emitted as blank rows.

### 🗺️ Coverage by platform

Which dossier fields each marketplace makes available per seller:

- **Wildberries** - store name, legal entity, INN, OGRN/OGRNIP, KPP, trademark and legal full name.
- **Ozon** - store name, legal entity, legal address and OGRN/OGRNIP. INN is not disclosed by the platform.
- **Yandex Market** - store name, legal entity, INN, OGRN/OGRNIP and legal address. Some cross-border
  stores disclose a legal name and address but no Russian INN/OGRN.
- **Kaspi.kz** - store name, rating and review count. Legal entity details are not disclosed by the platform.

### 📝 Notes

- `productCount` = the seller's cards **matched by your queries in this run** (reach in results), not
  their full catalogue.
- **Proxy** - Required on Apify: set `proxyConfiguration` to Apify Residential proxy with country RU.
  All sources require a Russian IP. The `proxyConfiguration` field also accepts custom proxy URLs if you
  prefer to bring your own residential RU proxy.

### ▶️ Quick start

**Search mode** - sellers ranking for a niche, with legal dossier:

```json
{
  "mode": "search",
  "searchQueries": ["наушники", "детская одежда"],
  "platforms": ["wildberries", "ozon", "yandexmarket", "kaspi"],
  "maxPagesPerQuery": 5,
  "maxSellersPerPlatform": 30,
  "fetchDossier": true,
  "cities": ["750000000"]
}
```

**Monitor mode** - alert when a new competitor shows up in your niche:

```json
{
  "mode": "monitor",
  "searchQueries": ["наушники"],
  "platforms": ["wildberries"],
  "alertOnly": true,
  "notifyWebhookUrl": "https://example.com/hooks/new-seller-alerts"
}
```

Set a schedule under **Schedules** in the Apify Console to run `monitor` mode periodically. State
carries over between runs via the Key-Value Store.

### 💰 Pricing

Pay-per-event: you are charged for each seller row returned, plus Apify platform usage. The current
per-lead price is shown in the **Pricing** section of this page. Turn `fetchDossier` off for a faster,
name-only run with lower platform usage when you don't need the legal entity yet (the per-lead price is
the same either way).

### 🇷🇺 RU / На русском

**B2B lead-gen: находит продавцов Wildberries, Ozon, Яндекс.Маркета и Kaspi.kz по нише и обогащает
досье юрлица (ИНН, ОГРН, наименование, адрес) через официальные данные площадок. На выходе не список
ников, а сделко-пригодный лид с реквизитами.**

- **Поиск продавцов по запросу** - «наушники», «детская одежда», «кофе» и т.п. раскрываются в список
  продавцов, которые ранжируются по этому запросу, с дедупликацией.
- **Досье с реквизитами** - актор резолвит юрлицо продавца (ИП/ООО), ОГРН/ОГРНИП и, где площадка это
  публикует, ИНН, адрес, КПП и товарный знак - превращая название магазина в контактный B2B-лид. ИНН
  надёжно доступен у Wildberries и Яндекс.Маркета; Ozon публикует юрлицо/адрес/ОГРН, но не ИНН ни у
  одного продавца; у Kaspi реквизиты юрлица не публикуются в принципе.
- **Monitor** - вебхук-алерт, когда в нише появляется новый конкурент.
- Целевая аудитория: SaaS для селлеров, фулфилмент-компании, финтех, агентства, дистрибьюторы -
  все, кому нужен не мониторинг цен, а квалифицированный список продавцов для аутрича.

Тариф - оплата за событие: списывается за каждую строку продавца на выходе, плюс platform usage
Apify; актуальная цена за лид указана в блоке **Pricing** на этой странице. `productCount` - это охват
продавца в результатах ваших запросов за этот прогон, а не весь его каталог.

### 🔗 Все наши акторы для данных по России, Казахстану и СНГ

<span style="font-size:14px;color:#4B5563">Одна линейка для маркетплейсов, розничных сетей, госзакупок и проверки контрагентов - соседний актор открывается одним кликом по карточке.</span>

<table width="100%">
<tr>
<td style="padding:14px 12px;width:25%;background:#EEF2FF;border:1px solid #C7D2FE;border-top:3px solid #4F46E5;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:13px;font-weight:800;color:#1E1B4B">🛍️ Лиды продавцов маркетплейсов</span><br>
<span style="font-size:11px;color:#57534E">продавцы WB / Ozon / Яндекс.Маркет / Kaspi с ИНН и ОГРН</span><br>
<span style="font-size:10px;font-weight:800;color:#4F46E5;letter-spacing:0.5px">● ВЫ ЗДЕСЬ</span>
</td>
<td style="padding:0;width:25%;background:#FFFFFF;border:1px solid #E0E7FF;border-left:none;border-top:3px solid #4F46E5;vertical-align:top">
<a href="https://apify.com/isolovyev/zakupki-tender-monitor" style="display:block;padding:14px 12px;text-decoration:none">
<span style="font-size:13px;font-weight:800;color:#4338CA">📄 Тендеры 44-ФЗ / 223-ФЗ</span><br>
<span style="font-size:11px;color:#57534E">госзакупки, нацрежим, реестр российского ПО</span>
</a>
</td>
<td style="padding:0;width:25%;background:#FFFFFF;border:1px solid #E0E7FF;border-left:none;border-top:3px solid #4F46E5;vertical-align:top">
<a href="https://apify.com/isolovyev/ru-counterparty-check" style="display:block;padding:14px 12px;text-decoration:none">
<span style="font-size:13px;font-weight:800;color:#4338CA">🔍 Проверка контрагента по ИНН</span><br>
<span style="font-size:11px;color:#57534E">5 источников, скоринг риска</span>
</a>
</td>
<td style="padding:0;width:25%;background:#FFFFFF;border:1px solid #E0E7FF;border-left:none;border-top:3px solid #4F46E5;border-radius:0 10px 10px 0;vertical-align:top">
<a href="https://apify.com/isolovyev/ru-software-registry-check" style="display:block;padding:14px 12px;text-decoration:none">
<span style="font-size:13px;font-weight:800;color:#4338CA">🏛️ Реестр российского ПО</span><br>
<span style="font-size:11px;color:#57534E">проверка по ИНН + досье заявителя</span>
</a>
</td>
</tr>
<tr>
<td style="padding:0;width:25%;background:#FFFFFF;border:1px solid #E0E7FF;border-top:3px solid #4F46E5;border-radius:10px 0 0 10px;vertical-align:top">
<a href="https://apify.com/isolovyev/ru-marketplaces-price-monitor" style="display:block;padding:14px 12px;text-decoration:none">
<span style="font-size:13px;font-weight:800;color:#4338CA">📈 Цены на маркетплейсах</span><br>
<span style="font-size:11px;color:#57534E">WB / Ozon / Яндекс.Маркет / Avito, трекинг цены</span>
</a>
</td>
<td style="padding:0;width:25%;background:#FFFFFF;border:1px solid #E0E7FF;border-left:none;border-top:3px solid #4F46E5;vertical-align:top">
<a href="https://apify.com/isolovyev/kaspi-price-monitor" style="display:block;padding:14px 12px;text-decoration:none">
<span style="font-size:13px;font-weight:800;color:#4338CA">🇰🇿 Цены и позиции на Kaspi.kz</span><br>
<span style="font-size:11px;color:#57534E">Казахстан, позиция в выдаче и цена</span>
</a>
</td>
<td style="padding:0;width:25%;background:#FFFFFF;border:1px solid #E0E7FF;border-left:none;border-top:3px solid #4F46E5;vertical-align:top">
<a href="https://apify.com/isolovyev/ru-retail-chains-scraper" style="display:block;padding:14px 12px;text-decoration:none">
<span style="font-size:13px;font-weight:800;color:#4338CA">🏪 Розничные сети РФ</span><br>
<span style="font-size:11px;color:#57534E">Магнит, Метро, М.Видео, Дикси, Глобус, Купер в единой схеме</span>
</a>
</td>
<td style="padding:0;width:25%;background:#FFFFFF;border:1px solid #E0E7FF;border-left:none;border-top:3px solid #4F46E5;border-radius:0 10px 10px 0;vertical-align:top">
<a href="https://apify.com/isolovyev/ru-retail-chains-extended" style="display:block;padding:14px 12px;text-decoration:none">
<span style="font-size:13px;font-weight:800;color:#4338CA">🛒 Ашан: цены и остатки</span><br>
<span style="font-size:11px;color:#57534E">цена, старая цена, остаток в штуках, рейтинг</span>
</a>
</td>
</tr>
</table>

### 💬 Вопросы и поддержка

Нашли ошибку или есть вопрос? Откройте тикет на вкладке **Issues** этого актора.

# Actor input Schema

## `mode` (type: `string`):

search = collect sellers now. monitor = compare sellers vs the previous run (needs a schedule) and flag new competitors, with optional webhook alerts.

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

Keywords to search, e.g. 'наушники', 'детская одежда', 'кофе'. Each query is expanded into sellers who rank for it.

## `platforms` (type: `array`):

Which marketplaces to scan. wildberries and yandexmarket return INN when the seller discloses it; ozon returns legal name and OGRN; kaspi rating only.

## `maxPagesPerQuery` (type: `integer`):

How many result pages to scan per query (Ozon collects its sellers from page 1 only). Higher = more sellers discovered, more cost.

## `maxSellersPerPlatform` (type: `integer`):

Hard cap on unique sellers kept per platform (sorted by reach in results). Dossier is fetched only for kept sellers.

## `fetchDossier` (type: `boolean`):

Fetch legal entity and registration numbers per seller (one extra request per seller; on Yandex Market it also fills in the store name). Turn off for a faster, name-only run.

## `cities` (type: `array`):

Kaspi city IDs (merchants/offers vary by city). 750000000 Almaty, 710000000 Astana, 591010000 Shymkent. WB ignores this.

## `kaspiOfferDepth` (type: `integer`):

Kaspi only: how many top products per query/city to expand into merchant offers (cost control). More = more merchants found.

## `alertOnly` (type: `boolean`):

Monitor mode only: emit just new/gone sellers instead of the full set.

## `notifyWebhookUrl` (type: `string`):

Monitor mode: POST the run summary (counts, per-platform, degraded, changes) to this URL - wire it to n8n/Zapier/Make for Telegram/Slack alerts on new competitors.

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

Required on Apify: set proxyConfiguration to Apify Residential proxy with country RU. All sources require a Russian IP.

## Actor input object example

```json
{
  "mode": "search",
  "searchQueries": [
    "наушники"
  ],
  "platforms": [
    "wildberries"
  ],
  "maxPagesPerQuery": 2,
  "maxSellersPerPlatform": 30,
  "fetchDossier": true,
  "cities": [
    "750000000"
  ],
  "kaspiOfferDepth": 8,
  "alertOnly": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "RU"
  }
}
```

# 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": [
        "наушники"
    ],
    "platforms": [
        "wildberries"
    ],
    "maxSellersPerPlatform": 30,
    "cities": [
        "750000000"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "RU"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("isolovyev/marketplace-seller-leads").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": ["наушники"],
    "platforms": ["wildberries"],
    "maxSellersPerPlatform": 30,
    "cities": ["750000000"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "RU",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("isolovyev/marketplace-seller-leads").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 '{
  "searchQueries": [
    "наушники"
  ],
  "platforms": [
    "wildberries"
  ],
  "maxSellersPerPlatform": 30,
  "cities": [
    "750000000"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "RU"
  }
}' |
apify call isolovyev/marketplace-seller-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=isolovyev/marketplace-seller-leads",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/RJBevsacZOkFAsTg2/builds/iXEWRSuSQHhliocyC/openapi.json
