Наша собственная статистика посещений включена всегда. Google Analytics помогает нам понять, как пользуются нашими публичными страницами (но не вашим рабочим пространством после входа), и включается только с вашего разрешения. См. нашу политику конфиденциальности.

API Booking Отзывы

POST

Состояние API

Состояние за 24 ч
Норма
Среднее время за 24 ч
—
  • Стабильно / норма
  • Доступно
  • Ограничено
  • Почти недоступно
Норма

Собирайте отзывы гостей об объекте на Booking.com: отдельно что понравилось и что не понравилось, оценку, месяц проживания, тип путешественника, номер и ответ отеля, если он есть. Любая из двух частей может быть пустой, а выборка может включать не все отзывы.

Booking Reviews получает отзывы гостей об одном объекте размещения на Booking по ссылке на его страницу в url. Booking просит гостей писать, что понравилось и что нет, в отдельных полях, поэтому вместо единого текста каждая запись содержит text_positive и text_negative, а также заголовок, оценку, месяц проживания, тип номера и число ночей, страну гостя, тип поездки и ответ администрации объекта. Управляющие отелей, команды управления доходами и аналитики используют эту возможность, чтобы понять, что гости хвалят и на что жалуются, сравнивать сегменты гостей и видеть, как администрация объекта отвечает на отзывы.

Любое из полей может быть пустым, поэтому отсутствие негативного текста означает, что гость ничего не написал, а не похвалу. Оценки на Booking ставятся по 10-балльной шкале; пересчитайте их с помощью rating_scale, прежде чем сравнивать с сайтами, где используется пятизвёздочная шкала. stay_date указывает месяц, когда гость действительно проживал, и лучше показывает, насколько отзыв актуален. Кроме ссылки и limit, фильтров в запросе нет, поэтому сортируйте и фильтруйте записи после получения.

Цена: $1.39 за 1 000 запросов ($0.001389 за вызов). Неудачные вызовы и пустые результаты не оплачиваются. Синхронный режим. Для долгих задач добавьте в тело запроса "mode": "async", получите job_id и опрашивайте статус.

Промпт для ИИ

Помогите мне написать скрипт для сбора данных через эндпоинт EveryInfra Booking Отзывы (booking/reviews).

Как работает эндпоинт:
- Запрос: POST https://api.everyinfra.com/api/v1/social с заголовком Authorization: Bearer <API key>. Читайте ключ из переменной окружения EVERYINFRA_API_KEY и никогда не прописывайте его в коде.
- В теле запроса укажите platform: booking и action: reviews, а параметры передайте в params.
- Обязательные параметры:
  - url: Задаёт полный URL страницы одного объекта, желательно с путём /hotel/. Используется действием profile для получения сведений, действием reviews — для отзывов об объекте и действием prices — для проверки цен на номера.
- Необязательные параметры:
  - limit: Максимальное число записей в этом вызове, целое число от 1 до 100. Если параметр не указан, применяется значение по умолчанию; вызов может вернуть меньше записей. (по умолчанию: 20)
- Возвращает список записей. Основные поля каждой записи: id, title, text_positive (Положительная часть отзыва: Booking про…), text_negative (Отрицательная часть отзыва), rating, rating_scale, posted_at, stay_date (Месяц проживания автора отзыва), author_name, author_country (Страна автора отзыва), traveler_type (Тип поездки (деловая поездка, поездка в…), room_name (Название типа номера); всего полей: 15, полный список: https://api.everyinfra.com/api/v1/social/catalog?platform=booking.
- Пример тела запроса:
{
  "platform": "booking",
  "action": "reviews",
  "params": {
    "url": "https://www.booking.com/hotel/jp/park-hyatt-tokyo.html"
  }
}
- Цена: $1.39 за 1 000 запросов; неудачные и пустые результаты не оплачиваются.
- Для десятков или сотен целей добавьте в тело запроса "mode": "async": вы сразу получите job_id и сможете опрашивать GET https://api.everyinfra.com/api/v1/jobs/{job_id}, чтобы получить результат.
- При ответе 422 исправьте запрос, используя предложенные в ошибке имена параметров и допустимые значения; при ответе 429 или 503 подождите указанное в Retry-After время и повторите попытку.

Прежде чем писать код, спросите меня, какие цели мне нужны, сколько их будет, какие поля мне нужны и в каком формате вывести результат; затем согласуйте со мной план и примерную стоимость.

Параметры запроса

ИмяРасположениеТипОбязательныйПо умолчаниюОписание
AuthorizationheaderstringДа-Укажите Bearer, а после него — ваш API-ключ. Создайте ключ в консоли; никогда не указывайте его в URL и не храните в репозитории кода.
platformbodystringДаbookingИдентификатор платформы, фиксированное значение.
actionbodystringДаreviewsИдентификатор возможности, фиксированное значение.
urlbody.paramsstringДа-Задаёт полный URL страницы одного объекта, желательно с путём /hotel/. Используется действием profile для получения сведений, действием reviews — для отзывов об объекте и действием prices — для проверки цен на номера. URL поиска по направлению не поддерживаются.
limitbody.paramsinteger (1–100)Нет20Максимальное число записей в этом вызове, целое число от 1 до 100. Если параметр не указан, применяется значение по умолчанию; вызов может вернуть меньше записей. При значениях выше максимума эндпоинт возвращает ошибку 422 до списания средств.

Примеры кода

bash
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "platform": "booking",
  "action": "reviews",
  "params": {
    "url": "https://www.booking.com/hotel/jp/park-hyatt-tokyo.html"
  }
}'

