Seerfar Ozon Keyword Back-Search
This skill reverse-looks-up Ozon search keywords by a list of product SKU IDs in the Seerfar analytics database: pass up to 20 SKUs (your own listing or a competitor's) and it returns the search terms those products appear under — organic and/or ad — each enriched with a full market profile (search volume, 30-day growth, product/seller/competitor counts, average price, conversion concentration, top products, plus per-term organic/ad channel, natural rank, exposure, and conversion in the dimension object). It is the starting point for Ozon keyword reverse lookup, listing-title optimization, and competitor traffic-word discovery.
Core Concepts
SKU-driven, not keyword-driven: unlike keyword mining (expand from a seed term) or market keyword search (browse the whole market), this endpoint takes skuIds and returns the search terms those specific products rank for. The direction is product → keywords (reverse).
hasVariant is required: every request must declare whether to exclude variants — 0 keep variants, 1 exclude variants. Pick 1 when you want de-duplicated keyword coverage for a parent listing.
Natural vs ad terms: type filters the search-term channel — ["0"] organic (organic search terms) only, ["1"] ad (ad search terms) only; omit to get both. Combine with the naturalRank / adRank range filters to qualify positioning.
Back-search metrics live in dimension: each returned term carries a dimension object with the reverse-lookup-specific metrics — type (0 organic / 1 ad), naturalRank (the SKU's natural rank for that term), exposure (exposure share, 0–1), conversion (conversion rate, 0–1), and x (opaque position indicator). The input filters type / naturalRank / adRank / exposure / conversion filter on these same per-term values. Note: relevancy is defined in the schema but is not returned by this endpoint.
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.
Match mode: matchType controls how includeKeywords / excludeKeywords are matched — 0 exact, 1 fuzzy.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| skuIds | array | yes | Reverse-lookup SKU list, max 20. |
| hasVariant | integer | yes | Variant exclusion: 0 keep variants, 1 exclude variants. |
| page | object | yes | Pagination {page, pageSize, orders[]}. page from 1 (default 1), pageSize default 20. orders[] = {field, direction} with direction DESC/ASC. |
| matchType | integer | no | Keyword match mode: 0 exact, 1 fuzzy. |
| type | array | no | Search-term channel filter: 0 organic, 1 ad; omit for both. |
| historyDate | string | no | Historical month yyyy-MM (e.g. 2026-02); omit for current period. |
| includeKeywords | array | no | Terms that must appear (max 1000). |
| excludeKeywords | array | no | Terms to exclude (max 1000). |
| searchVolume | {min,max} | no | Monthly search volume range. |
| searchChange30 | {min,max} | no | 30-day search change range. |
| wordCount | {min,max} | no | Keyword word/char count range. |
| productViews | {min,max} | no | Product view range. |
| products | {min,max} | no | Product count range. |
| sellers | {min,max} | no | Seller count range. |
| marketSpace | {min,max} | no | Market space range. |
| conversionSharing | {min,max} | no | Conversion concentration range. |
| uniqQueriesWCa | {min,max} | no | Cart-add count range. |
| ca | {min,max} | no | Cart-add conversion rate range. |
| conversion | {min,max} | no | Conversion rate range. |
| titleDensity | {min,max} | no | Title density range. |
| adRivalCount | {min,max} | no | Ad competitor count range. |
| adRank | {min,max} | no | Ad rank range. |
| naturalRank | {min,max} | no | Natural rank range. |
| exposure | {min,max} | no | Exposure 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. skuIds, hasVariant, and page are all required.
Calling the Tool
- API Endpoint:
/seerfar/ozon/keywordBackSearch(full parameters/responses/error codes inreferences/api.md) - Python Script:
python scripts/ozon_keyword_back_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-keyword-back-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. Reverse-lookup a single SKU's traffic keywords (sort by search volume)
{"skuIds": [4380710124], "hasVariant": 0, "page": {"page": 1, "pageSize": 10, "orders": [{"field": "searchVolume", "direction": "DESC"}]}}
2. Organic terms where the SKU ranks near the top
{"skuIds": [4380710124], "hasVariant": 1, "type": ["0"], "naturalRank": {"max": 10}, "page": {"page": 1, "pageSize": 20, "orders": [{"field": "searchVolume", "direction": "DESC"}]}}
3. Ad search words only, with an ad-rank floor
{"skuIds": [4380710124], "hasVariant": 0, "type": ["1"], "adRank": {"max": 50}, "page": {"page": 1, "pageSize": 20, "orders": [{"field": "searchVolume", "direction": "DESC"}]}}
4. Narrow with include / exclude lists
{"skuIds": [4380710124], "hasVariant": 0, "page": {"page": 1, "pageSize": 20}, "includeKeywords": ["платье"], "excludeKeywords": ["ремень"], "matchType": 1}
How to Build Queries
- Always lead with
skuIds+hasVariant: both are required and define the reverse-lookup target. Use real Ozon SKU IDs (the same IDs returned by Seerfar Ozon product / shop / category skills). - Lead with
page.orders: sort by the metric you care about (searchVolumeDESC for traffic weight,sellersASC for low competition,count30GrowthRateDESC for rising terms). - Split organic vs ad with
type: pass["0"]or["1"]to focus a listing-optimization pass (organic) or an ads pass (ad), then boundnaturalRank/adRankto qualify positioning — these filter on the values surfaced in each row'sdimension. - Use
includeKeywords/excludeKeywordsto steer: force in must-have modifiers and strip noise without running a second query.
Display Rules
- Present data only: show reverse-looked-up keyword metrics in a clear table without subjective advice.
- Lead with keyword columns:
query/queryCn(Chinese translation), thensearchVolume,count30GrowthRate,productCount,sellers,avgPrice; showdimension.naturalRankanddimension.type(organic/ad) to convey how the SKU ranks for each term. - Russian keywords: preserve the original
query; thequeryCnfield provides a Chinese translation when available. - Channel tag: when
typeis omitted and both organic and ad rows are present, showdimension.type(0organic /1ad) anddimension.naturalRankso 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 the SKU list or filters.
Important Limitations
skuIds+hasVariant+pagerequired: a payload missing any of these is rejected.skuIdscapped at 20: pass more than 20 and the request is rejected or truncated.- No keyword seed: this endpoint has no
keywordparameter — it is reverse (SKU → keywords), not expansion (keyword → keywords). Use the keyword mining skill to expand from a seed. - No
searchDate/categoriesinput: onlyhistoryDate(historical month) is accepted; there is no category filter. Use the market keyword search skill for month- or category-scoped browsing. - Nested fields:
products[*](Top Products) anddimension(per-term back-search metrics:type,naturalRank,exposure,conversion,x) are structured and decision-useful — seereferences/api.mdfor sub-fields.categoryInfosis defined in the schema/columns but is not returned indata[*]on this endpoint (same as the keyword-mining sibling; the market-keyword-search sibling does return it — don't assume parity).relevancyis likewise defined in the schema but not returned.
User Expression & Scenario Quick Reference
Applicable — SKU-driven Ozon keyword reverse lookup:
| User Says | Scenario |
|---|---|
| "Reverse-lookup keywords for this Ozon product / SKU" | Reverse keyword lookup for a SKU |
| "Which search terms drive traffic to this Ozon listing" | Traffic-word discovery for a listing |
| "Ozon competitor SKU ranking/traffic keywords" | Competitor traffic-word mining |
| "Ozon product organic vs ad keywords" | Organic vs ad term breakdown |
| "Ozon keyword reverse lookup by SKU" | Generic reverse keyword lookup |
Not applicable — Needs beyond SKU-driven reverse lookup:
- Browse/rank the whole market's hot keywords (no SKU) → use the Seerfar Ozon market keyword search skill.
- Expand outward from a seed keyword → use the Seerfar Ozon keyword mining skill.
- A specific SKU's price/sales/stock → use a product-level Seerfar Ozon data source.
- A specific seller's catalog → use the Seerfar Ozon shop search skill.
- Category-tree browsing → use the Seerfar Ozon category search skill.
Boundary judgment: if the user has a product/SKU (own or competitor) and wants the search terms it ranks for, start here. If they want to browse the market (no SKU) or expand from a seed keyword, route to the market keyword search or keyword mining skill respectively.