Skip to content

Товары

Актуальный список товаров — GET /front_api/products.json. Старый GET /products_by_id/:ids.json отвечает тем же конвертом { "status": "ok", "products": [] }.

За один запрос передают не больше ста id. Лишние id отбрасываются.

Список по id товаров

Параметр ids — id через запятую. Параметр with перечисляет дополнительные блоки через запятую. Без него в товаре нет описания, картинок целиком, опций и свойств: базовый объект и так содержит цены, модификации и признаки наличия.

Допустимые значения with: reviews_count_cached, reviews_average_rating_cached, first_image, images, characteristics, option_names, variants, short_description, description, product_field_values, bundle_info, canonical_url_collection, price_kinds, video_links, properties, accessories, accessory_values.

Отдельные параметры картинок и опций: images_limit, image_resizing_rules, video_links_details, accessories, accessory_values.

GET/front_api/products.json?ids=761&with=accessories,variants,option_names
Параметр Описание
ids обязательный
строка
id товаров через запятую. За один запрос не больше ста, лишние отбрасываются.
with необязательный
строка
Дополнительные блоки через запятую: отзывы, картинки, характеристики, опции, модификации, описания, свойства, аксессуары и остальные из списка выше.
images_limit необязательный
число
Отдельный параметр картинок.
image_resizing_rules необязательный
строка
Отдельный параметр картинок.
video_links_details необязательный
строка
Отдельный параметр видео.
accessories необязательный
строка
Отдельный параметр опций покупки.
accessory_values необязательный
строка
Отдельный параметр значений опций.
const ids = [761];
const withFields = ["accessories", "variants", "option_names"];
const url = `/front_api/products.json?ids=${ids.join(",")}&with=${withFields.join(",")}`;

const response = await fetch(url, {
  credentials: "same-origin",
  headers: { Accept: "application/json" }
});
const data = await response.json();

Ответ · 200

{
  "status": "ok",
  "products": [
    {
      "id": 761,
      "title": "Apple iPhone 16 128 ГБ",
      "permalink": "apple-iphone-16-128-gb",
      "url": "/product/apple-iphone-16-128-gb",
      "available": true,
      "unit": "pce",
      "price_min": 84990.0,
      "price_max": 84990.0,
      "option_names": [
        {
          "id": 2517840,
          "title": "Цвет",
          "permalink": "tsvet"
        }
      ],
      "variants": [
        {
          "id": 2176487200,
          "title": "Чёрный",
          "sku": "IP16-128",
          "price": "84990.0",
          "available": true,
          "quantity": 8,
          "option_values": [
            {
              "id": 21063191,
              "option_name_id": 2517840,
              "title": "Чёрный",
              "permalink": "chyornyy"
            }
          ]
        }
      ],
      "accessories": [
        {
          "id": 1,
          "name": "Гравировка",
          "permalink": "gravirovka",
          "min_count": 0,
          "max_count": 1,
          "accessory_values": [
            {
              "id": 1,
              "name": "Без гравировки",
              "price": "0.0"
            },
            {
              "id": 2,
              "name": "Имя на корпусе",
              "price": "500.0"
            }
          ]
        }
      ]
    }
  ]
}

У товара price_min и price_max — числа. В примере оба равны 84990.0: это нижняя и верхняя цена его модификаций. Цена самой модификации лежит в variants[].price и приходит строкой: у «Чёрный» это "84990.0".

У опции «Гравировка» min_count равен 0, max_count равен 1: значение можно не выбирать или выбрать одно. В accessory_values есть «Без гравировки» за "0.0" и «Имя на корпусе» за "500.0".

reviews_count_cached — число отзывов товара, reviews_average_rating_cached — средняя оценка. Пока оценок нет, в обоих полях null. Тексты отзывов этот ответ не отдаёт, их читает метод из раздела отзывы.

Список по id модификаций

Нужен, когда в корзине или в «недавно смотрели» лежат id модификаций, а не товаров. В ответе всё равно товары. Модификации, которых нет, пропускаются.

GET/front_api/products_with_variant_ids.json?variant_ids=2176487200
Параметр Описание
variant_ids обязательный
строка
id модификаций через запятую. Отсутствующие пропускаются.
with необязательный
строка
Те же дополнительные блоки, что у списка по id товаров. Блок variants этот адрес добавляет сам.
const variantIds = [2176487200];
const url = `/front_api/products_with_variant_ids.json?variant_ids=${variantIds.join(",")}`;

const response = await fetch(url, {
  credentials: "same-origin",
  headers: { Accept: "application/json" }
});
const data = await response.json();

Ответ · 200

{
  "status": "ok",
  "products": [
    {
      "id": 761,
      "title": "Apple iPhone 16 128 ГБ",
      "variants": [
        {
          "id": 2176487200,
          "title": "Чёрный",
          "price": "84990.0"
        }
      ]
    }
  ]
}

Блок variants для этого адреса добавляется сам. Остальные блоки подключаются тем же параметром with.

Карточка по адресу товара

GET /product/:permalink.json возвращает один товар в поле product, а не массив.

GET/product/apple-iphone-16-128-gb.json
Параметр Описание
permalink обязательный
строка
Адрес товара в пути.
const response = await fetch("/product/apple-iphone-16-128-gb.json", {
  credentials: "same-origin",
  headers: { Accept: "application/json" }
});
const data = await response.json();

Ответ · 200

{
  "status": "ok",
  "product": {
    "id": 761,
    "title": "Apple iPhone 16 128 ГБ",
    "permalink": "apple-iphone-16-128-gb",
    "url": "/product/apple-iphone-16-128-gb",
    "available": true,
    "price_min": 84990.0,
    "price_max": 84990.0,
    "variants": [
      {
        "id": 2176487200,
        "title": "Чёрный",
        "price": "84990.0",
        "available": true
      }
    ]
  }
}

GET /product_by_id/761.json отвечает HTML-страницей товара, не JSON. Для id используйте /front_api/products.json?ids=.

Старый список по id

GET /products_by_id/761,562.json отвечает { "status": "ok", "products": [] }. Для новых шаблонов удобнее /front_api/products.json: у него есть with и выборка по модификациям.