This skill returns a daily time-series of a single Ozon (Russia) SKU — sales units, price, stock, rating, and optionally search-position / visibility metrics. It is the go-to for validating growth, seasonality, or anomalies for a specific product.
Core Concepts
Single-SKU scope: Each call analyzes exactly one productId. For batch per-SKU snapshots (period aggregates), use mpstats-ozon-product-detail instead.
Daily granularity: The response is an array of daily points (top-level field data) across the [startDate, endDate] window. Each point carries a hasData boolean — if hasData=false, the day has no observation (distinct from sales=0 with hasData=true).
T-1 delay: MPSTATS trend data is delayed by one day; the latest selectable end date is yesterday. Today or future dates are rejected.
Search-visibility add-on: Set includeSearchStats: true to append search-position / visibility signals. Some niches (especially small categories) may not have search-stats coverage — expect partial or empty fields in those cases.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| productId | integer | yes | Ozon SKU (numeric) |
| startDate | string | no | Window start, YYYY-MM-DD; latest = yesterday |
| endDate | string | no | Window end, YYYY-MM-DD; latest = yesterday |
| includeFbs | boolean | no | Include FBS data alongside FBO |
| includeSearchStats | boolean | no | Attach search position / visibility signals |
How to call
- API endpoint:
POST /mpstats/ozon/productTrend(for full parameters/response/error codes seereferences/api.md) - Python script:
python scripts/mpstats_ozon_product_trend.py '<JSON 参数>' [--inline] - Cost constraints: This tool consumes compute; within the same session, the same parameter combination is by default called only once, and the script has a 24h local cache. On failure/empty results, do not automatically switch keywords, paginate, or change zip code to probe repeatedly; if further retrieval 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-mpstats-ozon-product-trend-<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, automatically aggregated according to the user's task;writing to /tmp is prohibited, if the current directory is not writable then report an error) - Response body ≤ 8 KB: after writing to disk, print the full JSON to stdout
- Response body > 8 KB: after writing to disk, stdout outputs only a summary (top-level fields, common counts such as
total/costToken, length of the largest list field + first 3 samples) - add
--inlineto force full printing to stdout (also written 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 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. Monthly trend for a SKU
{
"productId": 1786874757,
"startDate": "2025-03-01",
"endDate": "2025-03-31"
}
2. Trend with search visibility
{
"productId": 1786874757,
"startDate": "2025-02-01",
"endDate": "2025-02-28",
"includeSearchStats": true
}
3. Combined FBO+FBS trend
{
"productId": 151623766,
"startDate": "2025-01-01",
"endDate": "2025-01-31",
"includeFbs": true
}
How to Chain with Other Ozon Skills
- Discovery → trend: Use
mpstats-ozon-product-searchto find a SKU, then check growth / volatility here before committing. - Aggregate vs time-series:
mpstats-ozon-product-detailgives a one-number-per-metric period view; this skill shows the day-by-day shape behind those numbers. - Drill-down → trend: After
brand-products/category-products/seller-productssurfaces a hot SKU, use this skill to validate whether the hotness is recent, seasonal, or sustained.
Display Rules
- Prefer a simple table or sparkline-friendly output — one row per date with
date,price,sales,balance,rating,comments; do not overfit a 90-point series into a single paragraph. - Use
hasDatato distinguish gaps from zero sales —hasData=falsemeans the day has no observation; don't report it as a zero-sale day. - Call out anomalies — large single-day spikes or stockouts (
balance=0runs wherehasData=true) should be flagged factually, not as buying advice. - Currency is RUB unless upstream layer is already converting (the
currencyfield per point carries the symbol, e.g.₽); state the currency when showing price movement. - Revenue is not returned per day — if the user asks for daily revenue, estimate via
sales * priceand note it's an estimate. includeSearchStatsgaps — when no search-visibility fields come back, note "search rank data is temporarily unavailable in this track" rather than silently omitting.- No business advice — present the shape; leave "should we buy this listing?" to the user.
Important Limitations
- Single SKU per call — cannot pass a list of
productIds; loop at the Agent layer if needed. - T-1 data —
endDatecannot be today or a future date. - Search stats optional —
includeSearchStats=truedoesn't guarantee coverage for all niches. - Ozon-only — Wildberries and other Russian marketplaces are not covered.
- Missing days — the series may have nulls / gaps where no data was captured; do not treat nulls as zero sales.
User Expression & Scenario Quick Reference
Applicable — Single-SKU temporal analysis:
| User Says | Scenario |
|---|---|
| "What's the sales trend of Ozon SKU 1786874757 last month" | Monthly time-series |
| "Is this Ozon listing seasonal or stable" | Seasonality check |
| "Did this Ozon product have stockouts recently" | Stock anomaly detection |
| "Price walk for this Ozon product over Q1" | Price movement |
| "Did this listing's search position improve" | Search visibility (requires includeSearchStats) |
Not applicable — Needs beyond single-SKU time-series:
- Batch snapshot of many SKUs →
mpstats-ozon-product-detail - Brand / category / seller drill-down → matching
*-productsskill - Pre-IDed discovery →
mpstats-ozon-product-search
Boundary judgment: Use this skill when the question starts with "how did this ONE product change over time". For multi-SKU comparisons or dimension-level filtering, go elsewhere.
Compute consumption rules
Billed by dynamic rules: compute consumed = 12. Empty list returns 0
Important: the services of this skill are dynamically calculated by 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.