# 🔥 Booking Scraper (`bebity/booking-stays-scraper`) Actor

⚡️ Fast, no-code Booking.com scraper with LLM- & 🤖 agent-optimized input & output. Extract hotels, apartments, hostels, B\&Bs & villas by location, URL or property ID — prices, availability, star ratings, review scores, photos, facilities & coordinates. Export to JSON, CSV or Excel.

- **URL**: https://apify.com/bebity/booking-stays-scraper.md
- **Developed by:** [Bebity](https://apify.com/bebity) (community)
- **Categories:** Automation, Lead generation, Developer tools
- **Stats:** 566 total users, 4 monthly users, 92.8% runs succeeded, 14 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Booking.com Stays Scraper

![Booking.com Stays Scraper — scrape hotels, apartments & stays into structured data](https://i.postimg.cc/zfnz0S9j/banner.png)

Scrape **stays** from [Booking.com](https://www.booking.com) — hotels, apartments, hostels, B&amp;Bs, villas — fast, with the full schema. Search by location &amp; filters, by URL, by property ID, by geographic bounding box, or by hotel chain.

> 🤖 **Built for LLMs &amp; AI agents.** Clean, typed JSON out — plain text, canonical URLs, stable IDs, zero HTML noise — ready to drop straight into RAG pipelines, vector stores, and agent tools. Typed input in, so an agent can fill it and call the actor over the API or MCP.

**Fast by design.** Runs start in seconds and results stream into your dataset as they're found. Everything about reaching Booking — proxies, anti-blocking, and retries — is handled for you: you bring a query, you get clean data back.

---

### 🏨 What does it do?

You give the actor a query — a city, a Booking search URL, a list of property URLs, a bounding box, or a hotel chain — and it returns one row per stay with name, prices, review score, photos, address, coordinates, facilities, and (optionally) the full hotel detail schema. Every output URL is canonicalised: tracking parameters are stripped so rows are deduplicable and shareable.

### 🤖 Built for LLMs &amp; AI agents

Both the **input and the output** are designed to be consumed by language models and autonomous agents — not just humans.

**Output → LLM-ready.**

- 📐 **Structured, typed JSON** with a fully documented schema — every field carries a title and description, so a model knows exactly what it's reading.
- 🧹 **No HTML, no tracking noise** — plain-text descriptions, canonical URLs (tracking params stripped), image URLs (not bytes). Feed it straight into a **RAG pipeline, vector store, or context window** with no post-processing.
- 🔑 **Stable IDs** (`hotelId`, `cc`/`slug`) for reliable de-duplication, joins, and incremental updates across runs.
- ✅ **Failures as data** — failed rows are typed (`{ failed: true, reason, … }`), so an agent can branch on them instead of scraping logs.

**Input → agent-fillable.**

- 🎛️ **Typed input schema** an agent can populate programmatically — JSON in, JSON out, no brittle form-filling.
- 🔌 **Callable over the [Apify API](https://docs.apify.com/api) and via MCP** — plug it into your agent framework (LangChain, LlamaIndex, custom tool-calling) as a ready-made Booking.com data tool.
- 🧩 **One call returns a whole city** — no pagination bookkeeping on your side; the actor fans out and de-duplicates for you.

### 👥 Who is it for?

- 🧳 **Travel agencies and OTAs** building hotel search/aggregation tools.
- 📊 **Price-comparison and rate-parity teams** monitoring nightly rates at scale.
- 🏨 **Hotel revenue managers** pulling competitive intel for a city.
- 🤖 **Content aggregators and AI/RAG pipelines** indexing detailed property descriptions, photos, and facilities.
- 🔬 **Researchers** mapping stay supply by neighborhood, chain, or sustainability tier.

### ☁️ Why run it on Apify?

This is a Booking.com **data pipeline**, not just a script — the Apify platform adds the parts you'd otherwise build and maintain yourself:

- 🗓️ **Schedule** runs (hourly, daily, weekly) to keep rate and availability data fresh.
- 🔌 **Call it from your stack** via the [Apify API](https://docs.apify.com/api), or wire it into 5,000+ tools through native integrations (Make, Zapier, n8n, webhooks, Google Drive, Slack).
- 🌐 **Residential proxy rotation is built in** — no proxy list to buy or manage.
- 📈 **Monitor** every run, get failure alerts, and re-run jobs straight from the Console.

### 🚀 How to scrape Booking.com?

1. Open the actor on the Apify Console.
2. In **Section 1 — Search by location &amp; filters**, type a destination (e.g., `Paris`), pick check-in / check-out dates, set adults/rooms.
3. (Optional) Pick a sort order, check `scrapeDetails` if you want the full schema, set `currency` and `language`.
4. Click **Run**. Data lands in the run's dataset as it streams.

```json
{
	"location": "Paris",
	"checkIn": "2026-06-15",
	"checkOut": "2026-06-17",
	"adults": 2,
	"rooms": 1,
	"propertyClass": ["4-stars", "5-stars"],
	"reviewScoreMin": "very-good-8+",
	"scrapeDetails": false,
	"currency": "EUR",
	"language": "en-us",
	"maxItems": 100
}
````

### 📤 Example output (one row, lite mode)

```json
{
	"hotelId": 5099301,
	"slug": "hotelcameliaprestige",
	"cc": "fr",
	"name": "Camelia Prestige - Place de la Nation",
	"url": "https://www.booking.com/hotel/fr/hotelcameliaprestige.html?checkin=2026-06-15&checkout=2026-06-17&group_adults=2&no_rooms=1&selected_currency=EUR&lang=en-us",
	"starRating": 2,
	"reviewScore": 7.7,
	"reviewLabel": "Good",
	"reviewCount": 2810,
	"thumbnail": "https://cf.bstatic.com/xdata/images/hotel/square600/716245082.jpg?k=...&o=",
	"address": {
		"neighborhood": "11th arr., Paris",
		"distanceFromCenterMeters": 3300,
		"latLng": null,
		"full": null
	},
	"price": {
		"amount": 125,
		"total": 250,
		"currency": "EUR",
		"nightCount": 2
	},
	"badges": ["Subway Access"],
	"source": {
		"mode": "search-filters",
		"srpvid": "f3a18f7eadd90592",
		"blockId": "427808541",
		"scrapedAt": "2026-04-30T04:48:00.000Z"
	}
}
```

With `scrapeDetails: true`, the row also gets `description`, `photos[]`, `facilities[]`, `rooms[]`, `houseRules`, `reviewBreakdown`, `propertyType`, `sustainability`, plus `address.latLng` and `address.full` when available.

### 🎛️ Input parameters

The input is split into 8 collapsible sections in the Console. Below are the most common ones — see the input schema panel for the full list with per-field descriptions.

#### 🔍 Section 1 — Search by location & filters

| Field                                                                                                                                                                                                                            | Type     | Description                                                                                           |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------- |
| `location`                                                                                                                                                                                                                       | string   | City / area / property name.                                                                          |
| `checkIn` / `checkOut`                                                                                                                                                                                                           | ISO date | Stay window.                                                                                          |
| `adults` / `children` / `childrenAges` / `rooms`                                                                                                                                                                                 | integers | Guest mix.                                                                                            |
| `propertyClass`                                                                                                                                                                                                                  | string\[] | One or more star levels.                                                                              |
| `reviewScoreMin`                                                                                                                                                                                                                 | string   | `pleasant-6+` / `good-7+` / `very-good-8+` / `wonderful-9+`.                                          |
| `priceMin` / `priceMax`                                                                                                                                                                                                          | integers | Budget per night, in `currency`.                                                                      |
| `propertyTypes`                                                                                                                                                                                                                  | string\[] | Hotels / apartments / hostels / B\&Bs / villas / boats / guesthouses / vacation-homes / homestays. |
| `mealPlans`, `hotelFacilities`, `roomFacilities`, `accessibleFacilities`, `accessibleRoomFacilities`, `stayType`, `paymentTypes`, `bedPreference`, `reservationPolicy`, `distanceFromCenter`, `ratedHigh`, `sustainabilityLevel` | various  | See input schema for the enum values.                                                                 |
| `sortBy`                                                                                                                                                                                                                         | string   | Result ordering.                                                                                      |

#### 🔗 Section 2 — Search by URL

| Field        | Type     | Description                                                                                                  |
| ------------ | -------- | ------------------------------------------------------------------------------------------------------------ |
| `searchUrls` | string\[] | Paste full Booking search URLs. Useful for contextual filters not exposed above (district, chain, landmark). |

#### 🗺️ Section 3 — Geographic search

| Field          | Type                         | Description                             |
| -------------- | ---------------------------- | --------------------------------------- |
| `bbox`         | `{north, south, east, west}` | Bounding rectangle.                     |
| `center`       | `{lat, lng}`                 | Center point. Pair with `radiusMeters`. |
| `radiusMeters` | integer                      | 500–50,000 meters.                      |

#### 🏷️ Section 4 — Hotel chain

| Field   | Type   | Description                                                                                         |
| ------- | ------ | --------------------------------------------------------------------------------------------------- |
| `chain` | string | Restrict the search to a known chain. Combine with `location` for "Mercure in Paris"-style queries. |

#### 📄 Section 5 — Direct property lookup

| Field           | Type           | Description                 |
| --------------- | -------------- | --------------------------- |
| `propertyUrls`  | string\[]       | Direct hotel detail URLs.   |
| `propertySlugs` | `{slug, cc}[]` | Slug + ISO-2 country pairs. |

#### 📦 Section 6 — Output

| Field           | Type    | Default | Description                                                    |
| --------------- | ------- | ------- | -------------------------------------------------------------- |
| `scrapeDetails` | boolean | `false` | Adds rooms/photos/facilities/coords. +1 HTTP request per stay. |
| `maxItems`      | integer | 1000    | Hard ceiling. `0` = unlimited.                                 |

#### 🌍 Section 7 — Localization

| Field      | Type | Default | Description                           |
| ---------- | ---- | ------- | ------------------------------------- |
| `currency` | enum | `EUR`   | Forces `selected_currency` URL param. |
| `language` | enum | `en-us` | Forces `lang` URL param.              |

#### ⚙️ Section 8 — Advanced

| Field                | Type    | Default           | Description        |
| -------------------- | ------- | ----------------- | ------------------ |
| `maxConcurrency`     | integer | 5                 | Parallel requests. |
| `proxyConfiguration` | proxy   | Apify residential | Custom proxy.      |

### 📊 What data can I extract?

| Field             | Type     | Lite | Full | Description                                                   |
| ----------------- | -------- | ---- | ---- | ------------------------------------------------------------- |
| `hotelId`         | integer  | ✓    | ✓    | Booking's stable numeric ID.                                  |
| `slug` / `cc`     | string   | ✓    | ✓    | URL slug + ISO-2 country.                                     |
| `name`            | string   | ✓    | ✓    | Property name.                                                |
| `url`             | string   | ✓    | ✓    | Canonical detail URL.                                         |
| `starRating`      | int      | ✓    | ✓    | 1–5.                                                          |
| `reviewScore`     | number   | ✓    | ✓    | 0–10 aggregate.                                               |
| `reviewLabel`     | string   | ✓    | ✓    | "Good", "Superb", …                                           |
| `reviewCount`     | int      | ✓    | ✓    | Total reviews.                                                |
| `thumbnail`       | string   | ✓    | ✓    | Pre-signed image URL.                                         |
| `address`         | object   | ✓    | ✓    | `neighborhood`, `distanceFromCenterMeters`, `latLng`, `full`. |
| `price`           | object   | ✓    | ✓    | `amount`, `total`, `currency`, `nightCount`.                  |
| `badges`          | string\[] | ✓    | ✓    | Cards-level annotations.                                      |
| `description`     | string   |      | ✓    | Property description.                                         |
| `photos`          | array    |      | ✓    | `{ thumbnail, full, caption }[]` — URLs only.                 |
| `facilities`      | array    |      | ✓    | Categorised amenities.                                        |
| `rooms`           | array    |      | ✓    | Room offers, occupancy, bed type, price, conditions.          |
| `houseRules`      | object   |      | ✓    | Check-in/out, pets, parties, smoking, children.               |
| `reviewBreakdown` | object   |      | ✓    | Per-category scores.                                          |
| `propertyType`    | string   |      | ✓    | Hotel / Apartment / Hostel / …                                |
| `sustainability`  | string   |      | ✓    | Certification when present.                                   |
| `source`          | object   | ✓    | ✓    | `mode`, `srpvid`, `blockId`, `scrapedAt`.                     |

Failed rows ship as `{ failed: true, reason, inputUrl, error, scrapedAt }` — they're queryable just like data rows.

> ℹ️ `source.srpvid` and `source.blockId` are Booking's search-scoped identifiers, handy for debugging a specific run. They are **not stable across runs** — always key on `hotelId` (or `cc`/`slug`) for de-duplication and joins.

Download any run's dataset as **JSON, CSV, Excel, or HTML** from the run's Storage tab, or pull it programmatically via the [Apify API](https://docs.apify.com/api/v2/dataset-items-get) — a clean, no-code stand-in for an official Booking.com API.

### 💰 How much does it cost?

Pay-per-event (PPE) — you pay **per stay returned**, never per page or per run. A lite stay is billed once; a full stay adds the detail add-on on top.

> 🚀 **Launch promo — 50% off the regular price for the first 2 months.**

| Event                          | Launch (−50%)     | Regular       | Charged                                                                                |
| ------------------------------ | ----------------- | ------------- | -------------------------------------------------------------------------------------- |
| **Stay result**                | **$1.25 / 1,000** | $2.50 / 1,000 | Once per stay returned — lite *and* full modes.                                        |
| **Full hotel detail** (add-on) | **$2.50 / 1,000** | $5.00 / 1,000 | Only with `scrapeDetails: true` (or direct-property modes), on top of the stay result. |

Which means, end to end:

| What you scrape                                                                             | Launch (−50%)           | Regular       |
| ------------------------------------------------------------------------------------------- | ----------------------- | ------------- |
| **Lite** — list data (name, price, review score, stars, address, photos)                    | **$1.25 / 1,000 stays** | $2.50 / 1,000 |
| **Full** — everything above **+** rooms, facilities, coordinates, description, full gallery | **$3.75 / 1,000 stays** | $7.50 / 1,000 |

Prices are the list (Free-plan) rate — **higher Apify subscription plans pay less automatically**, shown as "from $…" on the actor's Store card. That's roughly half the going rate for Booking hotel data.

**Worked examples (launch pricing):**

| Job                                      | Cost      |
| ---------------------------------------- | --------- |
| List 1,000 hotels in Paris (lite)        | **$1.25** |
| List 5,000 hotels across a region (lite) | **$6.25** |
| Full schema for 1,000 hotels             | **$3.75** |
| Full schema for 250 hotels               | **$0.94** |

You're **never charged** for failed rows, duplicate hotels, or retried requests — only for unique stays actually returned to you. (A negligible Apify actor-start fee of ~$0.00005/run applies, as it does to every PPE actor.)

### 🧭 Scraping modes

| Section                 | Mode  | Use case                                                        |
| ----------------------- | ----- | --------------------------------------------------------------- |
| 1. Location + filters   | A     | "All 4-star hotels in Paris under €300"                         |
| 2. Search URLs          | B     | "Pre-built Booking URL with district / chain / landmark filter" |
| 3. Bbox / center+radius | E     | "All stays within this neighborhood polygon"                    |
| 4. Hotel chain          | F     | "All Mercure hotels in France"                                  |
| 5. Direct property      | C / D | "Just give me the schema for hotel camelia prestige"            |

You can combine multiple modes in a single run — they're enqueued together and de-duplicated by `hotelId` / slug.

### ⚠️ Limitations

- **~1,000 stays per search.** Booking limits how deep any single search can go. For broad cities (e.g., "Paris" → 4,256 properties) the actor automatically splits the search into smaller slices to reach the long tail — the limit still applies to each slice.
- **No reviews list.** This actor returns a review *summary* (score, count, label, breakdown), not individual reviews. The sister actor (coming soon) will handle full reviews.
- **No flights / cars / attractions / airport taxis.** Stays only.
- **Image URLs, not files.** We return image URLs; download the files yourself if you need them. (Intentional — it keeps runs fast and cheap.)
- **Currency.** Your chosen currency is applied reliably, but a handful of properties may fall back to another currency if Booking has no quote in yours.
- **Desktop listings.** Data reflects Booking's desktop results for consistency across runs.

### 💡 Tips & advanced options

- **For chains not in the dropdown**, copy the URL from Booking after applying their `chaincode=` filter, paste it in section 2.
- **For neighborhood / district filters**, same trick — apply on Booking, copy URL, paste in section 2.
- **For huge cities**, leave `maxItems` at the default 1000 unless you really need everything — Booking's pagination cap means past ~1000 results, the marginal cost grows fast.
- **For dataset deduplication**, use `hotelId` (or `cc/slug`) as the key. Both are stable across runs.

### ❓ FAQ

**Q: Why is `scrapeDetails: false` the default?**
A: Most buyers want a list, not detailed schemas. Lite mode skips the detail add-on, so it's **3× cheaper** ($2.50 vs$7.50 / 1,000 stays at regular pricing). Flip it on only when you actually need rooms/photos/facilities.

**Q: Will the scraper get blocked?**
A: No — anti-blocking is fully handled for you. The actor manages access and proxy rotation transparently and retries automatically when needed, so you just get your data. You're only charged for stays actually returned.

**Q: Can I use my own proxies?**
A: Yes. Section 8 → `proxyConfiguration` accepts custom URLs. Apify residential is the safe default.

**Q: What time zone are dates / timestamps in?**
A: `scrapedAt` is ISO-8601 in UTC. `checkIn` / `checkOut` are calendar dates with no time zone — they map to Booking's interpretation in the property's local time.

**Q: Are output URLs OK to share?**
A: Yes — every URL in the dataset is cleaned of tracking parameters, so they're safe to store, de-duplicate, and share.

**Q: Is it legal to scrape Booking.com?**
A: This actor collects only **publicly available** listing data — property names, prices, star ratings, review summaries, photos, and facilities. It does not log in, bypass any paywall, or extract private personal data. Scraping publicly available data is generally legal, but your results can still contain personal data (protected by the GDPR in the EU and similar laws elsewhere), so only collect and store what you have a legitimate reason to process — and consult a lawyer if you're unsure. See Apify's [blog post on the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

### 🛟 Support & feedback

Found a bug, need an output field we don't return yet, or want a Booking vertical we don't cover (flights, cars, attractions, reviews list)? Open a ticket on the **Issues** tab of this actor — it's monitored, and feature requests genuinely shape the roadmap. For a tailored or private build, reach out via the actor's Store page.

### 🗓️ Changelog

#### 0.6 — Per-result pricing

- 💳 Billing moved from per-page to **per-result** — pay for stays returned, not pages fetched (`stay-result` base + `detail-result` add-on).
- 🚀 **Launch promo: 50% off the regular price for the first 2 months.**
- ✅ Failed rows, duplicate hotels, and retried requests are never charged.
- ⚡ Faster by default — tuned for speed.

#### 0.5 — Setup & reliability

- 🧩 Works out of the box with less configuration; steadier behaviour on long runs.

#### 0.4 — Data-privacy hardening

- 🔒 Your run's storage stays clean — no internal state left behind.

#### 0.3 — Cleaner run logs

- 🧾 Friendlier, concise logs by default.
- 🏷️ Branded run-start summary in the log.

#### 0.2 — Reliability & precise limits

- 🎯 **Precise `maxItems`** — the run stops exactly at your limit instead of finishing the current page.
- 🛡️ More reliable on large cities.

#### 0.1 — Initial release

- 🔀 6 input modes: location + filters, search URL, direct property URL, slug + country, geo bounding box, and hotel chain.
- 🎛️ 16 typed filters for location search.
- 🏨 Optional full-detail enrichment (rooms, photos, facilities, coordinates, description).
- 🧭 Automatic search-splitting to reach past Booking's ~1,000-result cap on large cities.
- ⚡ Built for speed and low cost.
- 🌐 Apify residential proxy by default.

# Actor input Schema

## `location` (type: `string`):

City, region, or area to search (e.g., 'Paris', 'Bali, Indonesia', 'London'). Booking accepts free-form strings — anything its search box accepts works here.

## `checkIn` (type: `string`):

ISO date YYYY-MM-DD. If left empty, Booking's default flexible-dates view is used.

## `checkOut` (type: `string`):

ISO date YYYY-MM-DD. Must be strictly after check-in.

## `adults` (type: `integer`):

Number of adult guests.

## `children` (type: `integer`):

Number of children. If > 0, you must also provide `childrenAges` with the same length.

## `childrenAges` (type: `array`):

List of children ages (0-17), one entry per child. Required if `children` > 0.

## `rooms` (type: `integer`):

Number of rooms requested.

## `propertyClass` (type: `array`):

Filter by star rating. Multi-select.

## `reviewScoreMin` (type: `string`):

Booking's review-score lower bound.

## `priceMin` (type: `integer`):

Minimum price per night, in the currency selected below.

## `priceMax` (type: `integer`):

Maximum price per night, in the currency selected below.

## `propertyTypes` (type: `array`):

Filter by property category. Multi-select.

## `mealPlans` (type: `array`):

Filter by meal plans on offer.

## `hotelFacilities` (type: `array`):

Property-level amenities (pool, parking, spa, etc.).

## `roomFacilities` (type: `array`):

Room-level amenities (AC, balcony, private bathroom, etc.).

## `accessibleFacilities` (type: `array`):

Accessibility features at the property level.

## `accessibleRoomFacilities` (type: `array`):

Accessibility features at the room level.

## `distanceFromCenter` (type: `string`):

Maximum distance from the city centre.

## `ratedHigh` (type: `array`):

Booking's 'Highly rated for X' badges.

## `sustainabilityLevel` (type: `string`):

Filter to properties carrying a sustainability certification.

## `paymentTypes` (type: `array`):

Filter by payment methods accepted.

## `bedPreference` (type: `string`):

Twin beds vs. one double bed.

## `reservationPolicy` (type: `string`):

Restrict to free-cancellation offers.

## `stayType` (type: `array`):

Filter for pet-friendly, adults-only, or LGBTQ+ friendly properties.

## `sortBy` (type: `string`):

How Booking sorts results within each (sub-)search.

## `searchUrls` (type: `array`):

Paste one or more booking.com/searchresults URLs. Useful when you need a contextual filter (district, chain, landmark, …) that the typed filters above don't support — copy the URL from your browser after applying the filter on Booking and paste it here.

## `bbox` (type: `object`):

Search within a geographic rectangle. Provide either bbox OR center+radius.

## `center` (type: `object`):

Latitude + longitude of the search center. Pair with `radiusMeters`.

## `radiusMeters` (type: `integer`):

Radius around the center, in meters (500–50,000).

## `chain` (type: `string`):

Restrict to a specific hotel chain. For chains not in this list, copy the corresponding `chaincode=` URL from Booking and paste it in section 2 (Search by URL).

## `propertyUrls` (type: `array`):

Direct hotel detail page URLs (booking.com/hotel/{cc}/{slug}.html). Each URL produces one full-schema row.

## `propertySlugs` (type: `array`):

Property identifiers as { slug, cc } pairs. The slug is the segment of the Booking URL after `/hotel/{cc}/`. Example: `[{"slug":"hotelcameliaprestige","cc":"fr"}]`.

## `scrapeDetails` (type: `boolean`):

If true, fetch the detail page for every stay returned by a search (modes A/B/E/F). Adds rooms, photos, facilities, coordinates, and richer descriptions — at the cost of one extra HTTP request per stay (charged as detail-page).

## `maxItems` (type: `integer`):

Hard ceiling on how many stays to return. Set to 0 for unlimited.

## `currency` (type: `string`):

Booking's `selected_currency` URL param — forces all prices to this currency, regardless of the IP-geo default.

## `language` (type: `string`):

Booking's `lang` URL param — forces locale on titles, descriptions, address rendering.

## `maxConcurrency` (type: `integer`):

Maximum parallel requests. Higher = faster, but more aggressive — Booking's WAF flags excessive concurrency. 5 is a safe default.

## `proxyConfiguration` (type: `object`):

Apify Proxy is enabled by default with residential IPs. You can override or disable it here.

## Actor input object example

```json
{
  "location": "Paris",
  "adults": 2,
  "children": 0,
  "rooms": 1,
  "sortBy": "popularity",
  "scrapeDetails": false,
  "maxItems": 1000,
  "currency": "EUR",
  "language": "en-us",
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `stays` (type: `string`):

One row per stay returned — name, price, review score, star rating, address, photo URLs, and (in full mode) description, rooms, facilities, house rules, review breakdown, and coordinates. Stored in the run's default dataset.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "location": "Paris",
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("bebity/booking-stays-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "location": "Paris",
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("bebity/booking-stays-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "location": "Paris",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call bebity/booking-stays-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=bebity/booking-stays-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "🔥 Booking Scraper",
        "description": "⚡️ Fast, no-code Booking.com scraper with LLM- & 🤖 agent-optimized input & output. Extract hotels, apartments, hostels, B&Bs & villas by location, URL or property ID — prices, availability, star ratings, review scores, photos, facilities & coordinates. Export to JSON, CSV or Excel.",
        "version": "0.0",
        "x-build-id": "1KyMlMlcotNjRZmxQ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/bebity~booking-stays-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-bebity-booking-stays-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/bebity~booking-stays-scraper/runs": {
            "post": {
                "operationId": "runs-sync-bebity-booking-stays-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/bebity~booking-stays-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-bebity-booking-stays-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "City, region, or area to search (e.g., 'Paris', 'Bali, Indonesia', 'London'). Booking accepts free-form strings — anything its search box accepts works here."
                    },
                    "checkIn": {
                        "title": "Check-in date",
                        "type": "string",
                        "description": "ISO date YYYY-MM-DD. If left empty, Booking's default flexible-dates view is used."
                    },
                    "checkOut": {
                        "title": "Check-out date",
                        "type": "string",
                        "description": "ISO date YYYY-MM-DD. Must be strictly after check-in."
                    },
                    "adults": {
                        "title": "Adults",
                        "minimum": 1,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Number of adult guests.",
                        "default": 2
                    },
                    "children": {
                        "title": "Children",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Number of children. If > 0, you must also provide `childrenAges` with the same length.",
                        "default": 0
                    },
                    "childrenAges": {
                        "title": "Children ages",
                        "type": "array",
                        "description": "List of children ages (0-17), one entry per child. Required if `children` > 0.",
                        "items": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 17
                        }
                    },
                    "rooms": {
                        "title": "Rooms",
                        "minimum": 1,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Number of rooms requested.",
                        "default": 1
                    },
                    "propertyClass": {
                        "title": "Property class (stars)",
                        "type": "array",
                        "description": "Filter by star rating. Multi-select.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "1-star",
                                "2-stars",
                                "3-stars",
                                "4-stars",
                                "5-stars"
                            ],
                            "enumTitles": [
                                "1 star",
                                "2 stars",
                                "3 stars",
                                "4 stars",
                                "5 stars"
                            ]
                        }
                    },
                    "reviewScoreMin": {
                        "title": "Minimum review score",
                        "enum": [
                            "pleasant-6+",
                            "good-7+",
                            "very-good-8+",
                            "wonderful-9+"
                        ],
                        "type": "string",
                        "description": "Booking's review-score lower bound."
                    },
                    "priceMin": {
                        "title": "Min price per night",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum price per night, in the currency selected below."
                    },
                    "priceMax": {
                        "title": "Max price per night",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum price per night, in the currency selected below."
                    },
                    "propertyTypes": {
                        "title": "Property types",
                        "type": "array",
                        "description": "Filter by property category. Multi-select.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "apartments",
                                "hostels",
                                "hotels",
                                "bed-and-breakfasts",
                                "villas",
                                "boats",
                                "guesthouses",
                                "vacation-homes",
                                "homestays"
                            ],
                            "enumTitles": [
                                "Apartments",
                                "Hostels",
                                "Hotels",
                                "Bed and Breakfasts",
                                "Villas",
                                "Boats",
                                "Guesthouses",
                                "Vacation Homes",
                                "Homestays"
                            ]
                        }
                    },
                    "mealPlans": {
                        "title": "Meals included",
                        "type": "array",
                        "description": "Filter by meal plans on offer.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "breakfast-included",
                                "breakfast-and-dinner",
                                "kitchen-facilities"
                            ],
                            "enumTitles": [
                                "Breakfast included",
                                "Breakfast & dinner",
                                "Kitchen facilities"
                            ]
                        }
                    },
                    "hotelFacilities": {
                        "title": "Property facilities",
                        "type": "array",
                        "description": "Property-level amenities (pool, parking, spa, etc.).",
                        "items": {
                            "type": "string",
                            "enum": [
                                "free-wifi",
                                "parking",
                                "swimming-pool",
                                "spa",
                                "hot-tub-jacuzzi"
                            ],
                            "enumTitles": [
                                "Free Wi-Fi",
                                "Parking",
                                "Swimming pool",
                                "Spa",
                                "Hot tub / Jacuzzi"
                            ]
                        }
                    },
                    "roomFacilities": {
                        "title": "Room facilities",
                        "type": "array",
                        "description": "Room-level amenities (AC, balcony, private bathroom, etc.).",
                        "items": {
                            "type": "string",
                            "enum": [
                                "air-conditioning",
                                "balcony",
                                "private-bathroom",
                                "private-pool",
                                "kitchen-kitchenette"
                            ],
                            "enumTitles": [
                                "Air conditioning",
                                "Balcony",
                                "Private bathroom",
                                "Private pool",
                                "Kitchen / kitchenette"
                            ]
                        }
                    },
                    "accessibleFacilities": {
                        "title": "Property accessibility",
                        "type": "array",
                        "description": "Accessibility features at the property level.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "toilet-grab-rails",
                                "raised-toilet",
                                "lowered-sink",
                                "bathroom-emergency-cord",
                                "visual-aids-braille",
                                "visual-aids-tactile-signs",
                                "auditory-guidance"
                            ],
                            "enumTitles": [
                                "Toilet with grab rails",
                                "Raised toilet",
                                "Lowered sink",
                                "Bathroom emergency cord",
                                "Visual aids (Braille)",
                                "Visual aids (tactile signs)",
                                "Auditory guidance"
                            ]
                        }
                    },
                    "accessibleRoomFacilities": {
                        "title": "Room accessibility",
                        "type": "array",
                        "description": "Accessibility features at the room level.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "unit-on-ground-floor",
                                "upper-floors-via-elevator",
                                "unit-wheelchair-accessible",
                                "toilet-grab-rails",
                                "adapted-bath",
                                "roll-in-shower",
                                "walk-in-shower",
                                "raised-toilet",
                                "lower-sink",
                                "emergency-cord-bathroom",
                                "shower-chair"
                            ],
                            "enumTitles": [
                                "Unit on ground floor",
                                "Upper floors accessible by elevator",
                                "Entire unit wheelchair accessible",
                                "Toilet with grab rails",
                                "Adapted bath",
                                "Roll-in shower",
                                "Walk-in shower",
                                "Raised toilet",
                                "Lower sink",
                                "Emergency cord in bathroom",
                                "Shower chair"
                            ]
                        }
                    },
                    "distanceFromCenter": {
                        "title": "Distance from city center",
                        "enum": [
                            "1km",
                            "3km",
                            "5km"
                        ],
                        "type": "string",
                        "description": "Maximum distance from the city centre."
                    },
                    "ratedHigh": {
                        "title": "Highly rated features",
                        "type": "array",
                        "description": "Booking's 'Highly rated for X' badges.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "very-good-breakfast"
                            ],
                            "enumTitles": [
                                "Very good breakfast"
                            ]
                        }
                    },
                    "sustainabilityLevel": {
                        "title": "Sustainability certification",
                        "enum": [
                            "certified"
                        ],
                        "type": "string",
                        "description": "Filter to properties carrying a sustainability certification."
                    },
                    "paymentTypes": {
                        "title": "Payment options",
                        "type": "array",
                        "description": "Filter by payment methods accepted.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "accepts-online-payments"
                            ],
                            "enumTitles": [
                                "Accepts online payments"
                            ]
                        }
                    },
                    "bedPreference": {
                        "title": "Bed preference",
                        "enum": [
                            "twin-beds",
                            "double-bed"
                        ],
                        "type": "string",
                        "description": "Twin beds vs. one double bed."
                    },
                    "reservationPolicy": {
                        "title": "Reservation policy",
                        "enum": [
                            "free-cancellation"
                        ],
                        "type": "string",
                        "description": "Restrict to free-cancellation offers."
                    },
                    "stayType": {
                        "title": "Travel group / stay type",
                        "type": "array",
                        "description": "Filter for pet-friendly, adults-only, or LGBTQ+ friendly properties.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "pet-friendly",
                                "adults-only",
                                "travel-proud"
                            ],
                            "enumTitles": [
                                "Pet friendly",
                                "Adults only",
                                "Travel Proud (LGBTQ+ friendly)"
                            ]
                        }
                    },
                    "sortBy": {
                        "title": "Sort order",
                        "enum": [
                            "popularity",
                            "price",
                            "review-score-and-price",
                            "distance-from-landmark"
                        ],
                        "type": "string",
                        "description": "How Booking sorts results within each (sub-)search.",
                        "default": "popularity"
                    },
                    "searchUrls": {
                        "title": "Search URLs",
                        "type": "array",
                        "description": "Paste one or more booking.com/searchresults URLs. Useful when you need a contextual filter (district, chain, landmark, …) that the typed filters above don't support — copy the URL from your browser after applying the filter on Booking and paste it here.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "bbox": {
                        "title": "Bounding box",
                        "type": "object",
                        "description": "Search within a geographic rectangle. Provide either bbox OR center+radius."
                    },
                    "center": {
                        "title": "Center point",
                        "type": "object",
                        "description": "Latitude + longitude of the search center. Pair with `radiusMeters`."
                    },
                    "radiusMeters": {
                        "title": "Radius (meters)",
                        "minimum": 500,
                        "maximum": 50000,
                        "type": "integer",
                        "description": "Radius around the center, in meters (500–50,000)."
                    },
                    "chain": {
                        "title": "Hotel chain",
                        "enum": [
                            "mercure",
                            "ibis",
                            "ibis-styles",
                            "astotel",
                            "guestready",
                            "studio-prestige",
                            "check-my-guest",
                            "belvilla",
                            "sweett",
                            "hiphop-hostels"
                        ],
                        "type": "string",
                        "description": "Restrict to a specific hotel chain. For chains not in this list, copy the corresponding `chaincode=` URL from Booking and paste it in section 2 (Search by URL)."
                    },
                    "propertyUrls": {
                        "title": "Property URLs",
                        "type": "array",
                        "description": "Direct hotel detail page URLs (booking.com/hotel/{cc}/{slug}.html). Each URL produces one full-schema row.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "propertySlugs": {
                        "title": "Property slugs",
                        "type": "array",
                        "description": "Property identifiers as { slug, cc } pairs. The slug is the segment of the Booking URL after `/hotel/{cc}/`. Example: `[{\"slug\":\"hotelcameliaprestige\",\"cc\":\"fr\"}]`."
                    },
                    "scrapeDetails": {
                        "title": "Scrape full detail page",
                        "type": "boolean",
                        "description": "If true, fetch the detail page for every stay returned by a search (modes A/B/E/F). Adds rooms, photos, facilities, coordinates, and richer descriptions — at the cost of one extra HTTP request per stay (charged as detail-page).",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Hard ceiling on how many stays to return. Set to 0 for unlimited.",
                        "default": 1000
                    },
                    "currency": {
                        "title": "Output currency",
                        "enum": [
                            "EUR",
                            "USD",
                            "GBP",
                            "JPY",
                            "AUD",
                            "CAD",
                            "CHF",
                            "CNY",
                            "SEK",
                            "NZD",
                            "BRL",
                            "INR",
                            "KRW",
                            "MXN",
                            "SGD",
                            "HKD",
                            "NOK",
                            "DKK",
                            "PLN",
                            "TRY",
                            "ZAR",
                            "AED",
                            "THB",
                            "IDR",
                            "MYR",
                            "PHP",
                            "CZK",
                            "HUF",
                            "RON",
                            "ILS",
                            "SAR"
                        ],
                        "type": "string",
                        "description": "Booking's `selected_currency` URL param — forces all prices to this currency, regardless of the IP-geo default.",
                        "default": "EUR"
                    },
                    "language": {
                        "title": "Output language",
                        "enum": [
                            "en-us",
                            "en-gb",
                            "fr",
                            "fr-ca",
                            "de",
                            "es",
                            "es-ar",
                            "it",
                            "pt-pt",
                            "pt-br",
                            "nl",
                            "pl",
                            "cs",
                            "da",
                            "sv",
                            "no",
                            "fi",
                            "ru",
                            "tr",
                            "ja",
                            "ko",
                            "zh-cn",
                            "zh-tw",
                            "th",
                            "id",
                            "ar"
                        ],
                        "type": "string",
                        "description": "Booking's `lang` URL param — forces locale on titles, descriptions, address rendering.",
                        "default": "en-us"
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum parallel requests. Higher = faster, but more aggressive — Booking's WAF flags excessive concurrency. 5 is a safe default.",
                        "default": 5
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify Proxy is enabled by default with residential IPs. You can override or disable it here.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
