Интеграция с ReviewLab по API

API отдаёт содержимое виджета в формате JSON: рейтинги по площадкам и сами отзывы. Разметку и отображение вы делаете на своей стороне.

Содержание

Кому нужен API

Готовый виджет достаточно вставить на страницу — он рисует блок отзывов сам. API нужен, когда такой блок не подходит: вы хотите сверстать его под свой дизайн, показать оценки в мобильном приложении или положить данные в свою CMS.

Данные в обоих случаях одни и те же. Разница только в том, кто рисует интерфейс.

Данные, полученные через API, предназначены для показа на сайтах вашей компании. Передача данных третьим лицам и размещение на сайтах ваших клиентов доступны на партнёрском тарифе.

Начало работы

Доступ к API входит в тарифы Медиум и Эксперт. Чтобы начать:

  1. Зарегистрируйтесь в личном кабинете
  2. Создайте виджет и добавьте в него ссылки на филиалы, откуда нужно собирать отзывы
  3. Оплатите тариф Медиум или Эксперт с нужным объёмом запросов

Авторизация для этих запросов не нужна: доступ определяется по widgetId. Идентификатор виджета видно в адресной строке на его странице в личном кабинете.

Лимиты

Показы виджета на ваших сайтах не ограничиваются. Лимит действует на запросы к API и зависит от тарифа:

ТарифЗапросов в месяц
Медиум100 000
Эксперт200 000
Премиум1 000 000

Счётчик обнуляется 1 числа каждого месяца.

Если у сайта большая посещаемость, кешируйте полученные данные на своей стороне. Отзывы обновляются раз в сутки, поэтому запрашивать их при каждом открытии страницы не нужно: так лимит расходуется в разы медленнее, а страницы грузятся быстрее.

Если лимита не хватает, напишите на info@reviewlab.ru — подберём тариф или дополнительный пакет запросов под ваш объём.

Данные виджета

Возвращает настройки виджета и агрегаты по отзывам: общий рейтинг, количество отзывов, разбивку по площадкам и по звёздам. Отзывы этот метод не отдаёт — за ними идите в следующий раздел.

GET
https://app.reviewlab.ru/api/v1/widgets/widget/:widgetId/remote
  • widgetIdstringДа
    Идентификатор виджета (path-параметр)

Ответ, значимые поля:

json
{  "_id": "65f3c0a1b2d4e5f60718293a",  "title": "Отзывы о клинике",  "url": "https://example.ru",  "totalRating": 4.8,  "totalReviewAmount": 512,  "reviewAmount": {    "yaSprav": 210,    "googleMap": 180,    "doubleGis": 122  },  "reviewStars": {    "one": 4, "two": 6, "three": 18, "four": 96, "five": 388  },  "yaSpravRating": 4.9,  "googleMapRating": 4.7,  "doubleGisRating": 4.8,  "sources": [    {      "type": "yaSprav",      "url": "https://yandex.ru/maps/org/example/1234567890",      "updatedAt": "2026-09-01T03:12:44.000Z"    }  ]}

Кроме этого в ответе приходят настройки отображения (customSettings, customStyles и другие) — они нужны самому виджету, для своей вёрстки их можно игнорировать. Рейтинг по каждой площадке лежит в отдельном поле вида <код площадки>Rating, коды — в справочнике ниже.

Отзывы виджета

Возвращает список отзывов виджета с пагинацией и фильтрацией по площадке.

GET
https://app.reviewlab.ru/api/v1/widgets/widget/:widgetId/reviews/remote?limit=20

Параметры

  • widgetIdstringДа
    Идентификатор виджета (path-параметр)
  • limitnumberДа
    Сколько отзывов вернуть. Максимум — 300, при большем значении придёт 400.
  • skipnumberНет
    Сколько отзывов пропустить. По умолчанию 0.
  • typestringНет
    Отдать отзывы только с одной площадки. Допустимые значения — ниже.

Значения type

Коды площадок, которые принимает параметр:

ЗначениеПлощадка
yaSpravЯндекс Карты
googleMapGoogle Maps
doubleGis2GIS
vkontakteВконтакте
avitoАвито
zoonZoon
prodoctorovПроДокторов
otzovikОтзовик
flampFlamp
sberHealthСберЗдоровье
yclientsYCLIENTS
irecommendIrecommend
naPopravkuНаПоправку
yellYell
yaBusinessЯндекс Бизнес
yaServiceЯндекс Услуги

Отзывы придут только с тех площадок, ссылки на которые добавлены в виджет. Если по площадке отзывов нет, ответ будет пустым массивом.

Примеры

bash
# Первые 20 отзывовcurl "https://app.reviewlab.ru/api/v1/widgets/widget/65f3c0a1b2d4e5f60718293a/reviews/remote?limit=20" # Вторая страницаcurl "https://app.reviewlab.ru/api/v1/widgets/widget/65f3c0a1b2d4e5f60718293a/reviews/remote?limit=20&skip=20" # Только отзывы с Авитоcurl "https://app.reviewlab.ru/api/v1/widgets/widget/65f3c0a1b2d4e5f60718293a/reviews/remote?limit=20&type=avito"

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

Массив отзывов:

json
[  {    "_id": "65f3c0a1b2d4e5f607182940",    "name": "Анна К.",    "photo": "https://cdn.reviewlab.ru/avatars/anna.jpg",    "message": "Записалась через сайт, всё прошло отлично.",    "images": ["https://cdn.reviewlab.ru/reviews/1.jpg"],    "rating": 5,    "date": "2026-08-14T09:20:00.000Z",    "src": "https://yandex.ru/maps/org/example/reviews",    "type": "yaSprav"  }]
  • _idstringВсегда
    Идентификатор отзыва
  • namestringВсегда
    Имя автора так, как оно указано на площадке
  • photostringВсегда
    Ссылка на аватар автора
  • messagestringОпционально
    Текст отзыва. У отзывов без текста поля не будет
  • imagesstring[]Опционально
    Ссылки на фотографии из отзыва
  • ratingnumberОпционально
    Оценка от 1 до 5
  • datestringОпционально
    Дата отзыва на площадке, ISO 8601
  • srcstringВсегда
    Ссылка на отзыв на площадке
  • typestringВсегда
    Код площадки, см. справочник

Пагинация

Постранично данные забираются комбинацией skip и limit. Общее количество отзывов лежит в totalReviewAmount у данных виджета — по нему считается число страниц.

javascript
const LIMIT = 20 const fetchPage = (page) =>  fetch(    `https://app.reviewlab.ru/api/v1/widgets/widget/65f3c0a1b2d4e5f60718293a/reviews/remote` +      `?limit=${LIMIT}&skip=${page * LIMIT}`  ).then((res) => res.json()) const firstPage = await fetchPage(0)const secondPage = await fetchPage(1)

Ошибки

  • 400Bad Request
    limit больше 300, не число или не передан; у type значение вне списка кодов площадок. Этим же кодом отвечают отзывы виджета, если виджет с таким widgetId не найден
  • 404Not Found
    Виджет с таким widgetId не найден — только у данных виджета

Обрабатывайте ошибки на своей стороне: если запрос не удался, показывать пустой блок отзывов обычно лучше, чем сломанную вёрстку.

Поддержка

Не хватает метода, поля или лимита — напишите на info@reviewlab.ru. Опишите задачу: что собираете и в каком объёме, — так быстрее подберём решение.

Ссылки

ПримерВопросы и ответыОсобенностиРазработчикам / APIТарифыИнструкцииБлогВакансииКарта сайтаАкцииПлощадкиОтзывыКонтактыО компанииРеферальная программаПартнёрская программаИИ-маркетолог