# Booking.com Scraper — Hotels, Prices & Reviews (`skipper_lume/booking-com-scraper`) Actor

Scrape hotels, prices, ratings, and reviews from Booking.com. Search by destination + dates or extract detailed info from hotel URLs. Filters by stars, price range, property type, review score. Returns structured JSON with prices, discounts, availability, amenities, room types, and photos.

- **URL**: https://apify.com/skipper\_lume/booking-com-scraper.md
- **Developed by:** [Max Gor](https://apify.com/skipper_lume) (community)
- **Categories:** Travel, E-commerce, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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 Scraper

Scrape hotel data, prices, ratings, and reviews from Booking.com. Search by destination with dates or extract detailed property information from specific hotel URLs.

### Features

- **Search mode**: Find hotels by destination + check-in/check-out dates
- **Detail mode**: Extract full property info from hotel URLs
- **Rich filters**: Star rating, price range, property type, review score, sort order
- **Complete data**: Prices, discounts, reviews, amenities, room types, photos, coordinates
- **Multi-currency**: Get prices in any currency Booking.com supports (USD, EUR, GBP, etc.)
- **Multi-language**: Results in any Booking.com language (en-us, de, fr, nl, etc.)
- **Pagination**: Automatically scrapes multiple pages of search results
- **Anti-blocking**: Powered by [Crawlee](https://crawlee.dev/) — automatic fingerprint randomization, session pool with proxy rotation, block detection & retry

### Input — Search Mode

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `mode` | string | `search` | Set to `search` |
| `destination` | string | required | City, region, or hotel name |
| `checkin` | string | +30 days | Check-in date (YYYY-MM-DD) |
| `checkout` | string | +32 days | Check-out date (YYYY-MM-DD) |
| `adults` | integer | 2 | Number of adults |
| `rooms` | integer | 1 | Number of rooms |
| `currency` | string | USD | Currency code |
| `maxPages` | integer | 5 | Max pages to scrape (~25 hotels/page) |
| `sortBy` | string | — | Sort: price, distance, review_score_and_price, etc. |
| `stars` | array | — | Filter by stars, e.g. [4, 5] |
| `minPrice` | integer | — | Min price per night |
| `maxPrice` | integer | — | Max price per night |
| `minReviewScore` | integer | — | Min score: 60/70/80/90 |

#### Example Search Input

```json
{
    "mode": "search",
    "destination": "Amsterdam, Netherlands",
    "checkin": "2026-06-01",
    "checkout": "2026-06-03",
    "adults": 2,
    "currency": "EUR",
    "maxPages": 3,
    "stars": [4, 5],
    "sortBy": "review_score_and_price"
}
````

### Input — Detail Mode

| Field | Type | Description |
|-------|------|-------------|
| `mode` | string | Set to `detail` |
| `urls` | array | List of Booking.com hotel URLs |

#### Example Detail Input

```json
{
    "mode": "detail",
    "urls": [
        "https://www.booking.com/hotel/nl/waldorf-astoria-amsterdam.html",
        "https://www.booking.com/hotel/nl/the-dylan-amsterdam.html"
    ]
}
```

### Output — Search Results

Each hotel in search results includes:

| Field | Description |
|-------|-------------|
| `name` | Hotel name |
| `url` | Direct Booking.com link |
| `price` | Total price for stay |
| `price_currency` | Currency code |
| `original_price` | Price before discount |
| `discount_percent` | Discount percentage |
| `review_score` | Guest score (0-10) |
| `review_count` | Number of reviews |
| `review_word` | Rating label (Superb, Very Good, etc.) |
| `stars` | Star rating (1-5) |
| `location` | Neighborhood/area |
| `distance_from_center` | Distance from center |
| `free_cancellation` | Free cancellation available |
| `breakfast_included` | Breakfast included |
| `room_type` | Recommended room type |
| `image` | Main photo URL |

### Output — Hotel Details

Detail mode returns comprehensive property data:

| Field | Description |
|-------|-------------|
| `hotel_id` | Booking.com hotel identifier (from URL) |
| `description` | Hotel description (up to 1000 chars) |
| `address` | Full street address |
| `city` | City name |
| `country` | Country code (GB, NL, ES, etc.) |
| `stars` | Official star rating (1-5, extracted from page data) |
| `review_score` | Overall guest score (0-10) |
| `review_count` | Total number of reviews |
| `review_word` | Rating label (Exceptional, Superb, Very Good, Good) |
| `review_scores` | Per-category scores: Facilities, Cleanliness, Comfort, Location, etc. |
| `amenities` | Popular hotel facilities (Free Wifi, Pool, Parking, etc.) |
| `images` | Gallery photo URLs in max resolution |
| `rooms` | Room types with bed configurations and max occupancy |
| `checkin_time` / `checkout_time` | Check-in/out times (e.g. "3:00 PM" / "11:00 AM") |
| `property_type` | Hotel, Hostel, Apartment, B\&B, etc. |

### Proxy Configuration

Booking.com has strong anti-bot protection. **Residential proxies are recommended** for reliable results:

```json
{
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    }
}
```

### Cost Estimate

Using Apify residential proxies:

- **Search**: ~$0.10-0.15 per page (25 hotels)
- **Detail**: ~$0.05-0.10 per hotel page
- **Typical run** (5 pages, 125 hotels): ~$0.50-0.75

### How It Works

This actor uses **Crawlee PlaywrightCrawler** with:

- **Browser fingerprint randomization** — each request uses a unique browser fingerprint
- **Session pool** — automatic proxy/session rotation when blocks are detected
- **Smart retries** — blocked requests are retried with fresh sessions (up to 6 attempts)
- **404 detection** — non-existent hotel pages are reported cleanly without wasting retries

### Tips

1. **Dates matter**: Prices vary significantly by dates. Always specify check-in/check-out.
2. **Use filters**: Star rating and price filters reduce pages and speed up scraping.
3. **Residential proxies**: Datacenter proxies get blocked quickly by Booking.com.
4. **Currency**: Set currency to avoid conversion issues — Booking.com returns prices in the selected currency.
5. **Memory**: Search mode works with 2 GB. Detail mode with multiple hotels may need 4 GB.

# Actor input Schema

## `mode` (type: `string`):

Choose 'search' to find hotels by destination + dates, or 'detail' to extract full info from specific hotel URLs.

## `destination` (type: `string`):

City, region, or hotel name to search (e.g. 'Amsterdam', 'Paris, France', 'Hilton London'). Required for 'search' mode.

## `checkin` (type: `string`):

Check-in date in YYYY-MM-DD format. Defaults to 30 days from today.

## `checkout` (type: `string`):

Check-out date in YYYY-MM-DD format. Defaults to 32 days from today.

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

Number of adult guests.

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

Number of children.

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

Number of rooms needed.

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

Price currency code (USD, EUR, GBP, etc.).

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

Booking.com language code (en-us, de, fr, nl, etc.).

## `maxPages` (type: `integer`):

Maximum number of search result pages to scrape. Each page has ~25 hotels.

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

Sort order for search results.

## `minPrice` (type: `integer`):

Minimum price filter (in selected currency).

## `maxPrice` (type: `integer`):

Maximum price filter (in selected currency).

## `stars` (type: `array`):

Filter by hotel star rating (e.g. \[4, 5] for 4- and 5-star only).

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

Booking.com property type IDs. Common: 204=Hotel, 201=Apartment, 208=Hostel, 219=B\&B, 213=Villa, 220=Resort.

## `minReviewScore` (type: `integer`):

Minimum review score filter: 60=Pleasant, 70=Good, 80=Very Good, 90=Superb.

## `urls` (type: `array`):

List of Booking.com hotel page URLs to scrape in 'detail' mode.

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

Max parallel browser pages (higher = faster but more memory).

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

⚠️ IMPORTANT: Booking.com blocks datacenter IPs. You MUST use residential proxies for reliable results. Select 'Apify Proxy (residential)' or provide your own residential proxy URLs. Without residential proxies, most requests will be blocked.

## Actor input object example

```json
{
  "mode": "search",
  "destination": "Amsterdam, Netherlands",
  "adults": 2,
  "children": 0,
  "rooms": 1,
  "currency": "USD",
  "language": "en-us",
  "maxPages": 5,
  "sortBy": "",
  "maxConcurrency": 2,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `hotels` (type: `string`):

No description

# 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 = {
    "destination": "Amsterdam, Netherlands",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("skipper_lume/booking-com-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 = {
    "destination": "Amsterdam, Netherlands",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("skipper_lume/booking-com-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 '{
  "destination": "Amsterdam, Netherlands",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call skipper_lume/booking-com-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Booking.com Scraper — Hotels, Prices & Reviews",
        "description": "Scrape hotels, prices, ratings, and reviews from Booking.com. Search by destination + dates or extract detailed info from hotel URLs. Filters by stars, price range, property type, review score. Returns structured JSON with prices, discounts, availability, amenities, room types, and photos.",
        "version": "1.0",
        "x-build-id": "bkzgqeUh942KEV8Yn"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/skipper_lume~booking-com-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-skipper_lume-booking-com-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/skipper_lume~booking-com-scraper/runs": {
            "post": {
                "operationId": "runs-sync-skipper_lume-booking-com-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/skipper_lume~booking-com-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-skipper_lume-booking-com-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": {
                    "mode": {
                        "title": "Scraping mode",
                        "enum": [
                            "search",
                            "detail"
                        ],
                        "type": "string",
                        "description": "Choose 'search' to find hotels by destination + dates, or 'detail' to extract full info from specific hotel URLs.",
                        "default": "search"
                    },
                    "destination": {
                        "title": "Destination",
                        "type": "string",
                        "description": "City, region, or hotel name to search (e.g. 'Amsterdam', 'Paris, France', 'Hilton London'). Required for 'search' mode."
                    },
                    "checkin": {
                        "title": "Check-in date",
                        "type": "string",
                        "description": "Check-in date in YYYY-MM-DD format. Defaults to 30 days from today."
                    },
                    "checkout": {
                        "title": "Check-out date",
                        "type": "string",
                        "description": "Check-out date in YYYY-MM-DD format. Defaults to 32 days from today."
                    },
                    "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.",
                        "default": 0
                    },
                    "rooms": {
                        "title": "Rooms",
                        "minimum": 1,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Number of rooms needed.",
                        "default": 1
                    },
                    "currency": {
                        "title": "Currency",
                        "type": "string",
                        "description": "Price currency code (USD, EUR, GBP, etc.).",
                        "default": "USD"
                    },
                    "language": {
                        "title": "Language",
                        "type": "string",
                        "description": "Booking.com language code (en-us, de, fr, nl, etc.).",
                        "default": "en-us"
                    },
                    "maxPages": {
                        "title": "Max search pages",
                        "minimum": 1,
                        "maximum": 40,
                        "type": "integer",
                        "description": "Maximum number of search result pages to scrape. Each page has ~25 hotels.",
                        "default": 5
                    },
                    "sortBy": {
                        "title": "Sort by",
                        "enum": [
                            "",
                            "price",
                            "distance",
                            "class",
                            "class_asc",
                            "review_score_and_price",
                            "bayesian_review_score",
                            "popularity"
                        ],
                        "type": "string",
                        "description": "Sort order for search results.",
                        "default": ""
                    },
                    "minPrice": {
                        "title": "Min price per night",
                        "type": "integer",
                        "description": "Minimum price filter (in selected currency)."
                    },
                    "maxPrice": {
                        "title": "Max price per night",
                        "type": "integer",
                        "description": "Maximum price filter (in selected currency)."
                    },
                    "stars": {
                        "title": "Star rating filter",
                        "type": "array",
                        "description": "Filter by hotel star rating (e.g. [4, 5] for 4- and 5-star only).",
                        "items": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 5
                        }
                    },
                    "propertyTypes": {
                        "title": "Property type filter",
                        "type": "array",
                        "description": "Booking.com property type IDs. Common: 204=Hotel, 201=Apartment, 208=Hostel, 219=B&B, 213=Villa, 220=Resort.",
                        "items": {
                            "type": "integer"
                        }
                    },
                    "minReviewScore": {
                        "title": "Min review score",
                        "minimum": 60,
                        "maximum": 90,
                        "type": "integer",
                        "description": "Minimum review score filter: 60=Pleasant, 70=Good, 80=Very Good, 90=Superb."
                    },
                    "urls": {
                        "title": "Hotel URLs (detail mode)",
                        "type": "array",
                        "description": "List of Booking.com hotel page URLs to scrape in 'detail' mode.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Max parallel browser pages (higher = faster but more memory).",
                        "default": 2
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "⚠️ IMPORTANT: Booking.com blocks datacenter IPs. You MUST use residential proxies for reliable results. Select 'Apify Proxy (residential)' or provide your own residential proxy URLs. Without residential proxies, most requests will be blocked."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
