List products
Returns one page of products matching the given filters. No single filter is required, but you should almost always pass at least one identifying parameter (url, external_id+marketplace, or seller_code) — otherwise you get a broad slice of the whole dataset.
Authorization
bearerAuth Bearer token — see API Overview for how to get one and use it.
In: header
Query Parameters
Value in
- "ozon"
- "wildberries"
- "yandex_market"
- "lamoda"
The seller's id on the marketplace. Usually paired with marketplace — on its own it isn't guaranteed unique across marketplaces.
The seller's or brand's own internal SKU for this listing (not our external_id). Deliberately not required to pair with seller_id — the real brand use case is usually "find my SKU wherever it's being resold," not "only under one specific reseller."
The marketplace's own SKU (WB nmId, Ozon sku, etc.). Only unique paired with marketplace — pass both.
A product page URL. Query string and fragment (?utm_source=..., #reviews, etc.) are stripped automatically before matching — paste it exactly as copied from a browser.
uriContainment match against category_path (any level of the hierarchy, not just the leaf). See GET /categories for the available values.
Exact brand name match, case-insensitive — not a substring search like q. Brand casing varies across marketplaces/submissions as scraping noise, not a meaningful distinction, so the match ignores it. See GET /brands for the available values.
Simple, case-insensitive name search (no stemming or morphological matching).
length <= 200Filter by trust status. When omitted, products of every status are returned — the API deliberately never withholds unverified/flagged rows; the caller decides what to trust.
Value in
- "unverified"
- "verified"
- "flagged"
Invalid or missing values are silently clamped to the default rather than rejected with a 400.
1 <= value1500 max — deliberately generous relative to a typical UI-facing API, sized for bulk pulls.
1 <= value <= 500100Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/products?marketplace=wildberries&seller_id=2557&seller_code=BV2648-010&external_id=231151629&url=https%3A%2F%2Fwww.wildberries.ru%2Fcatalog%2F231151629%2Fdetail.aspx&category=%D0%97%D0%BE%D0%BE%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D1%8B&brand=Nike&q=Nike"{ "data": [ { "id": "e86bee19-9cc9-4a83-b9cc-6b61f1209d90", "marketplace": "wildberries", "external_id": "231151629", "url": "https://www.wildberries.ru/catalog/231151629/detail.aspx", "name": "Air Rift Breathe White Pure Platinum Women's", "brand": "Nike", "category_path": [ "Обувь", "Женская", "Туфли и лоферы" ], "attributes": { "color": "желтый", "season": "демисезон", "is_authentic": true }, "image_cover": "https://basket-15.wbbasket.ru/vol2311/part231151/231151629/images/big/1.webp", "image_gallery": [ "https://basket-15.wbbasket.ru/vol2311/part231151/231151629/images/big/1.webp" ], "video_cover": null, "video_gallery": [], "seller": { "id": "3994154", "name": "POIZON(ДЭВУ)", "code": "2604540" }, "trust_status": "unverified", "price_flagged": false, "prices": [ { "country_code": "ru", "region_code": null, "user_auth_status": "anonymous", "price": 7093, "old_price": 8651, "currency": "RUB", "stock_status": null, "stock_quantity": null, "recorded_at": "2026-08-02T23:21:53.185302+00:00" } ], "special_price": [ { "country_code": "ru", "region_code": "", "user_auth_status": "anonymous", "min": 6783, "max": 6880 } ], "stats": null, "first_seen_language": "ru", "default_language": "ru", "translations": [ { "language": "ru", "name": "Air Rift Breathe White Pure Platinum Women's", "category_path": [ "Обувь", "Женская", "Туфли и лоферы" ], "attributes": { "color": "желтый", "season": "демисезон", "is_authentic": true }, "updated_at": "2026-08-02T23:21:53.081+00:00" } ], "first_seen_at": "2026-08-01T01:03:17.913664+00:00", "last_seen_at": "2026-08-02T23:21:53.081+00:00" } ], "meta": { "total": 13663, "page": 1, "page_size": 100 }}Get product price history GET
The full time series of price and stock observations for a product — unlike the current price (already included in `GET /products` and `GET /products/{id}`), this endpoint is only needed for historical trend analysis.
Get one scrape session's status GET
`status` is `completed` once every submission in the session has left `pending`/`processing` — not necessarily "every item successfully merged"; see `stats` for the exact per-status breakdown. A session with `stats.total: 0` is always `processing`, never `completed`, whether because nothing has arrived yet or (much later) because its submissions have already aged out of retention.