当社独自のアクセス統計は常に有効です。Google Analyticsは、公開ページ(ログイン後のワークスペースは対象外)の利用状況を把握するためのもので、許可をいただいた場合のみ有効になります。詳しくは プライバシーポリシーをご覧ください。

BookingレビューAPI

POST

APIの稼働状況

24時間の稼働状況
正常
24時間の平均応答時間
—
  • 良好/正常
  • 利用可能
  • 制限あり
  • ほぼ停止
正常

Booking.comの施設に寄せられたゲストレビューを収集します。良かった点と悪かった点のテキストは別々に保持され、スコア、宿泊月、旅行者タイプ、客室、ホテルからの返信も含まれます。どちらか一方が空の場合もあり、1回の取得ですべてのレビューが含まれるとは限りません。

Booking Reviewsは、施設ページのリンクをurlに指定して、Bookingに掲載されている1つの施設のゲストレビューを取得します。Bookingではゲストが良かった点と良くなかった点を別々の欄に書く仕組みのため、各行には本文が1つではなくtext_positiveとtext_negativeが含まれます。あわせて、タイトル、スコア、宿泊月、部屋タイプ、宿泊数、ゲストの国と旅行者タイプ、施設からの返信も含まれます。ホテルの管理者、レベニューチーム、アナリストが、ゲストが評価している点や不満に思っている点の把握、ゲスト層ごとの比較、施設の対応の確認に利用しています。

どちらの欄も空の場合があるため、ネガティブ欄が空でも称賛とは見なさず、何も書かれていないものとして扱ってください。Bookingのスコアは10点満点です。5段階評価のサイトと比較する前に、rating_scaleを使って換算してください。stay_dateはゲストが実際に宿泊した月を示し、レビューの新しさを判断するうえでより適切な指標です。リクエストにはリンクとlimit以外のフィルターがないため、取得後に行を並べ替えたり絞り込んだりしてください。

料金は1,000リクエストあたり$1.39(1回あたり$0.001389)です。失敗した呼び出しと空の結果には課金されません。 同期処理です。時間のかかるジョブでは、ボディに"mode": "async"を追加し、job_idを取得してポーリングしてください。

AIプロンプト

EveryInfraのBooking レビューエンドポイント(booking/reviews)を使ったデータ収集スクリプトの作成を手伝ってください。

エンドポイントの仕組み:
- リクエスト:ヘッダーにAuthorization: Bearer <API key>を指定して、https://api.everyinfra.com/api/v1/socialにPOSTします。APIキーは環境変数EVERYINFRA_API_KEYから読み込み、ハードコードしないでください。
- リクエストボディでplatformにbooking、actionにreviewsを指定し、パラメータはparamsの中に入れます。
- 必須パラメータ:
  - url: 単一の施設ページの完全なURLを指定します。/hotel/形式のパスを推奨します。profileでは詳細の取得、reviewsでは施設のレビューの取得、pricesでは客室料金の確認に使用します。目的地の検索URLには対応していません。
- 任意パラメータ:
  - limit: この呼び出しで返す最大行数で、1〜100の整数で指定します。省略するとデフォルト値が適用されます。また、返される行数がこれより少なくなる場合があります。最大値を超える値を指定すると、課金前に422が返されます。(デフォルト:20)
- レコードのリストを返します。各レコードの主なフィールド: id、title、text_positive(レビューの良かった点)、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,000リクエストあたり$1.39。失敗時および結果が空の場合は課金されません。
- 対象が数十〜数百件ある場合は、ボディに"mode": "async"を追加します。すぐにjob_idが返されるので、GET https://api.everyinfra.com/api/v1/jobs/{job_id}をポーリングして結果を取得します。
- 422の場合は、エラーに含まれる推奨パラメータ名と指定可能な値を使ってリクエストを修正します。429または503の場合は、Retry-Afterの指定に従って待ってから再試行します。

コードを書く前に、必要な対象とその件数、必要なフィールド、希望する出力形式を私に質問してください。そのうえで、計画と概算費用を私に確認してください。

リクエストパラメータ

名前場所型必須デフォルト説明
Authorizationheaderstringはい-Bearerの後にAPIキーを続けます。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からAPIキーを読み込みます。コピーしたコードにAPIキーが含まれることはありません。

レスポンス例

実際のレスポンス

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です。一意性は1つのプラットフォーム内に限られ、プラットフォームが異なるとIDが重複する場合があります。
titleタイトルです。プラットフォームにタイトルがない場合(テキストのみの投稿など)はnullになります。
text_positiveレビューの良かった点。Bookingではレビュー投稿者に良かった点と悪かった点を分けて記入してもらいます。
text_negativeレビューの悪かった点。良かった点と悪かった点は、それぞれ空欄の場合があります。
rating評価です。スケールはプラットフォームによって異なります。最大値は同じ行のrating_scaleで示されます(通常は5。Booking、Douban、iQIYI、NAVERは10)。プラットフォーム間で比較する前にrating_scaleで換算してください。換算しないと比較結果が逆転することがあります。
rating_scale同じ行のratingの最大値です。5段階評価では5、10点満点では10になります。行にratingがある場合のみ含まれます。
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

テキストフィールドが1つではなく2つあるのはなぜですか?

Bookingのレビューフォームでは良かった点と悪かった点を別々のフィールドに入力するため、この機能でもtext_positiveとtext_negativeに分けて返します。どちらも空の場合があります。この区分により感情分析の手間を減らせます。レビュー全体を分類しなくても、ネガティブ側のフィールドから直接不満点を抽出でき、空のフィールドは別に集計できます。

特定の旅行者タイプのレビューを読むにはどうすればよいですか?

traveler_type(ビジネス旅行者、カップル、家族、一人旅など)ごとに行をグループ化してください。特定の客室カテゴリに注目する場合は、room_nameでもグループ化します。author_countryはゲストの出身国、nightsは泊数を示し、短期の出張と長期の休暇を見分けるのに役立ちます。

単一の言語のレビューだけを取得できますか?

リクエストではできません。リクエストで指定できるのは施設のリンクとlimitのみで、言語フィルターはありません。また、この機能はレビュー本文を翻訳しません。各行のlanguageはBookingが割り当てたコードで、誤っている場合があります。言語の区分が重要な場合、たとえば市場別に不満点を集計する前には、独自に言語判定を行ってください。

エラーと課金

401
キーが未指定か無効です。
402
残高が不足しています。先にチャージしてください。
422
パラメータ名または値が無効です。エラーに含まれる候補を参考に修正してください。課金はされません。
429
1分あたりのリクエスト上限に達しました。Retry-Afterの指定に従って待ってから再試行してください。
503
処理を完了できませんでした。保留中の請求額は残高に戻されます。結果が不明な場合は、再試行する前に確認してください。
200(空)
データがありません。課金はされません。

エラー

公式リファレンス

対象と用語の確認にのみ使用しています。プラットフォームによるEveryInfraの承認や推奨を意味するものではありません。

  • Booking:ゲストのクチコミとカテゴリ別評価 ↗

    Bookingのドキュメントによると、総合クチコミスコアと各カテゴリのスコアはそれぞれ個別に投稿されます。これは公式サイト上の説明を参照したものです。このAPIアクションのクチコミ評価の尺度は入力形式ごとに確認する必要があり、このリンクを引用していても、正規化の検証が済んでいることにはなりません。

    確認日:2026-09-04