This skill lists the products of a specific Ozon category from the Seerfar analytics database. Given a categoryId, it returns category-level aggregates (total sales, total revenue, average price, average rating, seasonality) plus each product's sales, price, rating, review count, brand and seller — the starting point for category selection analysis, best-seller mining within a category, and category capacity / price-band analysis.
Core Concepts
Unit of data is the product, scoped to one category: pass a single categoryId and receive that category's product list with performance metrics, alongside category-level aggregates. This is a category-level view, not a shop or keyword view.
Where the categoryId comes from: categoryId is the Ozon category identifier — a hierarchical path joined by _ (e.g. 15621032_15621049_115951147), obtained from the Ozon category document or from other Seerfar Ozon tools. If the user only has a category name, first resolve it to a categoryId from an upstream Seerfar Ozon source before calling this skill.
Category aggregates vs product rows: the response carries both category-level totals (totalSales, totalRevenue, avgPrice, rating, seasonalityAmplitude, seasonalityCoef, startDate/endDate) and a paginated product list (data / products). Use the aggregates for category sizing and the rows for individual product analysis.
Sales & price currency: sales / monthlySalesUnits are units; price / revenue are in Russian rubles (₽), indicated by currency.
Time window: by default the data covers the last 30 days (startDate / endDate show the actual range). Pass date as yyyy-MM (e.g. 2026-02) to query a historical month snapshot.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| categoryId | string | yes | Ozon category ID, e.g. 15621032_15621049_115951147 (levels joined by _). |
| page | object | yes | Pagination {page, pageSize, orders[]}. |
| page.page | integer | no | Page number, from 1 (default 1). |
| page.pageSize | integer | no | Page size, default 20. Max 20 — larger values are rejected (errcode 1002). |
| page.orders | array | no | Sort rules, elements {field, direction} (both required); direction DESC/ASC. Common fields: sales, price, revenue, reviewRating. |
| date | string | no | Historical month yyyy-MM (e.g. 2026-02); omit for last 30 days. |
| fulfillment | string | no | Fulfillment filter, one of FBO / FBS / RFBS / FBP / OZON; omit to query all. Single string, not an array. |
| uId | string | no | User ID. |
| memberId | string | no | Member ID (data attribution). |
Only categoryId and page are required.
Calling the Tool
- API Endpoint:
/seerfar/ozon/categorySearch(full parameters/responses/error codes inreferences/api.md) - Python Script:
python scripts/ozon_category_search.py '<JSON params>' [--inline] - Cost constraint: This tool consumes credits. Within the same session and same parameter combination, it defaults to a single call with a 24-hour local cache. Do not automatically retry with different keywords, pagination, or parameters on failure/empty results. Inform the user of additional credit consumption before continuing retrieval.
Output strategy (script default behavior):
- Always write the full response to
<cwd>/nexscope/<YYYY-MM-DD>/<session>/data/ecommerce-ozon-category-search-<timestamp>.json(<cwd>is the working directory when the script executes, which in Claude Code is the current project directory;<session>is taken from theSESSION_IDenvironment variable, automatically grouped by user task; do not write to /tmp; error if the current directory is not writable) - Response body <= 8 KB: write to disk then print full JSON to stdout
- Response body > 8 KB: write to disk then print only a summary to stdout (top-level fields, common counts like
total/costToken, length of the largest list field + first 3 samples) - Add
--inlineto force full output to stdout (still writes to disk)
Reading data: Check the summary first to determine if it is sufficient. When specific fields are needed, use jq or ConvertFrom-Json to extract from the saved JSON file as needed, avoiding loading the entire JSON into context.
Authentication & Credits
If you encounter authentication or credit issues:
Error conditions
- API Key not configured: The
NEXSCOPE_API_KEYenvironment variable is not set. - HTTP 401 or 402 status code
- Insufficient credits/balance: Response message indicates credit balance exhausted, quota exceeded, subscription expired, or recharge required.
Resolution steps
- Set the
NEXSCOPE_API_KEYenvironment variable with a valid API key. - If credits are insufficient, visit https://www.nexscope.ai/pricing?co-from=skillNS to top up your balance.
- For onboarding and setup guidance, refer to https://www.nexscope.ai/help/skills-external-access?co-from=skillNS
Usage Examples
1. Category best-sellers (sort by 30-day sales)
{"categoryId": "15621032_15621049_115951147", "page": {"page": 1, "pageSize": 20, "orders": [{"field": "sales", "direction": "DESC"}]}}
2. Category top-revenue products
{"categoryId": "15621032_15621049_115951147", "page": {"page": 1, "pageSize": 20, "orders": [{"field": "revenue", "direction": "DESC"}]}}
3. Category premium price band (highest-priced)
{"categoryId": "15621032_15621049_115951147", "page": {"page": 1, "pageSize": 20, "orders": [{"field": "price", "direction": "DESC"}]}}
4. Historical month snapshot
{"categoryId": "15621032_15621049_115951147", "date": "2026-02", "page": {"page": 1, "pageSize": 20, "orders": [{"field": "sales", "direction": "DESC"}]}}
5. Filter to FBO-fulfilled products only
{"categoryId": "15621032_15621049_115951147", "fulfillment": "FBO", "page": {"page": 1, "pageSize": 20, "orders": [{"field": "sales", "direction": "DESC"}]}}
6. Page deeper into the category
{"categoryId": "15621032_15621049_115951147", "page": {"page": 2, "pageSize": 20, "orders": [{"field": "sales", "direction": "DESC"}]}}
How to Build Queries
- Always pass
page.orders: categories can contain many products — sort by the metric you care about (salesDESC for best-sellers,revenueDESC for top revenue,priceDESC for the premium band,reviewRatingDESC for best-reviewed). - Keep
pageSize≤ 20: the gateway caps page size at 20. Usepage.pageto paginate; checkhasNextPageto know whether more pages exist. - Resolve the
categoryIdfirst: if the user gives a category name rather than an id, obtain thecategoryIdfrom an upstream Seerfar Ozon source before calling this skill. - Use category aggregates for sizing:
totalSales,totalRevenue,avgPriceandratingdescribe the whole category at a glance — use them for capacity and price-band assessment before drilling into rows. - Use
datefor historical comparison: passdateasyyyy-MMto compare a past month against the current 30-day window. fulfillmentis a single string: pass one ofFBO/FBS/RFBS/FBP/OZON, not an array.
Display Rules
- Present data only: show the category aggregates and product metrics in a clear table without subjective advice.
- Lead with category context, then product columns: state the category name (from
categoryInfo.cnTitlePath/enTitlePath— confirms the right category), thentotalSales,totalRevenue,avgPrice,rating, seasonality (seasonalityAmplitude/seasonalityCoef) and date range, plus the fulfillment distribution (sellerTypemap) as a one-line FBO/FBS/RFBS/... split; then a table ofsku,title,price,sales,revenue,reviewRating,reviewCount,brandName,sellerName. - Currency:
price/revenueare in rubles (₽); render with thecurrencysymbol. - Fulfillment:
fulfillmentis an array (e.g.["FBO"]); join multiple values with/. - Unified vs original fields:
productId/rating/brand/monthlySalesUnits/monthlySalesRevenue/productPageUrlmirrorsku/reviewRating/brandName/sales/revenue/productUrl— show one set, prefer the originals. - Pagination guidance: when
hasNextPageis true, tell the user more pages are available viapage.page; remind thempageSizeis capped at 20. - Empty category: a non-existent
categoryIdreturns success withtotal=0and no data — tell the user the id may be wrong rather than reporting a system error. - Error handling: when
codeis not"200"(orerrcodeis not200), explain the reason frommsg/errmsgand suggest fixes (addpage, lowerpageSize, retry on rate-limit).
Important Limitations
categoryIdandpageare both required; omitting either returnserrcode 400.pageSizemax 20: exceeding it returnserrcode 1002.- No text/keyword filter within a category: this endpoint filters by category (plus optional
fulfillmentanddate) only; to find products by keyword, use the Seerfar Ozon market keyword search skill. totalis the page row count, not the category's total product count — usehasNextPageto decide whether to fetch more pages.sellerTypeis a fulfillment distribution, not seller type: despite the name, the top-levelsellerTypeis a map of fulfillment model → product count ({FBO, RFBS, FBP, FBS, OZON}); it does not carry local/cross-border (local/cross-border) info.categoryInfocarries the category name path (CN/EN/RU) andcrossBorderSellable.
User Expression & Scenario Quick Reference
Applicable — analyzing one Ozon category's products and aggregates:
| User Says | Scenario |
|---|---|
| "Analyze products in this Ozon category" / "How big is this category" | Category sizing (totalSales / totalRevenue / avgPrice) |
| "What are the best-selling products in this category" | Best-seller mining (sort by sales) |
| "Top-revenue products in this category" | Top-revenue products (sort by revenue) |
| "Price band / average order value in this category" | Price-band analysis (sort by price) |
| "Best-reviewed products in this category" | Best-reviewed (sort by reviewRating) |
| "Last month's data for this category" | Historical month snapshot (date) |
| "FBO products in this category" | Fulfillment filter |
Not applicable — Needs beyond one category's product list:
- One shop/seller's catalog → use the Seerfar Ozon shop search skill.
- Market-level keyword discovery → use the Seerfar Ozon market keyword search skill.
- Keyword mining → use the Seerfar Ozon keyword mining skill.
- A single product's full detail → use a product-level Seerfar Ozon source (this skill returns category-level fields only).
Boundary judgment: if the user already has a categoryId (or one resolved from an upstream source) and wants to enumerate, rank, or size that category's products by sales/price/rating, start here. If they want a shop's catalog, keyword discovery, or a single product's deep detail, route to the corresponding Seerfar Ozon skill.