Как читать отзывы
Все отзывы читаются одним методом: GET /v3/reviews. Отзывы могут запрашиваться только
по одному адресату: object_id – объект, folder_id – папка целиком.
curl "https://api.rewio.ru/v3/reviews?object_id=20&limit=20" \
-H "X-API-Key: hrev_ВАШ_КЛЮЧ"Страницы
Окно задают limit (по умолчанию 100) и offset.
total – сколько отзывов подходит под фильтры. has_next – есть ли следующая страница. Листайте, пока has_next не станет false:
import requests
BASE = "https://api.rewio.ru/v3"
HEADERS = {"X-API-Key": "hrev_ВАШ_КЛЮЧ"}
def iter_reviews(object_id, **filters):
offset, limit = 0, 100
while True:
r = requests.get(f"{BASE}/reviews", headers=HEADERS, params={
"object_id": object_id, "limit": limit, "offset": offset, **filters,
})
r.raise_for_status()
page = r.json()
yield from page["data"]
if not page["has_next"]:
break
offset += limit
for review in iter_reviews(20, min_rating=1, max_rating=3):
print(review["rating"], review["author"])Так читают ленту целиком. Чтобы узнавать о новых отзывах и ответах, не опрашивая нас, подпишитесь на вебхуки – мы сами пришлём событие.
Альтернатива: обход курсором
Если задача не «показать страницу», а перенести отзывы в свою базу и дальше держать её
актуальной, листать offset не нужно. Для этого есть отдельный метод – поток изменений
с курсором: он не теряет отзывы, если лента меняется прямо во время обхода, а на следующем
проходе отдаёт только то, что изменилось.
Как это устроено – в Синхронизации данных.
Фильтры
Фильтры складываются: отзыв попадает в выдачу, если проходит все.
| Параметр | Что делает |
|---|---|
source_ids | Только эти площадки. Параметр повторяемый. |
link_ids | Только эти ссылки внутри объекта. |
min_rating / max_rating | Диапазон оценки по шкале 1–5. |
published_from / published_to | Диапазон даты публикации. |
has_text, has_images, has_videos, has_reply | Наличие текста, фото, видео, ответа организации. |
search | Поиск подстроки в тексте, без морфологии и ранжирования. |
Сортировка – sort_by (date, rating или reply_date) и sort_order (desc
или asc). reply_date – дата ответа организации: desc показывает, на что
отвечали последним, asc – самые давние ответы. Отзывы без ответа при этом
уходят в конец списка в обоих направлениях; чтобы получить именно их, возьмите
has_reply=false.
Пример: негатив с фотографиями за квартал по двум площадкам.
curl -G "https://api.rewio.ru/v3/reviews" \
-H "X-API-Key: hrev_ВАШ_КЛЮЧ" \
--data-urlencode "object_id=20" \
--data-urlencode "max_rating=3" \
--data-urlencode "has_images=true" \
--data-urlencode "published_from=2026-04-01" \
--data-urlencode "published_to=2026-06-30" \
--data-urlencode "source_ids=1" \
--data-urlencode "source_ids=2"Даты отзыва
У отзыва две даты, и означают они разное:
| Поле | Что означает | Зона | Чем фильтровать |
|---|---|---|---|
review_date | Когда отзыв опубликован на площадке. | Местное время площадки | published_from / published_to |
created_at | Когда отзыв впервые захвачен. | UTC | нельзя |
Когда отзыв пропадает с площадки, мы помечаем его is_deleted и ставим
deleted_at – момент, когда мы это заметили. Такие отзывы остаются у вас в
истории, по умолчанию скрыты и возвращаются с show_deleted.
Новые отзывы и ответы приходят вебхуками – опрашивать нас для этого не нужно. Если у вас своя база и её надо держать в актуальном состоянии, это отдельная работа: синхронизация – поток изменений с курсором, включая пропажи отзывов с площадок.
Особые флаги
show_deletedиonly_deleted– показать отзывы, пропавшие с площадки. По умолчанию они скрыты.show_hiddenиshow_pinned– вернуть скрытые и закреплённые отзывы вместе с их флагами.split_pros_cons– разобрать слитый текст на «достоинства» и «недостатки» там, где площадка их разделяет.
Каждый параметр и все поля ответа есть в справочнике.