---
title: "List catalog products"
method: GET
path: "/api/public/products"
---

# List catalog products

`GET /api/public/products`

## Request

- Base URL: `https://kodshop.cloud`
- URL: `https://kodshop.cloud/api/public/products`
- Auth: none required

Gift cards (voucher), top-ups (recharge_fixed) and eSIM (e_sim). Unfiltered responses are ~1200 rows.

## Query parameters

- `type` 'voucher' | 'recharge_fixed' | 'recharge' | 'e_sim'
- `country` string
- `category` string
- `q` string

## Response `200`

Matching products

- object
  - `count` integer
  - `products` ProductSummary[]
    - `id` integer
    - `name` string
    - `type` 'voucher' | 'recharge_fixed' | 'recharge' | 'e_sim'
    - `country` string, nullable
    - `brand` string, nullable
    - `category` string, nullable
    - `available_for_sale` boolean
    - `in_stock` boolean
    - `in_stock_count` integer: Units left. Absent when the count is unknown but the product is available.
    - `requires_account` boolean: true = you must send account_number when ordering (top-ups). Derived from the product's fields[], so it is safe to branch on.
    - `requires_amount` boolean: true = variable-amount product: send amount instead of item_id.
    - `min_price` number: Cheapest denomination, in currency
    - `currency` string
    - `min_price_rub` number: Legacy alias of min_price. Same number, same currency — the _rub suffix is a storage-era name, not a hint about units. Prefer min_price + currency.
    - `items_count` integer

---

[API](https://skmtc.dev/kodshop/apis/kodshop-public-api.md) · [All operations](https://skmtc.dev/kodshop/apis/kodshop-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kodshop/apis/kodshop-public-api/revisions/63f1271e61ea?raw)
