📦 Sites Data API

Получение данных о товарах с сайтов-источников через REST API.

🔑 Аутентификация: X-API-Key: your_api_key

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

GET https://ocenivay.com

Обязательные параметры

site_id — ID сайта (обязательно)

Дополнительные параметры

category — Фильтр по категории (если разрешён в настройках ключа)
brand — Фильтр по бренду (если разрешён в настройках ключа)
date_from — Дата создания от (Y-m-d)
date_to — Дата создания до (Y-m-d)
per_page — Записей на страницу (зависит от лимитов ключа)
page — Номер страницы для пагинации

Примеры запросов

https://ocenivay.com/?site_id=34&per_page=10
— Базовый запрос (сайт 34, 10 записей)
https://ocenivay.com/?site_id=34&per_page=10&page=2
— С пагинацией (страница 2)
https://ocenivay.com/?site_id=34&date_from=2026-04-01&date_to=2026-04-09
— Фильтр по дате создания
https://ocenivay.com/?site_id=34&category=Jeans
— Фильтр по категории (если разрешено)
https://ocenivay.com/?site_id=34&brand=Nike
— Фильтр по бренду (если разрешено)
https://ocenivay.com/?site_id=34&category=Jeans&date_from=2026-04-01&per_page=20&page=1
— Комбинированный запрос
https://ocenivay.com/112514372
— Получить один товар по ID

cURL

curl -X GET "https://ocenivay.com/?site_id=34&per_page=10" -H "X-API-Key: your_key"

🔍 Один товар по ID

GET https://ocenivay.com/<id>

Пример: https://ocenivay.com/112514372

📦 Поля в ответе

🆔
Основные
Идентификаторы и даты записи: id, updated_at и т.п. Поле id возвращается всегда.
🛍️
Поля товара
Атрибуты товара (название, ссылка, бренд, описание и др.). Выходят в корне объекта без префикса. Набор зависит от сайта-источника.
🌐
Переводы
Сгруппированы по коду языка в корне объекта: "ru": {"name": "..."}. Набор языков и полей зависит от настроек вашего ключа.
📤
Экспорт
Служебные поля с вариантами. Выходят с префиксом export_. Актуальная цена варианта — в export_variants[*].price.

🔀 Формат ответа

flat Плоский список: один вариант (размер/цвет) = один объект data[].
grouped Группировка по товару: одна карточка = один товар одного цвета, размеры внутри variants[]. Пагинация считается по карточкам (не по размерам).

Примеры ответов

{
  "success": true,
  "data": [
    {
      "id": 112514372,
      "updated_at": "2026-04-20T15:38:58+03:00",
      "name": "Product name",
      "url": "https://www.amazon.com/dp/B0FCRFV2FC/",
      "brand": "Brand Name",
      "price": 36.99,
      "ru": {
        "name": "Название товара на русском",
        "description": "Описание..."
      },
      "export_external_sku": "B0FCRFV2FC | Black",
      "export_variants": [
        {"asin": "B0FCRFV2FC", "size": "M", "price": 36.99, ...}
      ]
    }
  ],
  "meta": {
    "total": 28549,
    "per_page": 100,
    "current_page": 1,
    "last_page": 286,
    "from": 1,
    "to": 100
  },
  "limits": { "rate_limit_per_minute": 60, "min_per_page": 1, "max_per_page": 100 }
}

Описание полей ответа

ПолеТипОписание
successbooleanУспешность запроса.
data[]array of objectСписок товаров на странице. В flat-режиме каждый объект — один вариант.
data[].idintegerИдентификатор записи (уникален внутри API).
data[].updated_atstring (ISO-8601)Дата последнего обновления записи.
data[].pricefloat | nullАктуальная цена товара. null — получить не удалось.
data[].<lang>objectБлок перевода для языка (например ru). Ключи внутри — переведённые поля.
data[].export_variants[]array of objectМассив вариантов с актуальной ценой.
data[].export_variants[].pricefloat | nullАктуальная цена варианта. null — цену не удалось получить.

