[ docs ]Places & travel
Booking.com
Measured Booking.com data, one operation per call. Properties are named by their booking.com/hotel/<country>/<name> URL. A `stay` (checkIn, checkOut, currency, language) is part of every price and every priced fetch adds a point to the property's history tagged with that stay. ops: properties (full cards for up to ten properties — price from, guest score and label, category scores, review count, rooms with availability and price, facilities, policies, check-in times, address and coordinates), search (properties for a destination and stay with propertyType, minStars, minRating, priceMin/Max and sort), reviews (guest reviews for up to ten properties — liked/disliked, score, date, traveler type, room, property response; sort, since, scoreBands), history (stored price/score series for properties already held, free). Ops are independent — issue several as PARALLEL tool calls. Fresh fetches cost credits; anything already held is free.
POST https://api.zomler.com/api/v1/platforms/bookingproperties
from 2 credits · fresh for 12 hoursFull cards for up to ten properties by URL — price from, guest score and category scores, rooms with availability and price, facilities, policies, location.
Request fields
| Field | Type | Default | Values / limits |
|---|---|---|---|
subjectsrequired | list of string | — | 1-10 items |
stay | object | all defaults | — |
stay.checkIn | string | — | YYYY-MM-DD |
stay.checkOut | string | — | YYYY-MM-DD |
stay.currency | string | USD | ISO 4217 |
stay.language | string | en-GB | BCP-47 |
Example
curl -X POST https://api.zomler.com/api/v1/platforms/booking \
-H "X-API-Key: zk_live_…" \
-H "Content-Type: application/json" \
-d '{
"request": {
"op": "properties",
"subjects": [
"example"
]
},
"estimateOnly": false
}'const res = await fetch("https://api.zomler.com/api/v1/platforms/booking", {
method: "POST",
headers: {
"X-API-Key": process.env.ZOMLER_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"request": {
"op": "properties",
"subjects": [
"example"
]
},
"estimateOnly": false
}),
});
const envelope = await res.json();
console.log(envelope.data, envelope.cost.creditsCharged);import os, httpx
res = httpx.post(
"https://api.zomler.com/api/v1/platforms/booking",
headers={"X-API-Key": os.environ["ZOMLER_API_KEY"]},
json={
"request": {
"op": "properties",
"subjects": [
"example"
]
},
"estimateOnly": False
},
timeout=120,
)
envelope = res.json()
print(envelope["data"], envelope["cost"]["creditsCharged"])search
from 24 credits for 12Properties for a destination and a stay, with Booking's own filters.
Request fields
| Field | Type | Default | Values / limits |
|---|---|---|---|
locationrequired | string | — | ≤120 chars |
stay | object | all defaults | — |
stay.checkIn | string | — | YYYY-MM-DD |
stay.checkOut | string | — | YYYY-MM-DD |
stay.currency | string | USD | ISO 4217 |
stay.language | string | en-GB | BCP-47 |
propertyType◆ | string | — | ≤40 chars |
minStars | integer | — | 1-5 |
minRating | number | — | 0-10 |
priceMin | integer | — | 0- |
priceMax | integer | — | 0- |
sort | enum | relevance | relevanceprice_lowrating_highdistance |
limit | integer | 12 | 1-100 |
Example
curl -X POST https://api.zomler.com/api/v1/platforms/booking \
-H "X-API-Key: zk_live_…" \
-H "Content-Type: application/json" \
-d '{
"request": {
"op": "search",
"location": "New York"
},
"estimateOnly": false
}'const res = await fetch("https://api.zomler.com/api/v1/platforms/booking", {
method: "POST",
headers: {
"X-API-Key": process.env.ZOMLER_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"request": {
"op": "search",
"location": "New York"
},
"estimateOnly": false
}),
});
const envelope = await res.json();
console.log(envelope.data, envelope.cost.creditsCharged);import os, httpx
res = httpx.post(
"https://api.zomler.com/api/v1/platforms/booking",
headers={"X-API-Key": os.environ["ZOMLER_API_KEY"]},
json={
"request": {
"op": "search",
"location": "New York"
},
"estimateOnly": False
},
timeout=120,
)
envelope = res.json()
print(envelope["data"], envelope["cost"]["creditsCharged"])reviews
from 49 credits for 25 · fresh for 3 daysGuest reviews for up to ten properties — liked/disliked text, score, date, traveler type, room, property response.
Request fields
| Field | Type | Default | Values / limits |
|---|---|---|---|
subjectsrequired | list of string | — | 1-10 items |
sort | enum | relevance | relevancenewestoldestrating_highrating_low |
since | string | — | YYYY-MM-DD |
scoreBands◆ | list of enum | [] | superbgoodaveragepoor |
limit | integer | 25 | 1-100 |
Example
curl -X POST https://api.zomler.com/api/v1/platforms/booking \
-H "X-API-Key: zk_live_…" \
-H "Content-Type: application/json" \
-d '{
"request": {
"op": "reviews",
"subjects": [
"example"
]
},
"estimateOnly": false
}'const res = await fetch("https://api.zomler.com/api/v1/platforms/booking", {
method: "POST",
headers: {
"X-API-Key": process.env.ZOMLER_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"request": {
"op": "reviews",
"subjects": [
"example"
]
},
"estimateOnly": false
}),
});
const envelope = await res.json();
console.log(envelope.data, envelope.cost.creditsCharged);import os, httpx
res = httpx.post(
"https://api.zomler.com/api/v1/platforms/booking",
headers={"X-API-Key": os.environ["ZOMLER_API_KEY"]},
json={
"request": {
"op": "reviews",
"subjects": [
"example"
]
},
"estimateOnly": False
},
timeout=120,
)
envelope = res.json()
print(envelope["data"], envelope["cost"]["creditsCharged"])history
free · reads what is heldStored price/score series of properties already held — free.
Request fields
| Field | Type | Default | Values / limits |
|---|---|---|---|
subjectsrequired | list of string | — | 1-10 items |
metric | enum | price_from | price_fromguest_scorereview_count |
days | integer | 90 | 1-730 |
Example
curl -X POST https://api.zomler.com/api/v1/platforms/booking \
-H "X-API-Key: zk_live_…" \
-H "Content-Type: application/json" \
-d '{
"request": {
"op": "history",
"subjects": [
"example"
]
},
"estimateOnly": false
}'const res = await fetch("https://api.zomler.com/api/v1/platforms/booking", {
method: "POST",
headers: {
"X-API-Key": process.env.ZOMLER_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"request": {
"op": "history",
"subjects": [
"example"
]
},
"estimateOnly": false
}),
});
const envelope = await res.json();
console.log(envelope.data, envelope.cost.creditsCharged);import os, httpx
res = httpx.post(
"https://api.zomler.com/api/v1/platforms/booking",
headers={"X-API-Key": os.environ["ZOMLER_API_KEY"]},
json={
"request": {
"op": "history",
"subjects": [
"example"
]
},
"estimateOnly": False
},
timeout=120,
)
envelope = res.json()
print(envelope["data"], envelope["cost"]["creditsCharged"])