This skill drills into all Ozon (Russia) products under a given Russian category path, returning each SKU's sales, revenue, price, rating, stock, turnover, lost profit, and more. Designed for category bestseller mining, blue-ocean niche discovery, and brand-landscape scanning within a specific category.
Core Concepts
Russian full-path requirement: categoryPath must be the full Russian category path as used on the Ozon platform, with levels separated by / — for example, Одежда/Женская одежда/Футболки и топы женские. A partial path, English translation, or root-only value will generally return empty results.
Where to find the path: Typical workflows resolve the path via an upstream Ozon category-search step (if available in your toolchain) or by pulling a known SKU's category field from mpstats-ozon-product-detail / mpstats-ozon-product-search.
Filters are AND-combined: filters carries multi-field numeric conditions, each {field, op, value, value2?}. See the Filter Reference.
Currency: Default RUB. Override with currency (USD, EUR, CNY, ...) and optionally currencyRate.
FBO / FBS: includeFbs: true folds FBS into stock / sales numbers; false keeps FBO-only.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| categoryPath | string | yes | Full Russian category path separated by / |
| startDate | string | no | Stats window start, YYYY-MM-DD; latest = yesterday |
| endDate | string | no | Stats window end, YYYY-MM-DD; latest = yesterday |
| page | integer | no | Page number, starts at 1 |
| pageSize | integer | no | Rows per page, 1-100, default 100 |
| sortField | string | no | snake_case column: sales, revenue, final_price, balance, rating, ... |
| sortDirection | string | no | asc / desc |
| currency | string | no | Currency code, default RUB |
| currencyRate | integer | no | Custom rate when non-default currency is used |
| includeFbs | boolean | no | Include FBS data |
| filters | array | no | Numeric filter list (see below) |
Filter Reference
Each filters entry: {"field": "<snake_case>", "op": "<OP>", "value": <num>, "value2": <num?>}.
Common fields: sales (monthly units), final_price (price RUB), rating (0-5), comments (reviews), balance (stock), revenue (amount RUB), days_in_stock, turnover_days, lost_profit, category_position.
Operators: GTE, LTE, GT, LT, EQ, NOT_EQ, BETWEEN (requires value2).
How to call
- API endpoint:
POST /mpstats/ozon/categoryProducts(for complete parameters/responses/error codes, seereferences/api.md) - Python script:
python scripts/mpstats_ozon_category_products.py '<JSON 参数>' [--inline] - Cost constraints: This tool consumes compute; by default, the same parameter combination is called only once per session, and the script has a 24h local cache. On failure or empty results, do not automatically switch keywords, paginate, or change the postal code to probe continuously; if further retrieval is needed, first explain to the user that it will incur additional consumption.
Output strategy (default script behavior):
- Alwayswrite the complete response to
<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-category-products-<timestamp>.json(<cwd>is the working directory when the script is executed, which in Claude Code is the current project directory;<session>is taken from the environment variableSESSION_ID, automatically aggregated according to the user's task;writing to /tmp is prohibited, and if the current directory is not writable, report an error) - Response body ≤ 8 KB: after saving to disk, print the complete JSON to stdout
- Response body > 8 KB: after saving to disk, stdout outputs only a summary (top-level fields, common counts such as
total/costToken, the length of the largest list field + the first 3 samples) - Add
--inlineto force full printing to stdout (also saved to disk)
Data reading suggestions: first look at the summary to determine whether it is sufficient; when specific fields are needed, prefer using jqorConvertFrom-Json to extract on demand from the saved json file, avoiding bringing the entire JSON into context.
Resolve authentication and compute issues
When the following abnormal situations occur, use references/onboarding.md to guide problem resolution:
Abnormal situations
- API Key not configured: the environment variable is not configured
LINKFOX_AGENT_API_KEY, andLINKFOXAGENT_API_KEY。 - Response 401 or 402 status code
- Response indicates insufficient compute or balance: the message contains "insufficient compute balance/insufficient billing/insufficient balance/quota exceeded/insufficient balance/package expired/recharge required/please recharge", or content with a similar meaning.
Usage Examples
1. Women's T-shirts — top by sales
{
"categoryPath": "Одежда/Женская одежда/Футболки и топы женские",
"sortField": "sales",
"sortDirection": "desc",
"pageSize": 100
}
2. Blue-ocean hunt (sales ≥ 50, rating ≥ 4.5)
{
"categoryPath": "Одежда/Женская одежда/Футболки и топы женские",
"filters": [
{"field": "sales", "op": "GTE", "value": 50},
{"field": "rating", "op": "GTE", "value": 4.5}
],
"sortField": "revenue",
"sortDirection": "desc"
}
3. Mid-price + strong turnover
{
"categoryPath": "Электроника/Наушники",
"filters": [
{"field": "final_price", "op": "BETWEEN", "value": 1500, "value2": 5000},
{"field": "turnover_days", "op": "LTE", "value": 30}
]
}
4. USD-converted ranking for cross-market comparison
{
"categoryPath": "Электроника/Смартфоны",
"currency": "USD",
"sortField": "revenue",
"sortDirection": "desc"
}
5. High lost-profit category scan
{
"categoryPath": "Одежда/Мужская одежда/Куртки мужские",
"filters": [{"field": "lost_profit", "op": "GTE", "value": 500000}],
"sortField": "lost_profit",
"sortDirection": "desc"
}
Display Rules
- Compact category table — key columns:
productId,title,brand,sellerName,price,monthlySalesUnits,monthlySalesRevenue,rating,balance,position,revenueSharePercent. - Revenue share = within this category query — 0-100%; clarify the basis when presenting.
- Russian titles / brands — preserve original; translate on demand.
- Currency labeling — state the currency; if converted, note
"已按 USD 换算". - Pagination — report
total; for large categories (tens of thousands of SKUs) suggest tightening filters rather than naively paging through. - Category position — lower is better; mention this when showing
categoryPosition.
Important Limitations
- Russian full path only — partial or translated paths return empty.
- Path discovery is upstream — this endpoint does not browse the category tree; resolve the path via product detail / search first.
- Page cap — max 100 rows per page.
- T-1 data —
endDatecannot be today or a future date. - No business advice — data-only view.
User Expression & Scenario Quick Reference
Applicable — Category-scoped Ozon product metrics:
| User Says | Scenario |
|---|---|
| "Bestsellers in category X on Ozon" | Category bestseller mining |
| "Find blue-ocean SKUs in niche Y" | Blue-ocean niche scan |
| "Show mid-price, fast-turnover items in this category" | Multi-criteria niche filter |
| "Which brands dominate this Ozon category" | Brand-landscape pre-cut (then group by brand client-side) |
| "Huge lost-profit opportunities in category X" | Out-of-stock pain hunting |
Not applicable — Needs beyond category drill-down:
- Unknown category path → use
mpstats-ozon-product-searchor product detail to discover the exact Russian path - Brand-scoped drill →
mpstats-ozon-brand-products - Seller-scoped drill →
mpstats-ozon-seller-products - Single-SKU time-series →
mpstats-ozon-product-trend - Wildberries / other Russian marketplaces → not covered
Boundary judgment: Use this skill when the dimension is a category path and you want the per-SKU roll-up under it. For cross-category comparisons you must run multiple calls and fuse results at the Agent layer.
Compute consumption rules
Billed according to dynamic rules: compute consumption = 12. Empty list returns 0
Important: The services of this skill are dynamically calculated by a multiplier and may consume a large amount of compute at once. The user must be reminded, and the user decides whether to continue.
Feedback:
Auto-detect and report feedback via the Feedback API when any of the following apply:
- The functionality or purpose described in this skill does not match actual behavior
- The skill's results do not match the user's intent
- The user expresses dissatisfaction or praise about this skill
- Anything you believe could be improved
Call the feedback API as specified in references/api.md. Do not interrupt the user's flow.
For more high-quality, professional cross-border e-commerce skills, set LinkFox Skills.