This skill searches Ozon marketplace keywords in the Seerfar analytics database and filters them by rich performance metrics — search volume, 30-day growth, product/seller/competitor counts, average price, monthly sales/revenue, conversion & view concentration, ratings/reviews, and more. Each returned keyword carries a full market profile (market space, return/cancellation rate, top products, Chinese translation), making it the starting point for Ozon keyword selection, blue-ocean term mining, and market-opportunity analysis.
Core Concepts
Unit of data is the keyword, not the SKU: unlike a product search, this endpoint returns marketplace search terms ("hot keywords"), each enriched with market metrics. You discover which search terms are worth targeting on Ozon.
Platform coverage: each keyword record carries a platform field (0 = Ozon, 1 = Wildberries). The dataset is Ozon-centric; Wildberries rows appear where available. There is no input to restrict the platform — filter client-side if needed.
Date semantics: searchDate selects the data month. Pass 2026-04-01 to get March 2026 data; omit it for the last 30 days. Metrics such as searchVolume (monthly search popularity) and count30GrowthRate (monthly search growth) are relative to the selected period.
Match mode: matchType controls how the keywords array is matched — 0 exact, 1 fuzzy. Choose the mode that fits your discovery intent when filtering by keyword text.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| page | object | yes | Pagination {page, pageSize, orders[]}. page from 1 (default 1), pageSize default 20. orders[] = {field, direction} with direction DESC/ASC. |
| keywords | array | no | Keyword list to filter (max 1000); combined with matchType. |
| matchType | integer | no | Keyword match mode: 0 exact, 1 fuzzy. |
| searchDate | string | no | Data date yyyy-MM-dd; default last 30 days. 2026-04-01 → March 2026 data. |
| categories | array | no | Category ID list (max 1000). |
| searchVolume | {min,max} | no | Monthly search volume range. |
| searchChange30 | {min,max} | no | 30-day search change range. |
| monthlySales | {min,max} | no | Monthly sales range. |
| monthlyRevenue | {min,max} | no | Monthly revenue range. |
| price | {min,max} | no | Average price range. |
| productViews | {min,max} | no | Product view range. |
| products | {min,max} | no | Product count range. |
| volume | {min,max} | no | Volume range. |
| marketSpace | {min,max} | no | Market space range. |
| conversionSharing | {min,max} | no | Conversion concentration range. |
| reviews | {min,max} | no | Review count range. |
| ratings | {min,max} | no | Rating range. |
| sellers | {min,max} | no | Seller count range. |
| weight | {min,max} | no | Weight range. |
| uId | string | no | User ID. |
| memberId | string | no | Member ID (data attribution). |
All range filters are {min, max} objects; supply either or both bounds. Only page is required.
How to call
- API endpoint:
POST /seerfar/ozon/marketKeywordSearch(for full parameters/response/error codes seereferences/api.md) - Python script:
python scripts/seerfar_ozon_market_keyword_search.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 try different keywords, paginate, or change the zip code to probe continuously; if you need to continue searching, first explain to the user that additional consumption will be incurred.
Output strategy (default script behavior):
- Alwayswrite the full response to
<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-seerfar-ozon-market-keyword-search-<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 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. Hottest keywords right now (sort by search volume)
{"page": {"page": 1, "pageSize": 10, "orders": [{"field": "searchVolume", "direction": "DESC"}]}}
2. Blue-ocean terms — high volume, few sellers
{"page": {"page": 1, "pageSize": 20, "orders": [{"field": "searchVolume", "direction": "DESC"}]}, "searchVolume": {"min": 10000}, "sellers": {"max": 50}}
3. Filter by keyword text (fuzzy, Russian)
{"page": {"page": 1, "pageSize": 20}, "keywords": ["телефон"], "matchType": 1}
4. A specific data month with a sales floor
{"page": {"page": 1, "pageSize": 20}, "searchDate": "2026-04-01", "monthlySales": {"min": 1000}}
How to Build Queries
- Lead with
page.orders: the dataset is large — always sort by the metric you care about (searchVolumeDESC for popularity,count30GrowthRateDESC for rising terms,sellersASC for low competition). - Stack range filters to find opportunities: combine a high
searchVolumefloor with a lowsellersceiling to surface blue-ocean keywords; addconversionSharing/marketSpacebounds to qualify demand. - Use
keywords+matchTypeto scope a niche: pass seed terms in Russian withmatchType: 1(fuzzy) to enumerate related long-tail terms. - Pick the right
searchDate: omit it for current trends (last 30 days); pass an explicit date for month-over-month comparison.
Display Rules
- Present data only: show keyword metrics in a clear table without subjective advice.
- Lead with keyword columns:
query/queryCn(Chinese translation), thensearchVolume,count30GrowthRate,productCount,sellers,avgPrice. - Russian keywords: preserve the original
query; thequeryCnfield provides a Chinese translation when available. - Platform tag: when both Ozon and Wildberries rows are present, show
platform(0/1) so the user can distinguish them. - Large result sets: when
totalis large, show the top rows and remind the user they can persist the full response via the large-response pattern below, or page further withpage.page. - Error handling: when
codeis not200(orerrcodeis not200), explain the reason frommsg/errmsgand suggest adjusting filters.
Important Limitations
pageis required: a payload withoutpageis rejected.- No platform selector: the Ozon/Wildberries mix is controlled server-side; filter client-side via the
platformfield. - Category IDs are opaque:
categoriesrequires Seerfar category IDs, not human-readable names. - Pagination caps: use
pageSizeandpageto page; very largepageSizevalues may be capped server-side. - Nested fields:
products[*](Top products) andcategoryInfos[*](category path and cross-border eligibility flag) are structured and decision-useful — seereferences/api.mdfor sub-fields.dimension/columnsare opaque or partially populated;relevancy/titleDensity/wordCountare usually absent.
User Expression & Scenario Quick Reference
Applicable — Ozon keyword market research:
| User Says | Scenario |
|---|---|
| "What are Ozon hot keywords / top search terms" | Hottest keywords by search volume |
| "Ozon blue ocean keywords, low-competition high-search terms" | Blue-ocean term mining (high volume, few sellers) |
| "Ozon rising keywords / recently fast-growing terms" | Rising keywords (growth sort) |
| "long-tail keywords around a certain Russian word" | Fuzzy keyword expansion |
| "market space/number of competitors/number of sellers for a certain Ozon keyword" | Keyword market profile |
Not applicable — Needs beyond keyword market data:
- A specific SKU's price/sales/stock → use a product-level Seerfar Ozon data source, not this keyword endpoint.
- A specific seller's catalog → use a seller/shop-level Seerfar Ozon data source.
- Category-tree browsing → use a category-level Seerfar Ozon data source.
- Non-Ozon/Wildberries marketplaces → not covered here.
Boundary judgment: if the user wants to discover and rank search terms on Ozon by market metrics, start here. If they already have a SKU / seller / category and want entities under it, route to the corresponding Seerfar Ozon data source.
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 when the user's expectation of compute consumption is insufficient, 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.