Products | Query

Initiate a scroll session for retrieving large product datasets.

Bulk extraction endpoint — full-catalog syncs (PIM, ERP, marketplace), exports, search-index reindexing. Also required past the 10,000 offset cap on POST /Query.

Returns a scrollId and the first batch. Pass scrollId to GET /api/products/Query/Scroll/{scrollId} until it comes back null. Sessions expire after 10 minutes of inactivity; per-tenant concurrency is capped.

Same filter set as POST /Query (see request schema) and identical response shape — price context filtering, inventory cleanup and property-list shaping apply on both the initial batch and continuations. savedSearchId works here too (bulk-extract a saved search); the saved search is resolved once at initiation, so edits to it never affect an active scroll.

Default values are omitted

To keep responses small, a field is left out when it holds its default value: false, 0, null, the empty date 0001-01-01T00:00:00, the empty id 00000000-0000-0000-0000-000000000000, or an enum's first value. A missing field means that value, not "unknown". "" and [] are real values and are always returned.

A field marked nullable in the schema has null as its default, so it is left out only when it is null — a nullable boolean holding false, or a nullable number holding 0, is still returned.

For full bulk-sync recipes (delta queries, idempotent pipelines) and response-size guidance, see https://docs.omnium.no/docs/Integrations/product-query.

Canonical example

Delta sync — capture every product touched in a 5-minute window (modifications, publish/ unpublish events, price activations/deactivations) in a single pass. Run on a cron for an idempotent replication pipeline:

{
  "marketIds": ["NOR"],
  "scrollSize": 500,
  "isUnionDeltaQuery": true,
  "modifiedFrom": "2025-01-08T10:15:00Z",
  "startPublishFrom": "2025-01-08T10:15:00Z",
  "startPublishTo": "2025-01-08T10:20:00Z",
  "stopPublishFrom": "2025-01-08T10:15:00Z",
  "stopPublishTo": "2025-01-08T10:20:00Z",
  "priceActivatedFrom": "2025-01-08T10:15:00Z",
  "priceActivatedTo": "2025-01-08T10:20:00Z",
  "priceDeactivatedFrom": "2025-01-08T10:15:00Z",
  "priceDeactivatedTo": "2025-01-08T10:20:00Z"
}
post/api/products/Query/Scroll

Request

  • Base URL: https://api.omnium.no (the document declares no server; this is the origin it was published from)
  • URL: https://api.omnium.no/api/products/Query/Scroll
  • Auth: API key in header Authorization

Request body

scrollSizeinteger nullable

Number of items per scroll batch. Default applied when null: 500. Allowed range: 100–1000.

savedSearchIdstring nullable

ID of a saved product search (created in the Omnium UI) to run as the base query. The saved search supplies the filters — including UI-only filters that have no counterpart on this model — and every field explicitly set on this request then overrides the saved value for that field (replace semantics: lists and values are replaced, never merged, and an explicitly empty value clears the saved filter). Pagination, sorting (when given) and field selection always come from this request. Price context is never taken from the saved search — pass market/store/customer context explicitly to scope prices. An unknown ID, or the ID of a non-product saved search, is rejected with 400. Mutually exclusive with Omnium.Public.Products.Query.OmniumProductQueryRequestBase.SearchGroupId.

searchGroupIdstring nullable

ID of a search group to AND onto this query as membership. Mutually exclusive with Omnium.Public.Products.Query.OmniumProductQueryRequestBase.SavedSearchId. Extra filters on this request AND with membership; they do not replace member saved-search fields. Unknown id → 400.

marketIdsstring[] nullable

Filter products by market IDs (product availability). Also the default market for pricing unless overridden by Omnium.Public.Products.Query.OmniumProductQueryRequestBase.PriceContext. The first market is the primary context for price sorting and language resolution.

marketGroupIdsstring[] nullable

Filter products by market group IDs (product availability); all member markets are included. Also the default market scope for pricing unless overridden by Omnium.Public.Products.Query.OmniumProductQueryRequestBase.PriceContext.

isMarketRequiredboolean nullable

