# Booking Price Monitor · Hotel Rate Tracker (`corent1robert/booking-price-monitor`) Actor

Track hotel market rates on Booking.com. Paste a city search URL — get avg, min, max prices per property, discount %, promo flags and free cancellation across 5 upcoming periods. No login.

- **URL**: https://apify.com/corent1robert/booking-price-monitor.md
- **Developed by:** [Corentin Robert](https://apify.com/corent1robert) (community)
- **Categories:** Travel, Automation, E-commerce
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.49 / 1,000 hotel price retrieveds

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.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 Price Monitor · Hotel Rate Tracker

Track hotel prices across any Booking.com market. Paste a city search URL — get avg, min, max rates per property across **15 date windows** (3 stay durations × 5 upcoming periods) with automatic discount detection.

**No login. No API key. No account required.**

---

### Who is this for?

| You are… | Typical goal | Suggested setup |
|---|---|---|
| **STR / hotel revenue manager** | Benchmark your property against the market for coming months | City search URL with your star/type filters |
| **Property management agency** | Weekly pricing report for client portfolios across multiple cities | One URL per market · schedule every Monday |
| **Real estate investor** | Validate projected hotel revenues before purchase | City URL with price range filter · run once |
| **Travel agency / OTA analyst** | Monitor seasonal rate trends and discount windows | City URL · review windowSummary in run log |
| **Data analyst / BI team** | Feed price time-series into a dashboard | API integration · flat-prices view |
| **Competitive intelligence team** | Track competitor pricing by stars, type, or neighbourhood | Filtered Booking.com URL with your criteria |

**What you get by default** — property name, star rating, review score, coordinates, avg/min/max nightly rate for 1-night, 2-night, and 7-night stays, weekly discount %, max discount %, promo badge detection, free cancellation flag, pay-on-arrival flag, and a full `priceByWindow[]` array (one entry per date/duration combination).

**Coverage:** runs 15 search configurations per URL — 3 stay durations (1N, 2N, 7N) × 5 date windows (J+7, J+14, J+30, J+60, J+90 from today). Properties that only appear for specific stay durations are captured automatically.

---

### Quick start

1. Open the Actor in Apify Console and click **Try for free**
2. Go to [booking.com](https://www.booking.com), search for a city, apply any filters you want (stars, property type, neighbourhood…), and **copy the URL from your browser**
3. Paste it in the **Booking.com search URL(s)** field
4. Click **Start** — results appear in the **Dataset** tab within a few minutes
5. Use the **Overview** view to compare properties side by side, or **Flat prices** for a date-by-date spreadsheet

**Tip:** Your filters (guest count, star rating, property type, neighbourhood…) are automatically preserved in the search.

---

### What it extracts

#### Per property

| Field | Description |
|---|---|
| `propertyName` | Property display name |
| `propertyUrl` | Direct link to the Booking.com property page |
| `city` | City |
| `starRating` | Star rating (1–5) |
| `rating` | Guest review score (e.g. 8.4) |
| `reviewCount` | Number of reviews |
| `latitude` / `longitude` | GPS coordinates |
| `distanceFromCenter` | Distance from city centre (e.g. "1.8 km from centre") |
| `currency` | ISO currency code (e.g. EUR, USD) |
| `avgPrice1N` / `minPrice1N` / `maxPrice1N` | Avg / min / max nightly rate across all 1-night windows |
| `avgPrice2N` / `minPrice2N` / `maxPrice2N` | Same for 2-night stays |
| `avgPrice7N` / `minPrice7N` / `maxPrice7N` | Same for 7-night stays |
| `weeklyDiscountPct` | % cheaper per night for 7-night vs 1-night stays |
| `maxDiscountPct` | Largest discount detected across all windows (vs original price) |
| `hasPromo` | Promo badge detected (e.g. "Limited Time Deal") |
| `freeCancellation` | Free cancellation available on at least one window |
| `noPrepayment` | Pay on arrival available on at least one window |
| `priceSamples` | Number of date/duration windows where a price was found |
| `priceByWindow[]` | Array — one entry per (checkin, checkout, nights) configuration |
| `scrapedAt` | ISO timestamp of the run |

#### `priceByWindow` array entry

| Field | Description |
|---|---|
| `checkin` | Check-in date (YYYY-MM-DD) |
| `checkout` | Check-out date |
| `nights` | Stay duration (1, 2, or 7) |
| `pricePerNight` | Price per night for this window |
| `totalPrice` | Total stay price |
| `discountPct` | % discount vs original price (0 if no discount) |
| `hasPromoFlag` | Promo badge present for this specific window |
| `currency` | Currency for this window |

#### Market summary (in run log)

At the end of each market scan, the run log prints:

````

─── Market Summary ──────────────────────────────────────────────────────────────
Properties with prices : 743/743
Free cancellation      : 49%
With active discount   : 31%
With promo badge       : 23%
Avg price by check-in date (2-night stays):
2026-06-19: 403 EUR/night (743 properties)
2026-06-26: 385 EUR/night (692 properties)
2026-07-12: 391 EUR/night (678 properties)
2026-08-11: 420 EUR/night (621 properties)
2026-09-10: 372 EUR/night (589 properties)
────────────────────────────────────────────────────────────────────────────────

````

---

### Input

| Parameter | Type | Default | Description |
|---|---|---|---|
| `searchUrls` | array | — | Booking.com search URLs. Paste one or more. |
| `maxProperties` | number | `0` | Max properties per URL. `0` = no cap (up to ~930, Booking.com backend limit). API-only. |
| `verboseLogs` | boolean | `false` | Log per-page debug details. API-only. |

#### Input examples

**Monitor a city market:**
```json
{
  "searchUrls": ["https://www.booking.com/searchresults.html?ss=Barcelona%2C+Spain"]
}
````

**Monitor multiple cities at once:**

```json
{
  "searchUrls": [
    "https://www.booking.com/searchresults.html?ss=Paris%2C+France",
    "https://www.booking.com/searchresults.html?ss=Lisbon%2C+Portugal"
  ]
}
```

**Monitor 4-star hotels only (with star filter applied on Booking.com):**

```json
{
  "searchUrls": ["https://www.booking.com/searchresults.html?ss=Rome%2C+Italy&nflt=class%3D4"]
}
```

***

### How it works

1. **URL parsing** — extracts destination, guest count, and all filters from the pasted URL
2. **Date window generation** — builds 15 configurations: 1N/2N/7N stays × J+7/J+14/J+30/J+60/J+90 from today
3. **GraphQL fetch** — calls Booking.com's internal `/dml/graphql` endpoint (HTTP-only, no browser needed) for each configuration with full pagination
4. **Deduplication** — properties found across multiple windows are merged by `pageName`
5. **Aggregation** — computes avg/min/max per stay duration, weekly discount, max discount, promo flag
6. **Dataset push** — one row per property; market summary printed to run log

**Why 3 stay durations?** Booking.com returns different property sets depending on stay length — a property with a 3-night minimum stay is invisible in 1-night searches. Running all three durations guarantees maximum market coverage.

***

### Data quality — what `priceSamples` means

A property only appears in a search window when it is **available and priced** for those exact dates. A fully-booked hotel for the next month appears in fewer windows.

| `priceSamples` | Interpretation |
|---|---|
| **1–3** | Limited availability — appeared in few windows |
| **4–9** | Good coverage across date windows |
| **10–15** | Available across all or most windows |

For deep per-date analysis, see the **Flat prices** dataset view.

***

### Output sample

```json
{
  "propertyName": "Saphir Grenelle",
  "propertyUrl": "https://www.booking.com/hotel/fr/saphirgrenelle.html",
  "city": "Paris",
  "starRating": 3,
  "rating": 7.2,
  "reviewCount": 1720,
  "latitude": 48.8484,
  "longitude": 2.2971,
  "distanceFromCenter": "4.1 km from centre",
  "currency": "EUR",
  "avgPrice1N": 173.9,
  "minPrice1N": 140.66,
  "maxPrice1N": 197.36,
  "avgPrice2N": 179.81,
  "minPrice2N": 144.71,
  "maxPrice2N": 205.46,
  "avgPrice7N": 209.7,
  "minPrice7N": 196.2,
  "maxPrice7N": 223.2,
  "weeklyDiscountPct": 0,
  "maxDiscountPct": 0,
  "hasPromo": false,
  "freeCancellation": false,
  "noPrepayment": false,
  "priceSamples": 11,
  "scrapedAt": "2026-06-13T09:48:01.831Z",
  "priceByWindow": [
    { "checkin": "2026-06-19", "checkout": "2026-06-20", "nights": 1, "pricePerNight": 197.36, "totalPrice": 197.36, "discountPct": 0, "hasPromoFlag": false, "currency": "EUR" },
    { "checkin": "2026-06-19", "checkout": "2026-06-21", "nights": 2, "pricePerNight": 205.46, "totalPrice": 410.92, "discountPct": 0, "hasPromoFlag": false, "currency": "EUR" },
    { "checkin": "2026-06-19", "checkout": "2026-06-26", "nights": 7, "pricePerNight": 223.2, "totalPrice": 1562.42, "discountPct": 0, "hasPromoFlag": false, "currency": "EUR" }
  ]
}
```

***

### Dataset views

| View | Best for |
|---|---|
| **Overview** | Comparing properties side by side — avg prices, discounts, promo flags |
| **Flat prices** | Date-level analysis, pivot tables, Excel / Sheets import |

***

### Performance and cost

| Scenario | Properties | Time (Apify cloud) |
|---|---|---|
| Paris full market (5 windows × 3 durations) | ~740 | ~20 s |
| Marbella, Spain | ~300 | ~10 s |
| 3 cities in one run | ~2,000 | ~60 s |

Runs are **HTTP-only** (no browser) — 256 MB memory, high concurrency.

**No residential proxy needed** — Booking.com's GraphQL endpoint is not gated by the HTML WAF. The actor works reliably without any proxy configuration.

***

### Set up automated weekly monitoring

Most users run this actor on a schedule — once a week per city — and store results over time to track price trends.

**Step-by-step in Apify Console:**

1. Open the Actor and click **Schedule** (top right)
2. Set the frequency — **every Monday at 08:00** is the most common for weekly reports
3. Paste your search URL(s) in the input
4. Save — the actor will run automatically and push data to the same dataset each time

**Track trends across runs with the API:**

Each run appends to the default dataset. Query it via the [Apify API](https://docs.apify.com/api/v2) and filter by `scrapedAt` to build a time-series:

```bash
curl "https://api.apify.com/v2/datasets/{datasetId}/items?token={token}&fields=propertyName,avgPrice1N,scrapedAt"
```

**Tip:** use the `flat-prices` dataset view to get one row per property per date window — ideal for feeding directly into Excel, Google Sheets, or a BI tool.

***

### How much does it cost?

You pay per hotel row successfully written to the dataset. Properties with no price are never billed.

| Plan | Price per property |
|---|---|
| FREE | $0.00399 |
| BRONZE | $0.00349 |
| SILVER | $0.00299 |
| GOLD | $0.00249 |
| PLATINUM / DIAMOND | $0.00199 |

Plus a one-time **$0.05 actor start** charge (same across all plans).

#### Typical cost

| Scenario | Properties | FREE | BRONZE | GOLD |
|---|---|---|---|---|
| Test run — Paris, 50 properties | 50 | ~$0.25 | ~$0.22 | ~$0.17 |
| Full city scan — Paris | ~740 | ~$3.00 | ~$2.63 | ~$1.89 |
| Full city scan — Marbella | ~300 | ~$1.25 | ~$1.10 | ~$0.80 |
| 3 cities in one run | ~2,000 | ~$8.03 | ~$7.03 | ~$5.05 |

All figures include the $0.05 actor-start charge.

***

### Is it legal to scrape Booking.com?

This Actor only accesses data that Booking.com makes publicly available on its search results pages — property names, star ratings, review scores, publicly listed prices, and publicly visible policies (free cancellation, etc.). No login, account, or credentials are required or used.

As with any data, ensure your use complies with applicable regulations, including GDPR where personal data may be involved.

***

### Local development

```bash
npm install
## Edit storage/key_value_stores/default/INPUT.json with your test URLs
node src/main.js
```

Or use the Apify CLI:

```bash
apify run
```

***

### Also available

- **[Booking.com Hotel Search Scraper](https://apify.com/corentinrobert/booking-hotel-search)** — Search any destination and export all hotels with prices, ratings, policies, and coordinates. Beats the 1,000 result cap.
- **[Booking.com Availability Monitor](https://apify.com/corentinrobert/booking-availability-monitor)** — Day-by-day availability calendar with sold-out detection for up to 180 days ahead.
- **[Booking Reviews Scraper](https://apify.com/corent1robert/booking-reviews-scraper)** — All guest reviews for any Booking.com property, with sentiment and contact enrichment.
- **[Booking Pro Host Scraper](https://apify.com/corent1robert/booking-pro-host-scraper)** — Professional host contacts (emails, phones, company names) from Booking.com markets.
- **[Airbnb Price Monitor](https://apify.com/corent1robert/airbnb-price-monitor)** — Same concept for Airbnb: nightly rates, availability, discount detection.

***

### Support

Custom scraper or tailored automation? Contact <corentin@outreacher.fr>.

# Actor input Schema

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

Paste a Booking.com search URL — the actor checks prices automatically for 5 upcoming periods (next week, 2 weeks, 1 month, 2 months, 3 months) across 3 stay durations.

**To get a URL:** go to [booking.com](https://www.booking.com), search for a city, apply any filters (stars, property type, neighbourhood…), then copy the URL from your browser.

**Example:** `https://www.booking.com/searchresults.html?ss=Paris%2C+France`

Your filters (guest count, room type, stars…) are preserved automatically.

## `maxProperties` (type: `integer`):

Cap how many hotels are tracked per search URL.

- **5** (prefill) — demo / Try on Apify Console (~30 s, 3 date configs)
- **50–100** — quick market sample (full 15 date configs)
- **0** — full market (up to ~930 properties — set a longer **Run timeout** in Run options)

## Actor input object example

```json
{
  "searchUrls": [
    "https://www.booking.com/searchresults.html?ss=Gstaad%2C+Switzerland"
  ],
  "maxProperties": 5
}
```

# Actor output Schema

## `dataset` (type: `string`):

One row per hotel — price stats across all date windows and stay durations, with nested priceByWindow array.

## `overview` (type: `string`):

One row per hotel — avg, min, max per stay duration, discounts, promo flags. Best for comparing properties at a glance.

## `flatPrices` (type: `string`):

One row per hotel × date/duration combination. Best for pivot tables, date analysis, and Excel/Sheets import.

## `runLog` (type: `string`):

Progress log with market summary, avg prices by date window, and timing.

# 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 = {
    "searchUrls": [
        "https://www.booking.com/searchresults.html?ss=Gstaad%2C+Switzerland"
    ],
    "maxProperties": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("corent1robert/booking-price-monitor").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 = {
    "searchUrls": ["https://www.booking.com/searchresults.html?ss=Gstaad%2C+Switzerland"],
    "maxProperties": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("corent1robert/booking-price-monitor").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 '{
  "searchUrls": [
    "https://www.booking.com/searchresults.html?ss=Gstaad%2C+Switzerland"
  ],
  "maxProperties": 5
}' |
apify call corent1robert/booking-price-monitor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Booking Price Monitor · Hotel Rate Tracker",
        "description": "Track hotel market rates on Booking.com. Paste a city search URL — get avg, min, max prices per property, discount %, promo flags and free cancellation across 5 upcoming periods. No login.",
        "version": "1.1",
        "x-build-id": "c8xdnSFflyDnvjZrx"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/corent1robert~booking-price-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-corent1robert-booking-price-monitor",
                "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/corent1robert~booking-price-monitor/runs": {
            "post": {
                "operationId": "runs-sync-corent1robert-booking-price-monitor",
                "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/corent1robert~booking-price-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-corent1robert-booking-price-monitor",
                "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",
                "required": [
                    "searchUrls"
                ],
                "properties": {
                    "searchUrls": {
                        "title": "Booking.com search URL(s)",
                        "type": "array",
                        "description": "Paste a Booking.com search URL — the actor checks prices automatically for 5 upcoming periods (next week, 2 weeks, 1 month, 2 months, 3 months) across 3 stay durations.\n\n**To get a URL:** go to [booking.com](https://www.booking.com), search for a city, apply any filters (stars, property type, neighbourhood…), then copy the URL from your browser.\n\n**Example:** `https://www.booking.com/searchresults.html?ss=Paris%2C+France`\n\nYour filters (guest count, room type, stars…) are preserved automatically.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxProperties": {
                        "title": "Max properties per URL",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Cap how many hotels are tracked per search URL.\n\n- **5** (prefill) — demo / Try on Apify Console (~30 s, 3 date configs)\n- **50–100** — quick market sample (full 15 date configs)\n- **0** — full market (up to ~930 properties — set a longer **Run timeout** in Run options)",
                        "default": 0
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
