> ## Documentation Index
> Fetch the complete documentation index at: https://docs.salesive.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List products by category

> Retrieve catalog items scoped to a specific category with pagination and search filtering.

## Request

```http theme={null}
GET /products/category/accessories-1?page=1&limit=10
x-shop-id: {{shopId}}
```

<Info>
  You can pass the category ID or slug in the `category` path segment.
</Info>

## Headers

| Header      | Type   | Description                |
| ----------- | ------ | -------------------------- |
| `x-shop-id` | string | Identify the shop context. |

## Path parameters

| Parameter  | Type   | Description                                |
| ---------- | ------ | ------------------------------------------ |
| `category` | string | Category ID or slug to filter products by. |

## Query parameters

| Parameter | Type    | Description                                                |
| --------- | ------- | ---------------------------------------------------------- |
| `page`    | integer | Page number to return (default: `1`).                      |
| `limit`   | integer | Maximum number of products per page (default: `10`).       |
| `q`       | string  | Optional search string applied within the chosen category. |

<Note>
  Food-enabled storefronts return `catalogType: "food"` and include a `foods`
  alias alongside `products`.
</Note>

## Successful response

```json theme={null}
{
    "status": 200,
    "success": true,
    "message": "Foods found",
    "data": {
        "products": [
            {
                "_id": "68e5bb463a1fc56a8ac150c0",
                "shop": {
                    "_id": "68b8f52575da81b332af29f1",
                    "name": "Sample Kitchen",
                    "currency": {
                        "_id": "68c54dd440e9beff3260c2b2",
                        "name": "Nigerian Naira",
                        "symbol": "₦",
                        "code": "NGN",
                        "id": "68c54dd440e9beff3260c2b2"
                    },
                    "logo": "https://cdn.salesive.com/logos/shop.webp",
                    "id": "68b8f52575da81b332af29f1"
                },
                "category": {
                    "_id": "69fb494ddf63302ed89ba11d",
                    "name": "Pizza",
                    "id": "69fb494ddf63302ed89ba11d"
                },
                "createdAt": "2026-05-06T13:59:42.799Z",
                "description": "<p>Stone-baked pizza with basil and tomato sauce</p>",
                "featured": false,
                "images": [
                    "https://cdn.salesive.com/foods/margherita.webp"
                ],
                "name": "Margherita Pizza",
                "price": 8500,
                "promoPrice": 7500,
                "updatedAt": "2026-05-06T14:44:04.903Z",
                "rating": 0,
                "numReviews": 0,
                "available": true,
                "addons": [
                    {
                        "_id": "68e5bb463a1fc56a8ac150d1",
                        "name": "Extra Cheese",
                        "description": "A richer mozzarella finish baked on top.",
                        "price": 1500,
                        "maxQuantity": 3,
                        "image": null,
                        "available": true
                    }
                ],
                "id": "68e5bb463a1fc56a8ac150c0",
                "inWishlist": false,
                "itemType": "food"
            }
        ],
        "foods": [
            {
                "_id": "68e5bb463a1fc56a8ac150c0",
                "name": "Margherita Pizza",
                "itemType": "food"
            }
        ],
        "catalogType": "food",
        "pagination": {
            "total": 61,
            "page": 1,
            "limit": 10,
            "pages": 7,
            "hasNext": true,
            "hasPrev": false,
            "nextPage": 2,
            "prevPage": null
        }
    }
}
```

## Error response

```json theme={null}
{
    "status": 404,
    "success": false,
    "message": "Category not found",
    "data": {}
}
```


## OpenAPI

````yaml GET /products/category/{category}
openapi: 3.1.0
info:
  title: Salesive Store API
  description: >-
    REST interface for querying products, categories, and merchandising banners
    exposed by Salesive storefronts.
  version: 1.0.0
servers:
  - description: Production
    url: https://store.salesive.com/api/v1
security:
  - BearerAuth: []
    ShopIdHeader: []
paths:
  /products/category/{category}:
    get:
      summary: Get category
      description: >-
        Return a single category by its identifier, slug, or name. The API
        performs a case-insensitive match for category names.
      parameters:
        - $ref: '#/components/parameters/XShopIdHeader'
        - name: category
          in: path
          required: true
          description: Category ID, slug, or name.
          schema:
            type: string
      responses:
        '200':
          description: Category detail response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Category'
        '404':
          description: Category not found.
components:
  parameters:
    XShopIdHeader:
      name: x-shop-id
      in: header
      description: >-
        Optional identifier that scopes responses to a specific storefront when
        the referer cannot be inferred.
      required: false
      schema:
        type: string
  schemas:
    Category:
      type: object
      required:
        - id
        - name
        - slug
      properties:
        id:
          type: string
          description: Unique category identifier.
        name:
          type: string
          description: Display name of the category.
        slug:
          type: string
          description: URL-friendly identifier for the category.
        description:
          type: string
          description: Optional description of the category.
        image:
          type: string
          format: uri
          description: Optional image URL for the category.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT issued by the Salesive Store API for authenticated shoppers.
    ShopIdHeader:
      type: apiKey
      in: header
      name: x-shop-id
      description: >-
        Optional storefront identifier sent as a header to scope responses to a
        specific shop. Try It requests remember this value once provided.

````