# 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/booking`

-   [properties](#properties)
-   [search](#search)
-   [reviews](#reviews)
-   [history](#history)

## properties

from 2 credits · fresh for 12 hours

Full 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 |
| --- | --- | --- | --- |
| `subjects` (required) | 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

```bash
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
}'
```

```js
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);
```

```python
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 12

Properties for a destination and a stay, with Booking's own filters.

### Request fields

| Field | Type | Default | Values / limits |
| --- | --- | --- | --- |
| `location` (required) | 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` | `relevance`, `price_low`, `rating_high`, `distance` |
| `limit` | integer | `12` | 1-100 |

### Example

```bash
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
}'
```

```js
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);
```

```python
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 days

Guest reviews for up to ten properties — liked/disliked text, score, date, traveler type, room, property response.

### Request fields

| Field | Type | Default | Values / limits |
| --- | --- | --- | --- |
| `subjects` (required) | list of string | — | 1-10 items |
| `sort` | enum | `relevance` | `relevance`, `newest`, `oldest`, `rating_high`, `rating_low` |
| `since` | string | `—` | YYYY-MM-DD |
| `scoreBands`◆ | list of enum | `[]` | `superb`, `good`, `average`, `poor` |
| `limit` | integer | `25` | 1-100 |

### Example

```bash
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
}'
```

```js
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);
```

```python
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 held

Stored price/score series of properties already held — free.

### Request fields

| Field | Type | Default | Values / limits |
| --- | --- | --- | --- |
| `subjects` (required) | list of string | — | 1-10 items |
| `metric` | enum | `price_from` | `price_from`, `guest_score`, `review_count` |
| `days` | integer | `90` | 1-730 |

### Example

```bash
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
}'
```

```js
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);
```

```python
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"])
```

---

Source: https://zomler.com/docs/api/platforms/booking
