Ozon Product Reviews
ozon_reviewsFetch Ozon product review texts, star distribution, and per-review details like score, helpfulness, author, and date. Automatically paginates up to your limit, deduplicates, and returns partial results if a later page fails.
Instructions
Fetch Ozon product review texts + star distribution via composer-api.bx.
Tier-1 (curl_cffi) tried first, Tier-2 (Chrome CDP) fallback — same path as ozon_card. Returns review texts (comment/positive/negative), per-review score, helpfulness votes, author first name, date, plus the overall star distribution and total count.
Pages are walked automatically (30/page) until limit texts are collected
or pages run out, deduplicating by review uuid. Hard cap of 10 pages.
Reviews are pooled per card family, not per product
Ozon shows one shared pool for every variant of a card, and those variants
are frequently different products — different wattage, different brand. So
rating_score and distribution describe the POOL, not the SKU asked for.
Each review carries item_id, the SKU it is really about; own_reviews
counts the returned reviews whose item_id matches requested_item_id, and
pool_variants names every SKU in the pool. Filter by item_id before
drawing any conclusion about a product, and say so when own_reviews is 0 —
a headline 4.8 can be borrowed entirely from neighbours.
Return Format
OzonReviewsResponse: {status, sort, rating_score, reviews_count, distribution, returned, partial, stop_reason, last_error, requested_limit, reviews, requested_item_id, own_reviews, pool_variants, meta} on success. A later-page failure with reviews already collected is a PARTIAL SUCCESS (partial=True, stop_reason set), NOT an error.
Error Format
Raises ToolError on validation (BadRequestError), transport/block (TransportDownError), or parser drift (ParserDriftError) — but ONLY when no reviews have been collected yet. Once at least one page yielded reviews, a later-page failure degrades to a partial-success return.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Review ordering. Aliases: "recent"/"default" -> newest, "best"/"highest" -> highest rated first, "worst"/"lowest"/"complaints" -> LOWEST rated first. Raw API values published_at_desc/score_desc/score_asc also accepted. | recent |
| limit | No | Max review texts to return (1..100). Distribution+total always full. | |
| sku_or_path | Yes | SKU integer-as-string, full Ozon URL, or /product/<digits>/ path. Normalized to /product/<digits>/reviews/ (SSRF-allowlisted). |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| sort | No | ||
| _meta | No | ||
| status | No | ||
| partial | No | ||
| reviews | No | ||
| returned | No | ||
| tier_used | No | ||
| last_error | No | ||
| own_reviews | No | ||
| stop_reason | No | ||
| distribution | No | ||
| rating_score | No | ||
| pages_fetched | No | ||
| pool_variants | No | ||
| reviews_count | No | ||
| requested_limit | No | ||
| requested_item_id | No |