Tony Wang6 分で読めますTrip.com のスクレイピング方法(2026年版 API & Python)
2026年に Trip.com のホテル検索・詳細データをスクレイピングする方法 — DIY、ノーコード、構造化 API の3通り、ホテルのみの対象範囲、そして法律上の基本。
2026年に Trip.com をスクレイピングする最も手早い方法は、Trip.com の内部エンドポイントを自前で再現する代わりに、ホテル検索とホテル詳細の正規化された JSON を返す構造化 API を呼び出すことです。Trip.com(Trip.com Group、旧 Ctrip)はアジア発の最大級の OTA の一つですが、このガイドは対象範囲を最初にはっきりさせておきます。ここでカバーするのはホテル検索とホテル詳細のみです。Booking.com、Agoda、Expedia の各ガイドとは異なり、このAPIにはフライト、鉄道、レンタカー、アクティビティの面はありません — Trip.com はそれらを別個のはるかに大きな製品として販売しており、それらに対するセルフサービスの読み取り API は存在しません。このガイドでは、実際に利用可能な範囲について3つのアプローチすべてと、法律上の基本を取り上げます。
なぜ Trip.com のデータをスクレイピングするのか?
Trip.com のホテルデータは、次のような繰り返し発生するユースケースを支えます。
- ホテルの価格と空室状況のモニタリング — 物件の1泊あたりのレートが時間とともにどう動くかを追跡できます。
- OTA のレートパリティチェック — 同じ日程について、あるホテルの Trip.com での価格を Booking.com、Agoda、Expedia と比較できます。
- 市場リサーチ、特に APAC 旅行分野 — Trip.com Group(Ctrip、Trip.com、Skyscanner)は中国本土と広くアジア全域で支配的な OTA の一つであり、そのホテル供給量と価格は地域の旅行需要を測る有用なシグナルです。
- AI 旅行パイプライン — その場で HTML をスクレイピングする代わりに、正規化されたホテル検索・詳細の JSON をエージェントやイティネラリーツールに投入できます。
Trip.com をスクレイピングするのは合法か?
選択肢1: Python で DIY する(そしてなぜ破綻するか)
Trip.com のホテル検索ページと詳細ページは、クライアントサイド JavaScript の背後にある内部呼び出しからレンダリングされるため、DIY のスクレイパーはそれらのリクエストを再現する必要があります。
import requests
# Trip.com's hotel-list UI calls internal endpoints that aren't documented for public use
resp = requests.get(
"https://www.trip.com/hotels/bangkok-hotels-list-359/",
headers={"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"},
)
デモは動きますが、その後破綻します。
- オープンなセルフサービス API がない。 Trip.com の実際の Partner API は旅行代理店や OTA 向けのサプライヤー/アグリゲーター統合であり、Affiliate Program のデータフィードは承認済みパブリッシャー向けです — どちらもリサーチ用にホテルデータを取得するためのサインアップフォームではありません。
- robots.txt がまさにスクレイピングしたいページを禁止している。 ホテル詳細ページと検索結果ページはどちらも一般的なクローラー向けにブロックされており、それらのページが呼び出す内部 API パスも同様です。
- 内部エンドポイントで、安定性の保証がない。 都市のホテル一覧ページとホテル詳細ページの背後にあるリクエスト形状は公開された契約ではなく、Trip.com はパラメータ、ヘッダー、レスポンスフィールドを予告なく変更できます。
- 都市識別子が自明ではない。 Trip.com 自身の URL は数値の city id(
bangkok-hotels-list-359)を slug と一緒にエンコードしています — 両方が必要ですが、都市名をその id に解決するための公開ルックアップエンドポイントはありません。
選択肢2: ノーコード/既製ツール
Trip.com のホテルリスティングを対象とするマーケットプレイスのスクレイパーアクターはいくつか存在し、単発の取得には向いていますが、DIY と同じアンチボットと内部エンドポイントの脆さを引き継いでおり、フライト、鉄道、アクティビティはいずれもカバーしません — Trip.com の非ホテル系製品は汎用スクレイパーの対象範囲にはほぼ入っていません。
選択肢3: 構造化された Trip.com API
繰り返し実行可能なホテルデータワークフローには、Trip.com スクレイピング API が正規化された JSON を返し、ブラウザ群もエンドポイントのリバースエンジニアリングも不要です — ただしホテル検索と詳細のみである点は明確にしておきましょう。都市でホテルを検索するには次のようにします。
curl "https://api.crawlora.net/api/v1/tripcom/hotels/search?city_slug=bangkok&city_id=359" \
-H "x-api-key: $CRAWLORA_API_KEY"
その検索結果からホテルのフル詳細を Python で取得します。
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1"
search = requests.get(f"{base}/tripcom/hotels/search", headers=h, params={
"city_slug": "bangkok", "city_id": 359,
}).json()["data"]
hotel_id = search["hotels"][0]["hotel_id"]
detail = requests.get(f"{base}/tripcom/hotels/{hotel_id}", headers=h).json()["data"]
ホテル検索結果は正規化された JSON です(実際のフィールド。ドキュメントを確認してください)。
{
"code": 200,
"msg": "OK",
"data": {
"city_slug": "bangkok",
"city_id": "359",
"count": 9,
"hotels": [
{
"hotel_id": 39371462,
"name": "Divalux Resort and Spa Bangkok, Suvarnabhumi Airport-Free Shuttle",
"url": "https://www.trip.com/hotels/bang-sao-thong-district-hotel-detail-39371462/divalux-resort-and-spa-bangkok-suvarnabhumi-airport-free-shuttle/",
"star_rating": 5,
"rating_score": 8.7,
"review_count": 872,
"price": { "raw": "US$38", "currency": "US$", "amount": 38, "unit": "1 night" }
}
],
"source_url": "https://www.trip.com/hotels/bangkok-hotels-list-359/"
}
}
ホテル詳細には location(住所、エリア、緯度経度、交通アクセスの説明)、rating の内訳(清潔さ、アメニティ、立地、サービス)、policy(チェックイン/アウト、子供のポリシー)、popular_facilities、images、highlights が追加されます。ホテルごと・取得日ごとに1行を保存し、スケジュールを組んで再実行して価格変動を追跡しましょう。
収集できるもの
公開されているホテルデータのみです。検索結果(hotel id、名前、URL、星評価、レビュースコアと件数、簡単な説明、ソース画像、1泊あたりの価格)とホテル詳細(フル住所と緯度経度、開業年、ハイライト、カテゴリー別の評価内訳、チェックイン/子供ポリシー、人気施設、画像ギャラリー、説明、ソース URL)です。このカタロググループにはフライト、鉄道、レンタカー、アクティビティ、レビューのエンドポイントはありません。
制約
- ホテルのみ。 これはこの how-to-scrape シリーズの中で最も範囲が狭いカタロググループです — Agoda や Expedia のガイドとは異なり、フライト、鉄道、レンタカー、アクティビティはありません。Trip.com のフライトや鉄道データが必要な場合、それはこの API がカバーしていない、はるかに大きなインテグレーションになります。
- 検索にはフリーテキストではなく既知の city id が必要。
city_slugとcity_idはどちらも必須です — まず Trip.com の都市 URL からそれらを解決する必要があり、キーワードから都市を引くルックアップはここにはありません。 - オープンなセルフサービス型の公式 API がない。 Trip.com の Partner API と Affiliate データフィードはどちらも関係がゲートされており、単発のリサーチ取得には向いていません。
- レートと空室状況は常に変動する。 1回の取得は検索した瞬間のみを反映します — 関心のある日付範囲ごとに再取得しましょう。
- 公開データのみ。 これは公開されているリスティング情報を収集するものであり、実際の予約を完了させたり操作したりする手段では決してありません。
どこで使われるか
- ホテル価格モニタリング — 特定の物件のレートを時間の経過とともに追跡できます。
- OTA のレートパリティリサーチ — 同じホテル・同じ日程について、Trip.com の価格を Booking.com、Agoda、Expedia と比較できます。
- APAC 旅行市場リサーチ — Trip.com Group が強い地域シェアを持つ都市でのホテル供給と価格を把握できます。
出典
収集を始める
まずは無料でお試しください: 任意の公開 URL を無料ウェブスクレイパーに通すか、アンチボットチェッカーでサイトがボットをブロックするかどうかを確認できます。サインアップ不要です。
検索とホテル詳細のエンドポイントをプレイグラウンドで試し、API ドキュメントでスキーマを確認し、料金をご覧ください。Trip.com は APAC 寄りの OTA データのホテル面をカバーしますが、Booking.com のスクレイピング方法はトラフィック規模で最大のグローバル OTA をカバーし、Agoda のスクレイピング方法は同様に APAC 発でより広い範囲(ホテル、ホーム、アクティビティ、フライト)をカバーする競合をカバーします。あわせてExpedia のスクレイピング方法とウェブスクレイピングは合法かもご覧ください。
よくある質問
この Trip.com API はフライトや鉄道もカバーしていますか、ホテルだけですか?
いいえ — このカタロググループはホテル検索とホテル詳細のみをカバーします。Trip.com はフライト、鉄道、レンタカー、アクティビティを別個のはるかに大きな製品として販売しており、それらに対するセルフサービスの読み取り API はここにはありません。それらが必要な場合は、別のインテグレーションを見込んでおく必要があります。
ホテル検索結果を読み取るための公式 Trip.com API はありますか?
オープンなセルフサービス用途向けにはありません。Trip.com の Partner API は旅行代理店や OTA 向けのサプライヤー/アグリゲーター統合であり、Affiliate Program は承認済みパブリッシャーにホテルデータフィードを提供します — どちらも申請を通じて到達するゲート付きの関係であり、リサーチやモニタリング向けのサインアップフォームではありません。
Trip.com のホテルデータをスクレイピングするのは合法ですか?
ホテルの名前、住所、星評価といった公開されているリスティングの事実には著作権が及ばず、hiQ Labs v. LinkedIn は公開データへのアクセスが CFAA 違反にはならないと判断しました。しかし Trip.com の利用規約は無許可のアクセスとネットワークへの過度なデータ負荷を禁止しており、robots.txt も一般的なボットによるホテル詳細ページと検索結果ページのクロールを禁止しています。これは法的助言ではありません — より詳しい内容は当社の is-web-scraping-legal ガイドを参照してください。
Trip.com のホテル検索からどのようなデータが取得できますか?
検索対象の都市について、hotel id、名前、URL、星評価、レビュースコアと件数、簡単な説明、ソース画像、1泊あたりの価格が取得できます。
Trip.com のホテル詳細エンドポイントは何を返しますか?
フル住所と緯度経度、開業年、ハイライト、カテゴリー別の評価内訳(清潔さ、アメニティ、立地、サービス)、チェックイン/子供のポリシー、人気施設、画像ギャラリー、説明、そしてソース URL です。
Trip.com のホテルを検索するための city_id はどうやって見つければよいですか?
検索エンドポイントはフリーテキストのクエリではなく、city_slug と city_id の両方を必須とします。Trip.com は自身のホテル一覧 URL の中に両方をエンコードしています(例えば bangkok-hotels-list-359 は slug「bangkok」と id 359 を示します) — このカタロググループにはキーワードから都市を引くルックアップエンドポイントはありません。
なぜ Trip.com のガイドは Agoda や Expedia のガイドよりカバー範囲が狭いのですか?
このカタロググループにはホテル検索とホテル詳細という2つのエンドポイントしかないため、このガイドはホテルのみに範囲を絞っています。Agoda と Expedia のガイドがホーム、アクティビティ、フライトもカバーしているのは、それらのカタロググループがより広いためです。