GET/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/products/search
List and search the store's products Experimental
Returns the store's sellable products -- published in the assortment, released and priced -- as summaries with names, main image, prices and availability. Filter by dimensions, search by text, sort, and page with the returned cursor. Without a query the default sort is newest; with a query it is relevance. A cursor is only valid for the filters and sort it was issued for.
Parameters
tenantIdrequiredeComStoreIdrequiredqueryoptionalFree text matched against number, name, brand, groups, sku numbers and barcodes. Comma separates alternatives, space requires all words.
productIdoptionalOnly these products, by id (repeatable). A lookup: use it to re-read known products rather than searching for them.
brandIdoptionalRepeatable
productCategoryIdoptionalRepeatable
mainProductGroupIdoptionalRepeatable
subProductGroupIdoptionalRepeatable
inStockoptionaltrue lists only products with a sku available for ecom at its resolved fulfillment warehouse
sortoptionalrelevance, newest, name, price_asc or price_desc, optionally prefixed by in_stock to list available products first, e.g. in_stock,name
limitoptionalPage size, default 24, max 100
- Format: int32
cursoroptionalnextCursor or previousCursor from a page already served
Responses
application/jsoncurrencyIsoCoderequiredISO 4217 currency of every price on this page
Example"NOK"itemsrequiredShow item fields
A product as listed in the storefront catalog
brandrequiredShow child fields
idrequiredUsable as a filter value
namerequiredDimension name by language code, as the product_schema endpoints return it
Show child fields
valuerequiredShow dictionary values
Each dictionary key maps to .
idrequiredFetch details with GET /products/{productId}
inStockrequiredWhether any published sku of the product is available from its resolved fulfillment warehouse
ExampletruemainImageUrloptionalDelivery URL of the product's main image
mainProductGrouprequiredShow child fields
idrequiredUsable as a filter value
namerequiredDimension name by language code, as the product_schema endpoints return it
Show child fields
valuerequiredShow dictionary values
Each dictionary key maps to .
newFromoptionalFirst day the product is marketed as new
- Format: date
Example"2026-01-14"newTooptionalLast day the product is marketed as new
- Format: date
Example"2026-01-14"offersrequiredBasket offers such as 3 for 2 that cover the product; prices above do not include them
Show item fields
A basket offer that covers the product, such as 3 for 2. It has no unit price of its own; the cart applies it once the basket qualifies.
campaignIdrequiredcampaignTyperequiredKind of offer; currently only THREE_FOR_TWO
Allowed values"NORMAL""THREE_FOR_TWO"Example"THREE_FOR_TWO"codeoptional- Example
"TFT-SUMMER" loyaltyProgramMembershipRequiredrequiredWhether only loyalty members get the offer
Examplefalsenamerequired
pricerequiredGross prices in the store's currency: the ordinary price and, where a campaign covers a sku, the lowest campaign and loyalty member prices
Show child fields
campaignPriceoptional- Format: BigDecimal
- Pattern: ^-?\d+(\.\d{1,2})?$
Example"249.00"loyaltyMemberPriceoptional- Format: BigDecimal
- Pattern: ^-?\d+(\.\d{1,2})?$
Example"239.00"pricerequiredRegular price
- Format: BigDecimal
- Pattern: ^-?\d+(\.\d{1,2})?$
Example"299.00"
productCategoryrequiredShow child fields
idrequiredUsable as a filter value
namerequiredDimension name by language code, as the product_schema endpoints return it
Show child fields
valuerequiredShow dictionary values
Each dictionary key maps to .
productNamerequiredProduct name by language code, as GET /products/{productId} returns it
Show child fields
valuerequiredShow dictionary values
Each dictionary key maps to .
productNumberrequired- Example
"100234" subProductGrouprequiredShow child fields
idrequiredUsable as a filter value
namerequiredDimension name by language code, as the product_schema endpoints return it
Show child fields
valuerequiredShow dictionary values
Each dictionary key maps to .
nextCursoroptionalPass as cursor to get the next page; null on the last page
previousCursoroptionalPass as cursor to get the previous page; null on the first page
400Invalid filter ID, sort, limit or cursor
Invalid filter ID, sort, limit or cursor
application/jsonerrorrequiredStable error code
Example"INVALID_REQUEST"messagerequiredHuman-readable error message
Example"Invalid customer ID format"resolutionrequiredSuggested next action
Example"Correct the customer ID and retry the request"
401Response
application/jsonerrorrequiredStable error code
Example"INVALID_REQUEST"messagerequiredHuman-readable error message
Example"Invalid customer ID format"resolutionrequiredSuggested next action
Example"Correct the customer ID and retry the request"
403Response
application/jsonerrorrequiredStable error code
Example"INVALID_REQUEST"messagerequiredHuman-readable error message
Example"Invalid customer ID format"resolutionrequiredSuggested next action
Example"Correct the customer ID and retry the request"