Controls how products without any market are treated. A product with no markets counts as available in every market, so it matches any market filter by default.

  • true: the product must carry one of the requested markets — products with no market are excluded.
  • false: products with no market are returned alongside the market matches.
  • null (default): the tenant configuration decides. Only applies when Omnium.Public.Products.Query.OmniumProductQueryRequestBase.MarketIds or Omnium.Public.Products.Query.OmniumProductQueryRequestBase.MarketGroupIds is set.
storeIdsstring[] nullable

Filter products by store IDs (assortment availability). Also the default store scope for pricing unless overridden by Omnium.Public.Products.Query.OmniumProductQueryRequestBase.PriceContext. The first store is the primary context for price sorting and assortment.

customerIdstring nullable

Customer ID for customer assortment filtering (availability) and customer-specific pricing. The price customer can be overridden independently via Omnium.Public.Products.Query.OmniumProductQueryRequestBase.PriceContext.

customerGroupsstring[] nullable

Customer groups for assortment (availability) and group-specific pricing. The price groups can be overridden independently via Omnium.Public.Products.Query.OmniumProductQueryRequestBase.PriceContext.

priceValidFromstring date-time nullable

Only return prices valid from this date

priceValidTostring date-time nullable

Only return prices valid until this date

includeAllPricesboolean

When true, all prices are returned regardless of price context. Products are still filtered by the top-level availability fields. Use this for data export or price management scenarios. Default: false. Overridable via Omnium.Public.Products.Query.OmniumProductQueryRequestBase.PriceContext.

isCustomerClubMemberboolean nullable

Controls customer club (member) pricing. Club prices are excluded by default.

  • true: treated as a club member — club prices are included and the single 'price' field can be a club price (the lowest applicable price wins).
  • null (default) or false: club prices are excluded and the single 'price' field is the lowest non-club price. Overridable via Omnium.Public.Products.Query.OmniumProductQueryRequestBase.PriceContext. Ignored when Omnium.Public.Products.Query.OmniumProductQueryRequestBase.IncludeAllPrices is true.
searchTextstring nullable

Free text search query. Max 300 characters.

productIdsstring[] nullable

Filter by Product.ProductId (your business product ID). Strict match — does not search SKU or other ID fields. Use Omnium.Public.Products.Query.OmniumProductQueryRequestBase.SkuIds for SKU lookups, Omnium.Public.Products.Query.OmniumProductQueryRequestBase.Ids for internal IDs, or Omnium.Public.Products.Query.OmniumProductQueryRequestBase.AnyIds when the ID type is unknown.

skuIdsstring[] nullable

Filter by SKU. Matches Product.SkuId OR Variants[].SkuId — a SKU is treated as a single logical concept regardless of whether it lives at the product or variant level.

idsstring[] nullable

Filter by Product.Id (the internal Omnium document identifier). Strict match. Most consumers should use Omnium.Public.Products.Query.OmniumProductQueryRequestBase.ProductIds instead.

anyIdsstring[] nullable

Filter by ANY ID type. Matches against Product.ProductId, Product.SkuId, Product.Id, Product.ParentId, or Variants[].SkuId. Use this when you don't know which type of ID you have (e.g. barcode scanning, dirty data imports, customer-provided IDs). Prefer the strict fields (Omnium.Public.Products.Query.OmniumProductQueryRequestBase.ProductIds, Omnium.Public.Products.Query.OmniumProductQueryRequestBase.SkuIds, Omnium.Public.Products.Query.OmniumProductQueryRequestBase.Ids) when the ID type is known — they are more predictable.

productParentIdsstring[] nullable

Filter by parent product IDs

productCategoryIdsstring[] nullable

Filter by product category IDs

excludedProductCategoryIdsstring[] nullable

Product category IDs to exclude from results

excludedProductIdsstring[] nullable

Product IDs to exclude from results

gtinsstring[] nullable

Filter by GTIN codes (searches EAN, GTINS, and Units.EAN on products and variants)

tagsstring[] nullable

Filter by product tags

excludedTagsstring[] nullable

Tags to exclude from results

externalIdsstring[] nullable

Filter by external IDs

supplierIdsstring[] nullable