Спецификация OpenAPI (JSON)Примеры читают ключ из переменной окружения EVERYINFRA_API_KEY; скопированный код никогда не содержит ваш ключ.

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

Реальный ответ

Получено September 26, 2026 at 08:56 (UTC) вызовом этого API с параметрами из примера кода выше. results и count — реальный ответ этого вызова, из которого удалены персональные данные (имена, никнеймы, аватары, ссылки на профили, контакты); в списке оставлены первые 2. id, billing и quota меняются при каждом вызове, поэтому показана только их структура.

json
{
  "id": "req_…",
  "platform": "booking",
  "action": "reviews",
  "results": [
    {
      "id": "608726deed389acf",
      "rating": 5,
      "posted_at": "2026-09-23T12:06:15+00:00",
      "stay_date": "2026-09-19T00:00:00.000Z",
      "author_name": "•••",
      "room_name": "King Room with City View",
      "platform": "booking",
      "rating_scale": 10
    },
    {
      "id": "5970507e264636a7",
      "rating": 5,
      "posted_at": "2026-09-15T10:59:06+00:00",
      "stay_date": "2026-08-14T00:00:00.000Z",
      "author_name": "•••",
      "room_name": "Deluxe Room with Two Double Beds",
      "platform": "booking",
      "rating_scale": 10
    }
  ],
  "count": 20,
  "billing": {
    "charged": …,
    "charged_usd": …,
    "balance_after_usd": …,
    …
  },
  "quota": { … }
}

Поля ответа

Бизнес-данные находятся в results. В таблице перечислены поля, которые может содержать запись; значения, которые платформа не показывает, никогда не выдумываются.

ПолеЗначение
idУникальный ID записи на платформе. Уникален только в пределах одной платформы; на разных платформах ID могут повторяться.
titleЗаголовок. null, если на платформе нет заголовков (например, у текстовых постов).
text_positiveПоложительная часть отзыва: Booking просит авторов отзывов отдельно указать, что им понравилось и что не понравилось.
text_negativeОтрицательная часть отзыва. Любая из частей может быть пустой.
ratingРейтинг. Шкала зависит от платформы: rating_scale в той же записи задаёт максимум (обычно 5; у Booking, Douban, iQIYI и NAVER — 10). Перед сравнением между платформами пересчитайте значения с учётом rating_scale, иначе результат сравнения может оказаться обратным.
rating_scaleМаксимальное значение rating в той же записи: 5 для пятизвёздочных шкал, 10 для десятибалльных. Поле присутствует, только если у записи есть рейтинг.
posted_atВремя публикации в ISO 8601, UTC (например, 2026-08-07T12:34:56+00:00). Нестандартные строки платформы передаются как есть, поэтому учитывайте это при разборе. null означает, что платформа его не раскрывает.
stay_dateМесяц проживания автора отзыва; помогает оценить, насколько отзыв свежий.
author_nameОтображаемое имя автора.
author_countryСтрана автора отзыва.
traveler_typeТип поездки (деловая поездка, поездка вдвоём, с семьёй, в одиночку и т. д.); по нему можно отобрать отзывы гостей с таким же типом поездки.
room_nameНазвание типа номера.
nightsКоличество ночей, указанное в запросе.
languageКод языка контента (например, zh, en) по определению платформы; может быть неточным.
owner_responseПубличный ответ компании на этот отзыв: text, author_name и posted_at; поле отсутствует, если ответа нет.
platformИдентификатор исходной платформы. Совпадает со значением platform в запросе (например, xiaohongshu, tiktok).

FAQ

Почему текстовых полей два, а не одно?

В форме отзыва Booking положительные и отрицательные впечатления собираются в двух отдельных полях, и возможность сохраняет их раздельно в text_positive и text_negative; любое из них может быть пустым. Такое разделение упрощает анализ тональности: извлекайте жалобы прямо из негативного поля, а не классифицируйте отзывы целиком, и считайте пустые поля отдельно.

Как получить отзывы гостей определённого типа?

Группируйте записи по traveler_type (например, деловые путешественники, пары, семьи или путешествующие в одиночку) и по room_name, если важна конкретная категория номера. author_country показывает, откуда приехали гости, а nights — длительность проживания, что помогает отличить короткие командировки от долгого отдыха.

Можно ли получить отзывы только на одном языке?

Не через запрос: он принимает ссылку на объект и limit, но фильтра по языку в нём нет, и тексты отзывов здесь не переводятся. language в каждой записи — код, который присваивает Booking, и он может быть неверным, поэтому, если разделение по языкам важно, определяйте язык сами, например прежде чем считать жалобы по рынкам.

Ошибки и оплата

401
Ключ отсутствует или недействителен.
402
Недостаточно средств на балансе. Сначала пополните баланс.
422
Недопустимое имя или значение параметра. Исправьте запрос по подсказкам в сообщении об ошибке. Без списания.
429
Достигнут лимит запросов в минуту. Подождите указанное в Retry-After время, затем повторите попытку.
503
Не удалось выполнить. Зарезервированная сумма возвращается на баланс. Если результат неизвестен, проверьте его перед повторной попыткой.
200 (пусто)
Нет данных. Без списания.

Ошибки

Официальные источники

Используются только для проверки объектов и терминов. Они не означают, что платформа разрешила или одобрила работу EveryInfra.

  • Booking: отзывы гостей и оценки по категориям ↗

    В документации Booking отмечено, что общая оценка в отзыве и оценки по отдельным категориям выставляются независимо. Здесь приводится трактовка с официального сайта; шкалу оценок в этом действии API всё равно нужно проверять для каждого формата входных данных, а ссылка на этот источник не подтверждает, что нормализация проверена.

    Проверено 2026-09-04