Fetch facets
# Fetch facets
Fetch available facets like attributes, variant names, and price ranges. Facet keys is a comma separated string. Valid keys are: "attributes", "attributes[template_key1|template_key2]", "variant_names", "price", "tags", "collections", "categories", "brands", "series", "variant_with_attributes[template_key1|template_key2]". Product filters are optional. Deprecated. Use https://graphql.enad.io instead.
GET
/api/v1/omni/:app_id/:store_group/:market/:locale/facets/{facet_keys}
PurposeFetch available facets like attributes, variant names, and price ranges.
Required inputsapp_id path store_group path market path locale path facet_keys path store_group path
Primary response200 ยท OK
Operation keyshopper-api:GET:/api/v1/omni/:app_id/:store_group/:market/:locale/facets/{facet_keys}
## 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](/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/facets/{facet_keys}`
- Summary: Fetch facets
- Description: Fetch available facets like attributes, variant names, and price ranges. Facet keys is a comma separated string. Valid keys are: "attributes", "attributes[template_key1|template_key2]", "variant_names", "price", "tags", "collections", "categories", "brands", "series", "variant_with_attributes[template_key1|template_key2]". Product filters are optional. Deprecated. Use https://graphql.enad.io instead.
- OpenAPI contract:
shopper-api
- Operation ID: Not documented in the OpenAPI contract.
- Stable operation key: `shopper-api:GET:/api/v1/omni/:app_id/:store_group/:market/:locale/facets/{facet_keys}`
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 |
| market | path | Yes | string | Market slug |
| locale | path | Yes | string | Locale for translations |
| facet_keys | path | Yes | string | Comma-separated list of facet keys (e.g., attributes,attributes[color\|size],variant_names,price,tags,collections,categories,brands,series,variant_with_attributes[color\|size]) |
| category_ids | query | No | string[] | Comma-separated list of category UUIDs to filter products |
| collection_ids | query | No | string[] | Comma-separated list of collection UUIDs to filter products |
| skus | query | No | string[] | Comma-separated list of product SKUs to filter products |
| search | query | No | string | Full text search on products |
| store_group | path | Yes | string | Store group slug |
| include_variants | query | No | boolean | Include variant attributes in the response |
| only_available | query | No | boolean | Only include facets from available products/variants |
| include_child_category_products | query | No | boolean | Include products from child categories when filtering by category or category_id |
## 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
#### Facets Response
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `data` | object | No | - |
##### Facets
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `attributes` | object | No | - |
| `brands` | object[] | No | - |
| `categories` | object[] | No | - |
| `collections` | object[] | No | - |
| `price_range` | object | No | - |
| `series` | object[] | No | - |
| `tags` | object[] | No | - |
| `variant_names` | string[] | No | - |
| `variant_with_attributes` | object[] | No | - |
##### Brand
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `id` | string | No | - |
| `name` | string | No | - |
| `slug` | string | No | - |
##### 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 | - |
| `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 | - |
##### Collection
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `children` | object[] | No | - |
| `id` | string | No | - |
| `parent_id` | string | No | - |
| `title` | string | No | - |
| `uri` | string | No | - |
##### Facet Price Range
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `max` | number | No | - |
| `min` | number | No | - |
##### Series
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `id` | string | No | - |
| `name` | string | No | - |
| `slug` | string | No | - |
##### Filter Tag
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `id` | string | No | - |
| `key` | string | No | - |
| `name` | string | No | - |
##### Facet Variant With Attributes
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `attributes` | object | No | - |
| `variant_name` | string | No | - |
| `variant_number` | string | No | - |
Generated example (synthetic)
```json
{
"data": {
"attributes": {},
"brands": [
{
"id": "string",
"name": "string",
"slug": "string"
}
],
"categories": [
{
"attributes": {},
"cover_url": "string",
"full_path_name": [],
"full_uri_translations": {},
"id": "string",
"name": "string",
"parent_id": "string",
"redirects": {},
"slug_translations": {},
"sort_order": 0,
"status": "string",
"sub_categories": [],
"uri": "string"
}
],
"collections": [
{
"children": [],
"id": "string",
"parent_id": "string",
"title": "string",
"uri": "string"
}
],
"price_range": {
"max": 0,
"min": 0
},
"series": [
{
"id": "string",
"name": "string",
"slug": "string"
}
],
"tags": [
{
"id": "string",
"key": "string",
"name": "string"
}
],
"variant_names": [
"string"
],
"variant_with_attributes": [
{
"attributes": {},
"variant_name": "string",
"variant_number": "string"
}
]
}
}
```
### 400 - object
#### Error Message
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `message` | string | No | - |
**Generated example (synthetic):**
```json
{
"message": "string"
}
```
### 500 - object
#### Error Message
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `message` | string | No | - |
**Generated example (synthetic):**
```json
{
"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/facets/{facet_keys}`
- Operation ID: Not documented in the OpenAPI contract.
- Stable operation key: `shopper-api:GET:/api/v1/omni/:app_id/:store_group/:market/:locale/facets/{facet_keys}`
- OpenAPI tag: Facets
- OpenAPI summary: Fetch facets