# Marketplace Ru

> Use when managing orders, prices, or inventory on Russian e-commerce marketplaces: Ozon, Wildberries, Yandex Market. Triggers on mentions of marketplace orders, seller API, stock management, price updates, order status, shipping deadlines, mp-orders, mp-prices, mp-stocks, or any Ozon/WB/YM seller operations. Always use this skill when the user mentions marketplace management, even if they don't specify which platform.

- Skill: `smvlx/marketplace-ru` (Agent Skill, multi-file: 34 files)
- Install (CLI): `npx skillmds@latest add smvlx/marketplace-ru`
- Raw SKILL.md: https://api.skillmd.com/api/skills/smvlx/marketplace-ru/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: smvlx (https://skillmd.com/u/smvlx)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/smvlx/marketplace-ru

---


# Marketplace RU — Ozon / Wildberries / Яндекс Маркет

Управление заказами, ценами и остатками на российских маркетплейсах.

## Platforms

| Платформа | Флаг | API | Особенности |
|-----------|------|-----|-------------|
| Ozon | `--platform ozon` (по умолчанию) | Seller API v3/v4 | FBS/FBO |
| Wildberries | `--platform wb` | Wildberries API | Dual status, цены в копейках, 409=10x penalty |
| Яндекс Маркет | `--platform ymarket` | Partner API | Карантин цен, 100+ субстатусов, rate limit 420 |

## Preflight

Before any operation, check if tools are available and credentials are configured:

```bash
which mp-orders mp-prices mp-stocks mp-setup mp-test
mp-test --platform ozon
```

If tools are not in PATH, add them:
```bash
export PATH="<skill-directory>/tools:$PATH"
```

## Authentication

Each platform requires its own API credentials.

### Ozon
1. [Ozon Seller](https://seller.ozon.ru/) → Настройки → API ключи
2. Create key with **Admin** or **Content + Analytics** permissions
3. Run `mp-setup --platform ozon` — enter Client ID and API Key

### Wildberries
1. [WB Seller](https://seller.wildberries.ru/) → Настройки → API токены
2. Create token with categories: **Marketplace**, **Content**, **Analytics**
3. Run `mp-setup --platform wb` — enter API Token

> Different WB endpoints require tokens from different categories. One token with all needed categories covers all operations.

### Яндекс Маркет
1. [YM Partner](https://partner.market.yandex.ru/) → Настройки → API и модули
2. Create token (max 30 per account)
3. Run `mp-setup --platform ymarket` — enter API Key

> Scope changes take ~10 minutes to propagate. Business ID and Campaign ID are detected automatically on first connection.

### Verify connection
```bash
mp-test --platform ozon
mp-test --platform wb
mp-test --platform ymarket
```

## Orders

```bash
# List orders
mp-orders list --platform ozon
mp-orders list --platform wb
mp-orders list --platform ymarket

# Order status
mp-orders status 12345678-0001-1                    # Ozon: posting number
mp-orders status 987654321 --platform wb             # WB: numeric ID
mp-orders status 77001122 --platform ymarket         # YM: order ID

# Statistics
mp-orders stats --platform wb

# Mock mode (no real API calls)
mp-orders list --mock
```

**Platform-specific behavior:**
- **WB**: Dual status model (supplierStatus + wbStatus), prices in kopecks
- **YM**: 100+ substatus values, ISO dates with timezone

## Prices

```bash
# Get price
mp-prices get TWS-PRO-001
mp-prices get 12345678 --platform wb              # WB: nmID (number)
mp-prices get TWS-PRO-001 --platform ymarket

# Update price (with confirmation)
mp-prices update TWS-PRO-001 2500
mp-prices update 12345678 1999 --platform wb      # enter in rubles, auto-converts to kopecks
mp-prices update TWS-PRO-001 2500 --platform ymarket

# With old price (Ozon: crossed-out price)
mp-prices update TWS-PRO-001 2500 --old-price 2999

# Auto-confirm (only for changes ≤50%)
mp-prices update TWS-PRO-001 2500 --yes

# List all prices
mp-prices list --platform wb

# Yandex Market: price quarantine (on change >5%)
mp-prices confirm-quarantine --platform ymarket
```

**Price change protection:**
- Changes > ±50% require additional confirmation
- `--yes` does not work for changes > 50% (use `--force`)
- Price cannot be 0

**Platform-specific:**
- **WB**: Prices stored in kopecks. Enter in rubles — conversion is automatic.
- **YM**: After price update, quarantine is checked automatically. Changes >5% may be held. Use `confirm-quarantine` to approve.
- **YM**: Currency in API is `RUR` (not `RUB`).

## Stocks

```bash
# All stocks
mp-stocks list
mp-stocks list --platform wb
mp-stocks list --platform ymarket

# Low stock items
mp-stocks list --low                        # < 10 units (default)
mp-stocks list --low --threshold 5          # < 5 units

# Specific item
mp-stocks get TWS-PRO-001

# Update stock
mp-stocks update TWS-PRO-001 100
mp-stocks update 2000000000011 50 --platform wb --warehouse 507921
mp-stocks update TWS-PRO-001 100 --platform ymarket
```

**Platform-specific:**
- **WB**: Stock is warehouse-bound. Use `--warehouse <id>`. Warehouse list is cached automatically.
- **YM**: SKU is case-sensitive and padding-sensitive (`"557722" ≠ "0557722"`). Max 2000 SKUs per request.

## Audit Log & Rollback

All price and stock changes are recorded:

```bash
# Change history
mp-prices history                              # last 20 entries
mp-prices history --sku TWS-PRO-001            # history for SKU
mp-stocks history                              # stock history

# Rollback
mp-prices rollback --last                      # rollback last batch
mp-prices rollback 20260216-143022-a1b2c3d4    # by specific ID
mp-stocks rollback --last --mock               # test in mock mode
```

Rollback always requires manual confirmation. Cannot rollback a rollback (cycle protection). Entries older than 90 days are rotated automatically.

## Error Handling

| Code | Ozon | WB | YM |
|------|------|----|----|
| Rate limit | 429 | 429 (+ 409=10x) | **420** (not 429!) |
| Auth | 401/403 | 401/403 | 401/403 |
| Not found | 404 | 404 | 404 (check businessId/campaignId!) |

Rate limiting: automatic retry with exponential backoff (5s → 15s → 30s).

## Batch Operations

Bulk updates are automatically chunked:
- Chunk size: 10 (configurable via `BATCH_SIZE`)
- Delay: 1 second between chunks (`BATCH_DELAY`)
- Progress: `[30/100] Processing... ETA: 7s`

## Troubleshooting

| Issue | Fix |
|-------|-----|
| Credentials not configured | `mp-setup --platform <ozon\|wb\|ymarket>` |
| 401 — invalid credentials | Recreate key in marketplace dashboard, run `mp-setup` again |
| 403 — access denied | Check token permissions/categories (WB) or scope (YM) |
| 429/420 — rate limit | Auto-retry handles this; if persistent, wait 60s |
| `jq: command not found` | `brew install jq` (macOS) or `apt install jq` (Linux) |

## API Documentation

- [Ozon Seller API](https://docs.ozon.ru/api/seller/)
- [Wildberries API](https://openapi.wildberries.ru/)
- [Яндекс Маркет Partner API](https://yandex.ru/dev/market/partner-api/)

