Fetch all variants
Fetch all variants with pagination and filtering Deprecated. Use https://graphql.enad.io instead.
/api/v1/omni/:app_id/:store_group/:market/:locale/variants- API
- Shopper
- OpenAPI
- shopper-api
- Updated
- Apr 26, 2026
shopper-api:GET:/api/v1/omni/:app_id/:store_group/:market/:locale/variants
Fetch all variants with pagination and filtering Deprecated. Use https://graphql.enad.io instead.
API ownership
- API family: Shopper API
- Best for: Public storefront catalog reads and shopper-facing product discovery.
- Prefer Search API for: New product discovery, facets, autocomplete, and other search-heavy storefront flows.
- Do not use from: Trusted admin integrations that create, update, or delete merchant-owned data.
- Guide route: /apis/shopper/latest
The OpenAPI contract defines the method, path, parameters, request body, and responses for this operation.
Operation
- Method:
GET - Path:
/api/v1/omni/:app_id/:store_group/:market/:locale/variants - Summary: Fetch all variants
- Description: Fetch all variants with pagination and filtering Deprecated. Use https://graphql.enad.io instead.
- OpenAPI contract: shopper-api
- Operation ID: Not documented in the OpenAPI contract.
Operation key uses API family, method, and path because this OpenAPI contract does not publish an operation ID.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| app_id | path | Yes | string | App ID |
| store_group | path | Yes | string | Store group |
| locale | path | Yes | string | Alpha 2 country code. e.g se |
| market | path | Yes | string | The related product market |
| page | query | No | integer | Page number (default: 1) |
| per_page | query | No | integer | Items per page (default: 50, max: 50) |
| only_active | query | No | boolean | Filter only active products and variants |
| in_stock | query | No | boolean | Filter by stock availability |
| in_stock_in | query | No | string | Filter by stock availability in a specific warehouse (by warehouse slug) |
| sort | query | No | string | Sort order. One of created_at_desc, created_at_asc, name_asc, name_desc, category_order_asc, category_order_desc, collection_order_asc, collection_order_desc, tag_order_asc, tag_order_desc, variant_number_asc, variant_number_desc, variant_name_asc, variant_name_desc, price_asc, price_desc |
| sku | query | No | string[] | Filter by SKUs (parent product) |
| variant_name | query | No | string[] | Filter by Variant Names |
| collection | query | No | string[] | Filter on collections slugs (parent product) |
| tag | query | No | string[] | Filter by tags key (parent product). e.g black-friday |
| slug | query | No | string[] | Filter by product slugs (parent product) |
| brand | query | No | string[] | Filter by brand slug (parent product) |
| serie | query | No | string[] | Filter by serie slug (parent product) |
| category | query | No | string[] | Filter by category slug (parent product) |
| smart_list | query | No | string[] | Filter by smart list slug |
| static_list | query | No | string[] | Filter by static list slug |
| not_in_sku | query | No | string[] | Exclude products with these SKUs (parent product) |
| not_in_category | query | No | string[] | Exclude products in these categories (by slug) (parent product) |
| not_in_collection | query | No | string[] | Exclude products in these collections (by uri) (parent product) |
| not_in_tag | query | No | string[] | Exclude products with these tags (by key) (parent product) |
| not_in_brand | query | No | string[] | Exclude products with these brands (by slug) (parent product) |
| not_in_serie | query | No | string[] | Exclude products with these series (by slug) (parent product) |
| price_gte | query | No | number | Filter by minimum price (inclusive) |
| price_lte | query | No | number | Filter by maximum price (inclusive) |
| attributes | query | No | string[] | Filter by attributes (format: template_key/value_key, e.g., color/blue). Product or Variant must match all specified attributes. |
| category_id | query | No | string[] | Filter by category IDs (UUIDs). Product must be in at least one of the specified category IDs. |
| not_in_category_id | query | No | string[] | Exclude products in these category IDs (UUIDs). |
| has_attribute_template | query | No | string[] | Find all variants who have a specific attribute template mapped, e.g size |
| search | query | No | string | Full text search on variants |
| group_by_attribute_template | query | No | string | Group variants by an attribute template key (e.g., 'color'). When used, only one variant per product and attribute value is returned. |
| related_variants_attr | query | No | string[] | Return related variants filtered by attribute combinations (e.g., 'color', 'color,size'). For single attributes, returns unique variants by that attribute within parent products. For two attributes, returns all variants in catalog sharing the first attribute values with unique second attribute values. |
Request body
Not documented in the OpenAPI contract.
Responses
| Status | Description | Content |
|---|---|---|
| 200 | OK | application/json (object) |
| 400 | Invalid parameters | application/json (object) |
| 500 | Internal server error | application/json (object) |
200 - object
Paginated Variant With Product Info List
| Property | Type | Required | Details |
|---|---|---|---|
data | object[] | No | - |
page | integer | No | - |
total | integer | No | - |
total_pages | integer | No | - |
Variant With Product Info
| Property | Type | Required | Details |
|---|---|---|---|
attributes | object | No | - |
brands | object | No | - |
categories | object[] | No | - |
collections | object[] | No | - |
created_at | string | No | - |
custom_fields | object | No | - |
description | string | No | - |
dimensions | object | No | - |
files | object[] | No | - |
html_description | string | No | - |
html_short_description | string | No | - |
id | string | No | - |
image_url | string | No | - |
images | object[] | No | - |
inventories | object[] | No | - |
is_active | boolean | No | - |
meta_description | string | No | - |
meta_title | string | No | - |
packaging_dimensions | object | No | - |
parent_attributes | object | No | - |
prices | object[] | No | - |
product_name | string | No | - |
product_number | string | No | - |
rank | number | No | - |
redirects | object | No | - |
related_variants | object[] | No | - |
shipping_attributes | string[] | No | - |
short_description | string | No | - |
slug | string | No | - |
slug_translations | object | No | - |
status | string | No | - |
tags | object[] | No | - |
third_party_links | object[] | No | - |
updated_at | string | No | - |
validate_stock | boolean | No | - |
variant_name | string | No | - |
variant_number | string | No | - |
videos | object[] | No | - |
Product Brand
| Property | Type | Required | Details |
|---|---|---|---|
address | object | No | - |
name | string | No | - |
series | object | No | - |
slug | string | No | - |
Product Category
| Property | Type | Required | Details |
|---|---|---|---|
attributes | object | No | - |
cover_url | string | No | - |
full_path_name | string[] | No | - |
full_uri_translations | object | No | - |
id | string | No | - |
name | string | No | - |
order | integer | No | - |
parent_id | string | No | - |
redirects | object | No | - |
slug_translations | object | No | - |
sort_order | integer | No | - |
status | string | No | - |
sub_categories | object[] | No | - |
uri | string | No | - |
Product Collection
| Property | Type | Required | Details |
|---|---|---|---|
children | object[] | No | - |
id | string | No | - |
order | integer | No | - |
parent_id | string | No | - |
title | string | No | - |
uri | string | No | - |
Dimensions
| Property | Type | Required | Details |
|---|---|---|---|
capacity_milliliter | integer | No | - |
depth | integer | No | - |
diameter | integer | No | - |
height | integer | No | - |
length | integer | No | - |
weight | integer | No | - |
width | integer | No | - |
File
| Property | Type | Required | Details |
|---|---|---|---|
attributes | object | No | - |
title | string | No | - |
type | string | No | - |
url | string | No | - |
Image
| Property | Type | Required | Details |
|---|---|---|---|
alt | string | No | - |
attributes | object | No | - |
blurhash | string | No | - |
custom_fields | object | No | - |
sort | integer | No | - |
title | string | No | - |
url | string | No | - |
Product Inventory With Information
| Property | Type | Required | Details |
|---|---|---|---|
inventory_date | string | No | - |
quantity | integer | No | - |
warehouse | object | No | - |
Variant Prices
| Property | Type | Required | Details |
|---|---|---|---|
channel_type | enum("B2B", "B2C") | No | - |
country_of_sale | string | No | - |
markets | object[] | No | - |
store_group_description | string | No | - |
store_group_id | string | No | - |
store_group_name | string | No | - |
store_group_slug | string | No | - |
Related Variant
| Property | Type | Required | Details |
|---|---|---|---|
attributes | object | No | - |
image_url | string | No | - |
images | object[] | No | - |
inventories | object[] | No | - |
is_active | boolean | No | - |
prices | object[] | No | - |
tags | object[] | No | - |
validate_stock | boolean | No | - |
variant_id | string | No | - |
variant_name | string | No | - |
variant_number | string | No | - |
videos | object[] | No | - |
Tag
| Property | Type | Required | Details |
|---|---|---|---|
attributes | object | No | - |
created_at | string | No | - |
filterable | boolean | No | - |
id | string | No | - |
key | string | No | - |
name | string | No | - |
status | string | No | - |
updated_at | string | No | - |
Third Party Link
| Property | Type | Required | Details |
|---|---|---|---|
id | string | No | - |
title | string | No | - |
type | string | No | - |
url | string | No | - |
Video
| Property | Type | Required | Details |
|---|---|---|---|
attributes | object | No | - |
description | string | No | - |
title | string | No | - |
url | string | No | - |
{
"data": [
{
"attributes": {},
"brands": {
"address": {
"city": null,
"co_address": null,
"country": null,
"email": null,
"house_number": null,
"postal_code": null,
"state_province": null,
"street_address": null
},
"name": "string",
"series": {
"name": null,
"slug": null
},
"slug": "string"
},
"categories": [
{
"attributes": null,
"cover_url": null,
"full_path_name": null,
"full_uri_translations": null,
"id": null,
"name": null,
"order": null,
"parent_id": null,
"redirects": null,
"slug_translations": null,
"sort_order": null,
"status": null,
"sub_categories": null,
"uri": null
}
],
"collections": [
{
"children": null,
"id": null,
"order": null,
"parent_id": null,
"title": null,
"uri": null
}
],
"created_at": "string",
"custom_fields": {},
"description": "string",
"dimensions": {
"capacity_milliliter": 0,
"depth": 0,
"diameter": 0,
"height": 0,
"length": 0,
"weight": 0,
"width": 0
},
"files": [
{
"attributes": null,
"title": null,
"type": null,
"url": null
}
],
"html_description": "string",
"html_short_description": "string",
"id": "string",
"image_url": "string",
"images": [
{
"alt": null,
"attributes": null,
"blurhash": null,
"custom_fields": null,
"sort": null,
"title": null,
"url": null
}
],
"inventories": [
{
"inventory_date": null,
"quantity": null,
"warehouse": null
}
],
"is_active": false,
"meta_description": "string",
"meta_title": "string",
"packaging_dimensions": {
"capacity_milliliter": 0,
"depth": 0,
"diameter": 0,
"height": 0,
"length": 0,
"weight": 0,
"width": 0
},
"parent_attributes": {},
"prices": [
{
"channel_type": null,
"country_of_sale": null,
"markets": null,
"store_group_description": null,
"store_group_id": null,
"store_group_name": null,
"store_group_slug": null
}
],
"product_name": "string",
"product_number": "string",
"rank": 0,
"redirects": {},
"related_variants": [
{
"attributes": null,
"image_url": null,
"images": null,
"inventories": null,
"is_active": null,
"prices": null,
"tags": null,
"validate_stock": null,
"variant_id": null,
"variant_name": null,
"variant_number": null,
"videos": null
}
],
"shipping_attributes": [
"string"
],
"short_description": "string",
"slug": "string",
"slug_translations": {},
"status": "string",
"tags": [
{
"attributes": null,
"created_at": null,
"filterable": null,
"id": null,
"key": null,
"name": null,
"status": null,
"updated_at": null
}
],
"third_party_links": [
{
"id": null,
"title": null,
"type": null,
"url": null
}
],
"updated_at": "string",
"validate_stock": false,
"variant_name": "string",
"variant_number": "string",
"videos": [
{
"attributes": null,
"description": null,
"title": null,
"url": null
}
]
}
],
"page": 0,
"total": 0,
"total_pages": 0
}400 - object
Error Message
| Property | Type | Required | Details |
|---|---|---|---|
message | string | No | - |
Generated example (synthetic):
{
"message": "string"
}500 - object
Error Message
| Property | Type | Required | Details |
|---|---|---|---|
message | string | No | - |
Generated example (synthetic):
{
"message": "string"
}Contract identity
Use these fields to confirm you are implementing the intended endpoint contract.
- API family: Shopper API
- Method:
GET - Path:
/api/v1/omni/:app_id/:store_group/:market/:locale/variants - Operation ID: Not documented in the OpenAPI contract.
- OpenAPI tag: Variants
- OpenAPI summary: Fetch all variants