Booking.com
Overview
Travel platform — hotel search, property details, reviews, room pricing, and flight search via Apollo SSR cache + LD+JSON + GraphQL page.evaluate + DOM.
Workflows
Find a hotel and check prices
searchHotels(ss, checkin, checkout) → hotels[].url — parse URL /hotel/{country}/{slug}.html → country, slug
getHotelDetail(country, slug) ← searchHotels url → name, rating, address, description
getHotelPrices(slug) ← searchHotels url → room types, beds, sizes, facilities (requires hotel page open)
getHotelReviews(slug) ← searchHotels url → score, subscores, featured reviews (requires hotel page open)
Search flights
searchFlights(route, from, to, depart) → carriers, times, duration, stops, prices
Operations
| Operation |
Intent |
Key Input |
Key Output |
Notes |
| searchHotels |
find hotels in a destination |
ss (query), checkin, checkout |
name, url, price, rating, reviewCount |
entry point; parse url → country, slug |
| getHotelDetail |
hotel info by URL |
country ← searchHotels url, slug ← searchHotels url |
raw schema.org/Hotel LD+JSON (name, aggregateRating, address, image, priceRange) |
declarative script_json extraction with type_filter: Hotel — response is the raw LD+JSON block, not reshaped |
| getHotelReviews |
review summary |
slug ← searchHotels url |
score, subscores, featured reviews |
requires hotel detail page open |
| getHotelPrices |
room availability + pricing |
slug ← searchHotels url |
room name, bed, size, price, perNight |
requires hotel detail page open |
| searchFlights |
find flights by route |
route (NYC-PAR), from, to, depart |
carrier, times, airports, duration, stops, price |
flights.booking.com subdomain |
Quick Start
# Search hotels in New York
openweb booking exec searchHotels '{"ss":"New York","checkin":"2026-05-01","checkout":"2026-05-03"}'
# Get hotel details (extract country/slug from searchHotels URL)
openweb booking exec getHotelDetail '{"country":"us","slug":"riverside-tower","checkin":"2026-05-01","checkout":"2026-05-03"}'
# Get hotel reviews (hotel page must be open)
openweb booking exec getHotelReviews '{"slug":"riverside-tower"}'
# Get room pricing (hotel page must be open)
openweb booking exec getHotelPrices '{"slug":"riverside-tower"}'
# Search flights NYC to Paris
openweb booking exec searchFlights '{"route":"NYC-PAR","from":"NYC.CITY","to":"PAR.CITY","depart":"2026-05-01"}'
getHotelDetail response shape
getHotelDetail returns the raw schema.org Hotel JSON-LD block as-is. Pretty-name mappings (what the old adapter exposed → raw field path):
| Friendly name |
Raw JSON-LD path |
| rating |
aggregateRating.ratingValue (out of 10 on Booking.com) |
| reviewCount |
aggregateRating.reviewCount |
| street |
address.streetAddress |
| city |
address.addressLocality |
| region |
address.addressRegion |
| postalCode |
address.postalCode |
| country |
address.addressCountry |
| image |
image (string or array of URLs) |
| priceRange |
priceRange |
No runtime reshape — consumers read fields by their schema.org names.
1---2name: booking3description: Booking.com4---5# Booking.com67## Overview8Travel platform — hotel search, property details, reviews, room pricing, and flight search via Apollo SSR cache + LD+JSON + GraphQL page.evaluate + DOM.910## Workflows1112### Find a hotel and check prices131. `searchHotels(ss, checkin, checkout)` → `hotels[].url` — parse URL `/hotel/{country}/{slug}.html` → `country`, `slug`142. `getHotelDetail(country, slug)` ← searchHotels url → name, rating, address, description153. `getHotelPrices(slug)` ← searchHotels url → room types, beds, sizes, facilities (requires hotel page open)164. `getHotelReviews(slug)` ← searchHotels url → score, subscores, featured reviews (requires hotel page open)1718### Search flights191. `searchFlights(route, from, to, depart)` → carriers, times, duration, stops, prices2021## Operations2223| Operation | Intent | Key Input | Key Output | Notes |24|-----------|--------|-----------|------------|-------|25| searchHotels | find hotels in a destination | ss (query), checkin, checkout | name, url, price, rating, reviewCount | entry point; parse url → country, slug |26| getHotelDetail | hotel info by URL | country ← searchHotels url, slug ← searchHotels url | raw schema.org/Hotel LD+JSON (name, aggregateRating, address, image, priceRange) | declarative `script_json` extraction with `type_filter: Hotel` — response is the raw LD+JSON block, not reshaped |27| getHotelReviews | review summary | slug ← searchHotels url | score, subscores, featured reviews | requires hotel detail page open |28| getHotelPrices | room availability + pricing | slug ← searchHotels url | room name, bed, size, price, perNight | requires hotel detail page open |29| searchFlights | find flights by route | route (NYC-PAR), from, to, depart | carrier, times, airports, duration, stops, price | flights.booking.com subdomain |3031## Quick Start3233```bash34# Search hotels in New York35openweb booking exec searchHotels '{"ss":"New York","checkin":"2026-05-01","checkout":"2026-05-03"}'3637# Get hotel details (extract country/slug from searchHotels URL)38openweb booking exec getHotelDetail '{"country":"us","slug":"riverside-tower","checkin":"2026-05-01","checkout":"2026-05-03"}'3940# Get hotel reviews (hotel page must be open)41openweb booking exec getHotelReviews '{"slug":"riverside-tower"}'4243# Get room pricing (hotel page must be open)44openweb booking exec getHotelPrices '{"slug":"riverside-tower"}'4546# Search flights NYC to Paris47openweb booking exec searchFlights '{"route":"NYC-PAR","from":"NYC.CITY","to":"PAR.CITY","depart":"2026-05-01"}'48```4950## getHotelDetail response shape5152`getHotelDetail` returns the raw schema.org `Hotel` JSON-LD block as-is. Pretty-name mappings (what the old adapter exposed → raw field path):5354| Friendly name | Raw JSON-LD path |55|---|---|56| rating | `aggregateRating.ratingValue` (out of 10 on Booking.com) |57| reviewCount | `aggregateRating.reviewCount` |58| street | `address.streetAddress` |59| city | `address.addressLocality` |60| region | `address.addressRegion` |61| postalCode | `address.postalCode` |62| country | `address.addressCountry` |63| image | `image` (string or array of URLs) |64| priceRange | `priceRange` |6566No runtime reshape — consumers read fields by their schema.org names.