Остальные поля (имя, бренд, категория, URL и т.п.) зависят от сайта-источника и настроек вашего ключа.

{
  "success": true,
  "data": [
    {
      "parent_asin": "B0FJRQ347N",
      "color": "Brown",
      "updated_at": "2026-04-20T15:38:58+03:00",
      "name": "Wooden Shelf ...",
      "url": "https://www.amazon.com/dp/B0FJRQ347N/",
      "variants": [
        {
          "id": 71087421,
          "updated_at": "2026-04-20T15:38:58+03:00",
          "export_variants": [
            {"asin": "...", "size": "80X50X20CM", "price": 50.00, ...}
          ]
        },
        {
          "id": 71087792,
          "updated_at": "2026-04-20T15:38:58+03:00",
          "export_variants": [
            {"asin": "...", "size": "120X50X20CM", "price": 73.00, ...}
          ]
        }
      ]
    }
  ],
  "meta": {
    "total": 17760,
    "per_page": 100,
    "current_page": 1,
    "last_page": 178,
    "from": 1,
    "to": 100
  },
  "limits": { "rate_limit_per_minute": 60 }
}

Описание полей ответа (grouped)

ПолеТипОписание
successbooleanУспешность запроса.
data[]array of objectКарточки товаров на странице. Каждая карточка — товар в одном цвете.
data[].parent_asinstringИдентификатор товара (общий для всех цветов/размеров).
data[].colorstring | nullЦвет карточки (у всех вариантов внутри одинаковый).
data[].updated_atstring (ISO-8601)Самая поздняя дата обновления среди вариантов.
data[].variants[]array of objectВарианты размеров внутри карточки.
data[].variants[].idintegerИдентификатор записи конкретного размера.
data[].variants[].updated_atstring (ISO-8601)Дата обновления конкретного размера.
data[].variants[].export_variants[]array of objectДетали размера с актуальной ценой.
data[].variants[].export_variants[].pricefloat | nullАктуальная цена размера. null — цену не удалось получить.

Остальные поля в корне и в variants зависят от сайта-источника и настроек вашего ключа.

Описание полей meta

ПолеТипОписание
meta.totalintegerВсего элементов в выборке: в flat — вариантов, в grouped — карточек.
meta.per_pageintegerКоличество элементов на одной странице.
meta.current_pageintegerНомер текущей страницы.
meta.last_pageintegerОбщее количество страниц.
meta.frominteger | nullПорядковый номер первого элемента на странице.
meta.tointeger | nullПорядковый номер последнего элемента на странице.

Описание полей limits

ПолеТипОписание
limits.rate_limit_per_minuteintegerМаксимум запросов в минуту.
limits.min_per_pageintegerМинимальное значение per_page.
limits.max_per_pageintegerМаксимальное значение per_page.
limits.allowed_countriesarray of stringISO-коды стран, из которых разрешён доступ. Пусто — ограничений нет.

⚠️ Коды ошибок

Код Описание
400 Неверные параметры запроса. Проверьте обязательные параметры и форматы.
401 Неверный или отсутствующий API ключ. Проверьте заголовок X-API-Key.
403 Доступ запрещён: сайт не разрешён для этого ключа или запрос из запрещённой страны.
404 Запись не найдена.
405 Метод не поддерживается. Используйте GET.
422 Ошибка валидации параметров (неверные значения или формат).
429 Превышен лимит запросов в минуту. Подождите и повторите.
500 Внутренняя ошибка сервера. Если повторяется — напишите на info@ocenivay.com.
502 Сервис временно недоступен (upstream). Повторите через минуту.
503 Сервис на обслуживании или временно недоступен. Повторите позже.
504 Таймаут запроса. Уменьшите per_page или повторите.

📌 Примечания

💬 По вопросам работы API: info@ocenivay.com