This skill lists the products of a specific Ozon shop (seller) from the Seerfar analytics database. Given a shop id, it returns each product's 30-day sales, price, rating, weight, fulfillment model (FBO/FBS), seller type (local / cross-border) and return/cancellation rate, plus the shop's total 30-day sales — the starting point for competitor-shop product analysis, best-seller mining, and seller catalog teardown.
Core Concepts
Unit of data is the product, scoped to one shop: pass a single shop id and receive that shop's product catalog with performance metrics. This is a shop-level view, not a keyword or category view.
Where the shop id comes from: id is the Seerfar seller/shop identifier — the same sellerId returned by other Seerfar Ozon tools (e.g. product report / product detail search). Negative ids (e.g. -2 Ozon Express, -4 Ozon Fresh) are Ozon's own platform sellers; positive ids are third-party sellers. If the user only has a shop name or product, first obtain the sellerId from a product-level Seerfar Ozon source, then call this skill.
Seller type: each product carries sellerType — 0 local (本土), 1 cross-border (跨境). A shop is typically all one type; use it to judge whether a competitor is a domestic or cross-border seller.
Sales & price currency: sales / monthlySalesUnits are 30-day units; price is in Russian rubles (₽), indicated by currency.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | yes | Shop (seller) ID — the sellerId from other Seerfar Ozon tools. Negative = Ozon platform seller. |
| 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}; direction DESC/ASC. Common fields: sales, price, reviewRating, upTime. |
| uId | string | no | User ID. |
| memberId | string | no | Member ID (data attribution). |
Only id and page are required.
How to call
- API endpoint:
POST /seerfar/ozon/shopSearch(for full parameters/responses/error codes seereferences/api.md) - Python script:
python scripts/seerfar_ozon_shop_search.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/empty results, do not automatically switch keywords, paginate, or change the zip code to probe repeatedly; if further searching is needed, first explain to the user that it will incur additional consumption.
Output strategy (script default behavior):
- Alwayswrite the full response to
<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-seerfar-ozon-shop-search-<timestamp>.json(<cwd>is the working directory when the script runs, which in Claude Code is the current project directory;<session>is taken from the environment variableSESSION_ID, aggregated automatically 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 full 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 judge whether it is sufficient; when specific fields are needed, prefer to use 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 resolving the issue:
Abnormal situations
- API Key not configured: the environment variable is not configured
LINKFOX_AGENT_API_KEY, andLINKFOXAGENT_API_KEY。 - is also not configured
- Response 401 or 402 status code: the message contains "算力余额不足/计费不足/余额不足/quota exceeded/insufficient balance/套餐到期/需充值/请充值", or content with a similar meaning.
Usage Examples
1. A shop's best-sellers (sort by 30-day sales)
{"id": 1362816, "page": {"page": 1, "pageSize": 20, "orders": [{"field": "sales", "direction": "DESC"}]}}
2. A shop's newest listings (sort by upload time)
{"id": 1362816, "page": {"page": 1, "pageSize": 20, "orders": [{"field": "upTime", "direction": "DESC"}]}}
3. A shop's highest-priced products
{"id": 1362816, "page": {"page": 1, "pageSize": 20, "orders": [{"field": "price", "direction": "DESC"}]}}
4. Page deeper into a shop's catalog
{"id": 1362816, "page": {"page": 2, "pageSize": 20, "orders": [{"field": "sales", "direction": "DESC"}]}}
How to Build Queries
- Always pass
page.orders: the catalog can be large — sort by the metric you care about (salesDESC for best-sellers,upTimeDESC for new arrivals,priceDESC for premium SKUs). - Keep
pageSize≤ 20: the gateway caps page size at 20. Usepage.pageto paginate; checkhasNextPageto know whether more pages exist. - Resolve the shop
idfirst: if the user gives a shop/product name rather than an id, obtain thesellerIdfrom a product-level Seerfar Ozon source before calling this skill. - Use shop-level aggregates for context:
totalSales/totalRevenue/dailySalesare shop-wide totals (independent of the page),productCountis the full catalog size,ratingis the shop rating, and top-levelfulfillmentshows the FBO/FBS split — all quick health indicators for the whole shop.
Display Rules
- Present data only: show the shop's product metrics in a clear table without subjective advice.
- Lead with shop context, then product columns: state shop-level aggregates first —
totalSales(30-day total),totalRevenue(total revenue, ₽),productCount(catalog size),dailySales,rating, andfulfillmentdistribution (e.g. FBO 72 / FBS 4) — then a table ofsku,price,sales,reviewRating,weight,sellerType,fulfillment,returnCancellationRate. - Seller type label: render
sellerTypeas 本土/跨境 (0/1) so the user reads it at a glance. - Fulfillment:
fulfillmentis an array (e.g.["FBO"]); join multiple values with/. - Missing
returnCancellationRate: for Ozon platform sellers (negativeid) this field is often absent — show-rather than failing. - Pagination guidance: when
hasNextPageis true, tell the user more pages are available viapage.page; remind thempageSizeis capped at 20. - Empty shop: a non-existent
idreturns 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
idandpageare both required; omitting either returnserrcode 400.pageSizemax 20: exceeding it returnserrcode 1002.totalis the page row count, not the shop's full catalog size — usehasNextPageto decide whether to fetch more pages.- No text/keyword filter: this endpoint filters by shop only; to find a shop by name, use another Seerfar Ozon source first.
- Field variance by seller type:
returnCancellationRateis populated for third-party sellers but frequently absent for Ozon platform sellers (negativeid). Schema-definedproductPageUrl,monthlySalesRevenue,brandare not returned (upstream has no source, omitted rather than null).
User Expression & Scenario Quick Reference
Applicable — analyzing one Ozon shop/seller's catalog:
| User Says | Scenario |
|---|---|
| "Analyze this Ozon shop's products" / "What is this seller selling" | Shop product catalog |
| "What are this shop's best-selling products" | Best-seller mining (sort by sales) |
| "What new products has this shop recently listed" | New arrivals (sort by upTime) |
| "This competitor shop's price range/average order value" | Price-band analysis (sort by price) |
| "Is this shop a local or cross-border seller" | Seller type check (sellerType) |
| "What is this shop's total sales" | Shop health (totalSales) |
Not applicable — Needs beyond one shop's catalog:
- Discovering Ozon keywords by market metrics → use the Seerfar Ozon market keyword search skill.
- A single product's full detail → use a product-level Seerfar Ozon source (this skill returns catalog-level fields only).
- Browsing the category tree → use a category-level Seerfar Ozon source.
- Finding which shop sells a given product → use a product-level Seerfar Ozon source to get the
sellerIdfirst.
Boundary judgment: if the user already has a shop/seller ID (or a sellerId obtained from a product lookup) and wants to enumerate or rank that shop's products by sales/price/rating, start here. If they want market-level keyword discovery or a single product's deep detail, route to the corresponding Seerfar Ozon skill.
Compute consumption rules
Consumes 15 compute.
Users pay fees due to compute consumption. Please fully assess: when this skill needs to be called frequently, or the user has insufficient expectation of the compute consumption, be sure to remind the user and let the user decide 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.