Filter by supplier IDs

supplierSkuIdsstring[] nullable

Filter by supplier SKU IDs

seoUrisstring[] nullable

Filter by SEO URIs

componentIdsstring[] nullable

Filter by component IDs (returns products containing any of the specified component IDs)

promotionIdsstring[] nullable

Filter by promotion IDs (returns products with active prices matching any of the specified promotion IDs)

assortmentCodeIdsstring[] nullable

Filter by assortment code IDs

ignoreCustomerAssortmentboolean

If true, the customer's assortment codes from the price context will not be applied as a filter

isAssortmentCodesRequiredboolean nullable

When true, the product must have a matching assortment code. When null, uses the tenant configuration default.

productTypestring nullable

Filter by product type

isActiveboolean nullable

True: only active products. False: only inactive products. Null: both.

isSkuboolean nullable

True: only SKU products (without variants). False: only non-SKU products. Null: both.

isBundleboolean nullable

True: only bundle products. False: only non-bundles. Null: both.

isPackageboolean nullable

True: only package products. False: only non-packages. Null: both.

isDeletedboolean nullable

True: only deleted products. False: only non-deleted products. Null (default): both.

isInStockboolean nullable

True: only products in stock. False: only products not in stock. Null: both. Should be combined with InStockWarehouseIds or InStockMarketIds for specific filtering.

isOnSaleboolean nullable

True: only products on sale. False: only products not on sale. Null: both.

isPublishedboolean nullable

True: only products published today. Null: no publication filter.

isMainProductVariantboolean nullable

True: only main product variants. Null: both.

isAvailableOnlineboolean nullable

True: only products available online. False: only products not available online. Null: both.

isLocalProductboolean nullable

True: only local products. False: only non-local products. Null: both. Only relevant when IsLocalProductsEnabled is enabled in product settings.

modifiedFromstring date-time nullable

Filter products modified on or after this date

modifiedTostring date-time nullable

Filter products modified on or before this date

startPublishFromstring date-time nullable

Filter products published on or after this date

startPublishTostring date-time nullable

Filter products published on or before this date

stopPublishFromstring date-time nullable

Filter products with publication end date on or after this date

stopPublishTostring date-time nullable

Filter products with publication end date on or before this date

priceFromnumber nullable

Filter products with price greater than or equal to this value. Uses the first market from MarketIds for price resolution.

priceTonumber nullable

Filter products with price less than or equal to this value. Uses the first market from MarketIds for price resolution.

priceActivatedFromstring date-time nullable

Filter products with prices activated on or after this date

priceActivatedTostring date-time nullable

Filter products with prices activated on or before this date

priceDeactivatedFromstring date-time nullable

Filter products with prices deactivated on or after this date

priceDeactivatedTostring date-time nullable

Filter products with prices deactivated on or before this date

isUnionDeltaQueryboolean nullable

When true, uses OR logic for delta queries: returns products modified OR with price changes. When false (default), uses AND logic.

productLanguagestring nullable

Language code (e.g. "en", "no", "es") for filtering product content

ignoreLanguageFilterboolean nullable

When true, ignores language filtering and searches across all languages. When false/null, uses the specified ProductLanguage. If no language is specified and markets are provided, resolves language from the market.

inStockWarehouseIdsstring[] nullable

Warehouse IDs for the IsInStock filter. If not set, IsInStock matches any warehouse.

inStockMarketIdsstring[] nullable

Market IDs for the IsInStock filter. If not set, IsInStock matches any market.

includeInventoryForSelectedStoresboolean nullable

When true, inventory data for selected stores is included in the response

propertyListIdstring nullable

Property list ID controlling which properties are RETURNED in the response (response shaping, not filtering). Uses predefined named property lists from tenant settings — only properties whose keys are in the named list will be present on the returned products.

Response

Scroll initiated successfully

scrollIdstring nullable

Scroll continuation token. Pass this to the scroll continuation endpoint to fetch the next batch. Null when there are no more results.

totalHitsinteger

Total number of items matching the query (not just this page)

Changes

No recorded changes to this operation across all 1 revision of this API.