# BookingScraper (`scrapio/bookingscraper`) Actor

🏨 BookingScraper extracts real-time hotel data from Booking.com — prices, availability, ratings, reviews, amenities, photos & locations. 🔎 Perfect for price monitoring, market research, and travel apps. 📊 Fast, reliable, SEO-ready datasets. 🚀

- **URL**: https://apify.com/scrapio/bookingscraper.md
- **Developed by:** [Scrapio](https://apify.com/scrapio) (community)
- **Categories:** Travel, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## BookingScraper

Apify Actor **BookingScraper** scrapes **Booking.com** hotel detail pages and optional search results. It produces output in the same format as the reference (e.g. `output.json`): one JSON object per hotel with `order`, `url`, `startUrlOrQuery`, `name`, `type`, `description`, `stars`, `price`, `currency`, `rating`, `ratingLabel`, `reviews`, `breakfast`, `checkIn`/`checkOut`, `checkInDate`/`checkOutDate`, `location`, `address`, `image`, `rooms`, `highlights`, `finePrint`, `policies`, `images`, `roomImages`, `categoryReviews`, `hotelChain`, `licenseInfo`, `hostInfo`, `traderInfo`, `breadcrumbs`, `hotelId`, `facilities`, `timeOfScrapeISO`, and optional `source_url`. By default it uses **no proxy**; if Booking.com blocks or rejects requests, it automatically falls back to **datacenter** then **residential** proxy (with up to 3 retries), and logs all proxy events clearly.

---

### Why Choose Us?

- **Same output shape as your reference**: Produces one JSON object per hotel with `order`, `url`, `name`, `type`, `description`, `stars`, `price`, `currency`, `rating`, `ratingLabel`, `reviews`, `rooms`, `images`, `roomImages`, `facilities`, `traderInfo`, `address`, `location`, `checkIn`/`checkOut`, `breadcrumbs`, `categoryReviews`, and more.
- **Robust proxy handling**: No proxy by default; automatic fallback to datacenter then residential with clear `[PROXY]` logs.
- **Live saving**: Each hotel is pushed to the dataset as soon as it’s scraped, so partial results are kept if the run stops.
- **Bulk URLs**: Supply many hotel or search URLs in one run.
- **Optional search**: Provide a search query (e.g. `"New York"`) and optional dates/filters to discover hotels from search results.

---

### Key Features

| Feature | Description |
|--------|-------------|
| **Hotel detail scraping** | Full extraction from Booking.com hotel pages (Apollo state, schema.org, HTML fallbacks). |
| **Search results** | Optionally scrape from search URLs or a search query to get a list of hotels, then scrape each. |
| **Proxy fallback** | NO_PROXY → DATACENTER → RESIDENTIAL (3 retries); once on residential, all remaining requests use it. |
| **Detailed logs** | Progress and proxy events logged so you can follow the run until the final result. |
| **Retries** | Failed requests trigger proxy fallback or residential retry so the actor recovers from blocks. |

---

### Input

Configure the actor with the Apify input schema. Example:

```json
{
  "urls": [
    { "url": "https://www.booking.com/hotel/us/trump-international-new-york.en-gb.html" }
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "maxItems": 10,
  "search": "New York",
  "checkIn": "2026-03-25",
  "checkOut": "2026-03-31"
}
````

| Field | Type | Description |
|-------|------|-------------|
| **urls** | array | **Required** (or use `search`). List of Booking.com hotel page URLs or search results page URLs. Each item can be `{ "url": "..." }` or a string. |
| **proxyConfiguration** | object | Proxy settings. Default: no proxy. Use Apify proxy if you want; fallback will use datacenter/residential when needed. |
| **maxItems** | integer | Max number of hotels to scrape when using search or search result URLs (default: 10). |
| **search** | string | If no URLs (or only search URLs), use this as the location/landmark (e.g. `"New York"`). |
| **checkIn** / **checkOut** | string | Optional dates in `YYYY-MM-DD` for search. |

***

### Output

The default dataset contains one item per scraped hotel. Each item matches the structure of your reference output, for example:

```json
{
  "order": 1,
  "url": "https://www.booking.com/hotel/us/trump-international-new-york.en-gb.html",
  "startUrlOrQuery": "New York",
  "name": "Trump International New York",
  "type": "hotel",
  "description": "Located at the juncture of Columbus Circle and Broadway...",
  "stars": 5,
  "price": 3067.11,
  "currency": "USD",
  "rating": 8.9,
  "ratingLabel": "Very good",
  "reviews": 842,
  "breakfast": "Available",
  "checkIn": "From 16:00 to None",
  "checkOut": "From None to 12:00",
  "checkInDate": "2026-03-25",
  "checkOutDate": "2026-03-31",
  "location": { "lat": 40.769, "lng": -73.981 },
  "address": { "full": "One Central Park West", "country": "US", "city": "New York" },
  "image": "https://cf.bstatic.com/...",
  "rooms": [...],
  "highlights": [...],
  "finePrint": "...",
  "policies": [...],
  "images": [...],
  "roomImages": [...],
  "categoryReviews": [...],
  "hotelChain": null,
  "licenseInfo": null,
  "hostInfo": null,
  "traderInfo": { "isBusiness": true, "email": "...", "phone": "...", "address": {...} },
  "breadcrumbs": [...],
  "hotelId": "...",
  "facilities": [...],
  "source_url": "https://www.booking.com/...",
  "timeOfScrapeISO": "2026-03-15T12:00:00.000000+00:00"
}
```

| Field | Description |
|-------|-------------|
| **order** | 1-based index of the hotel in this run. |
| **url** / **source\_url** | Canonical and requested URL. |
| **name**, **type**, **description** | Basic property info. |
| **stars**, **price**, **currency** | Star rating and price. |
| **rating**, **ratingLabel**, **reviews** | Guest rating and count. |
| **rooms** | Room types with id, name, price when available. |
| **images**, **roomImages** | Main and per-room image URLs. |
| **traderInfo** | Business/contact and address. |
| **facilities**, **highlights** | Amenities and highlights. |
| **timeOfScrapeISO** | When the page was scraped (UTC). |

***

### How to Use the Actor (Apify Console)

1. Log in at <https://console.apify.com> and go to **Actors**.
2. Find **booking-hotel-scraper** (or your actor name) and open it.
3. Set **Input**:
   - **urls**: Add one or more Booking.com hotel or search URLs (or use **search** and optional dates).
   - **proxyConfiguration**: Leave default (no proxy) or enable Apify Proxy; fallback will be used automatically if needed.
4. Click **Start**.
5. Watch **Log** for progress and `[PROXY]` messages.
6. Open the **Output** tab to see the dataset (table or JSON).
7. Export to JSON/CSV if needed.

***

### Best Use Cases

- **Hotel data for travel/price tools**: Get structured details for many properties.
- **Competitor or market research**: Collect names, prices, ratings, facilities.
- **Lead or contact data**: Use `traderInfo` (email, phone, company, address) from listing pages.

***

### Frequently Asked Questions

**Do I need to enable proxy?**\
No. By default the actor sends requests without proxy. Enable Apify Proxy in input if you want; the actor will still start without proxy and only switch to datacenter/residential when it detects blocks.

**What if I get blocked?**\
The actor will log `[PROXY]` and switch to datacenter, then residential. After switching to residential it keeps using it for all remaining requests. If residential fails, it retries up to 3 times and then fails the run with a clear message.

**Can I scrape only from a search query?**\
Yes. Leave **urls** empty and set **search** (e.g. `"New York"`). Optionally set **checkIn**, **checkOut**, and **maxItems**.

**Is the output format stable?**\
Yes. The output matches the same structure as the reference dataset (order, url, name, price, rooms, traderInfo, etc.).

***

### Support and Feedback

Use the Apify platform support or your team’s channel for bugs or feature requests. Ensure your use complies with Booking.com’s terms and applicable law.

***

### Cautions

- Data is collected only from **publicly available** Booking.com pages.
- You are responsible for **legal compliance** (privacy, data protection, terms of use).
- Use reasonable **maxItems** and **rate** to avoid overloading the target site.

# Actor input Schema

## `search` (type: `string`):

City, region, or landmark to search for accommodation (e.g. New York, Paris).

## `startUrls` (type: `array`):

Add one or more Booking.com URLs: hotel detail pages or search results pages. Use Add, Bulk edit, or paste URLs.

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

Maximum number of hotels to scrape per destination or per start URL.

## `scrapeAdditionalHotelData` (type: `boolean`):

Extract full hotel data including rooms, facilities, trader info, and images for each property.

## `propertyType` (type: `string`):

Filter by type of accommodation.

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

How to sort search results.

## `minimumRating` (type: `string`):

Minimum guest rating (e.g. 7, 8, 9). Leave empty for no filter.

## `starsCountFilter` (type: `string`):

Filter by star rating.

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

Currency for displayed prices.

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

Interface language for the search.

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

Select absolute date (YYYY-MM-DD) or relative (e.g. 2 weeks). Leave empty for flexible search.

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

Select absolute date (YYYY-MM-DD) or relative (e.g. 1 week). Leave empty for flexible search.

## `flexWindow` (type: `string`):

Allow dates to shift by this many days. Use 0 for exact dates only.

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

Number of rooms for the stay.

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

Number of adult guests.

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

Number of children.

## `minMaxPrice` (type: `string`):

Min-max price filter, e.g. 50-200 or 100+ for minimum only.

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

By default no proxy is used. If Booking.com blocks requests, the actor falls back to datacenter then residential proxy.

## Actor input object example

```json
{
  "search": "New York",
  "startUrls": [],
  "maxItems": 10,
  "scrapeAdditionalHotelData": true,
  "propertyType": "none",
  "sortBy": "distance_from_search",
  "minimumRating": "",
  "starsCountFilter": "any",
  "currency": "USD",
  "language": "en-gb",
  "checkIn": "",
  "checkOut": "",
  "flexWindow": "0",
  "rooms": 1,
  "adults": 2,
  "children": 0,
  "minMaxPrice": "0-999999",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "search": "New York",
    "startUrls": [],
    "maxItems": 10,
    "scrapeAdditionalHotelData": true,
    "propertyType": "none",
    "sortBy": "distance_from_search",
    "minimumRating": "",
    "starsCountFilter": "any",
    "currency": "USD",
    "language": "en-gb",
    "checkIn": "",
    "checkOut": "",
    "flexWindow": "0",
    "rooms": 1,
    "adults": 2,
    "children": 0,
    "minMaxPrice": "0-999999",
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapio/bookingscraper").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 = {
    "search": "New York",
    "startUrls": [],
    "maxItems": 10,
    "scrapeAdditionalHotelData": True,
    "propertyType": "none",
    "sortBy": "distance_from_search",
    "minimumRating": "",
    "starsCountFilter": "any",
    "currency": "USD",
    "language": "en-gb",
    "checkIn": "",
    "checkOut": "",
    "flexWindow": "0",
    "rooms": 1,
    "adults": 2,
    "children": 0,
    "minMaxPrice": "0-999999",
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapio/bookingscraper").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 '{
  "search": "New York",
  "startUrls": [],
  "maxItems": 10,
  "scrapeAdditionalHotelData": true,
  "propertyType": "none",
  "sortBy": "distance_from_search",
  "minimumRating": "",
  "starsCountFilter": "any",
  "currency": "USD",
  "language": "en-gb",
  "checkIn": "",
  "checkOut": "",
  "flexWindow": "0",
  "rooms": 1,
  "adults": 2,
  "children": 0,
  "minMaxPrice": "0-999999",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call scrapio/bookingscraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "BookingScraper",
        "description": "🏨 BookingScraper extracts real-time hotel data from Booking.com — prices, availability, ratings, reviews, amenities, photos & locations. 🔎 Perfect for price monitoring, market research, and travel apps. 📊 Fast, reliable, SEO-ready datasets. 🚀",
        "version": "0.1",
        "x-build-id": "fnALWTl44bApOo8fr"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapio~bookingscraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapio-bookingscraper",
                "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/scrapio~bookingscraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapio-bookingscraper",
                "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/scrapio~bookingscraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapio-bookingscraper",
                "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": {
                    "search": {
                        "title": "Destination",
                        "type": "string",
                        "description": "City, region, or landmark to search for accommodation (e.g. New York, Paris).",
                        "default": "New York"
                    },
                    "startUrls": {
                        "title": "Or use Start URLs instead",
                        "type": "array",
                        "description": "Add one or more Booking.com URLs: hotel detail pages or search results pages. Use Add, Bulk edit, or paste URLs.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxItems": {
                        "title": "Max results per destination or URL",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of hotels to scrape per destination or per start URL.",
                        "default": 10
                    },
                    "scrapeAdditionalHotelData": {
                        "title": "Scrape additional hotel data",
                        "type": "boolean",
                        "description": "Extract full hotel data including rooms, facilities, trader info, and images for each property.",
                        "default": true
                    },
                    "propertyType": {
                        "title": "Property type",
                        "enum": [
                            "none",
                            "hotels",
                            "apartments",
                            "hostels",
                            "guest houses",
                            "homestays",
                            "bed and breakfasts",
                            "holiday homes",
                            "boats",
                            "villas",
                            "motels",
                            "resorts",
                            "holiday parks",
                            "campsites",
                            "luxury tents"
                        ],
                        "type": "string",
                        "description": "Filter by type of accommodation.",
                        "default": "none"
                    },
                    "sortBy": {
                        "title": "Order results by",
                        "enum": [
                            "distance_from_search",
                            "price",
                            "review_score_and_price",
                            "review_score",
                            "star_rating"
                        ],
                        "type": "string",
                        "description": "How to sort search results.",
                        "default": "distance_from_search"
                    },
                    "minimumRating": {
                        "title": "Minimum rating",
                        "type": "string",
                        "description": "Minimum guest rating (e.g. 7, 8, 9). Leave empty for no filter.",
                        "default": ""
                    },
                    "starsCountFilter": {
                        "title": "Stars count",
                        "enum": [
                            "any",
                            "3",
                            "4",
                            "5",
                            "1",
                            "2"
                        ],
                        "type": "string",
                        "description": "Filter by star rating.",
                        "default": "any"
                    },
                    "currency": {
                        "title": "Preferred currency",
                        "enum": [
                            "USD",
                            "EUR",
                            "GBP",
                            "CAD",
                            "AUD",
                            "CHF",
                            "JPY",
                            "CNY",
                            "INR",
                            "BRL",
                            "MXN"
                        ],
                        "type": "string",
                        "description": "Currency for displayed prices.",
                        "default": "USD"
                    },
                    "language": {
                        "title": "Language",
                        "enum": [
                            "en-gb",
                            "en-us",
                            "de",
                            "fr",
                            "es",
                            "it",
                            "pt-br",
                            "nl",
                            "pl",
                            "ru",
                            "ja",
                            "zh"
                        ],
                        "type": "string",
                        "description": "Interface language for the search.",
                        "default": "en-gb"
                    },
                    "checkIn": {
                        "title": "Check-in date",
                        "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$|^$",
                        "type": "string",
                        "description": "Select absolute date (YYYY-MM-DD) or relative (e.g. 2 weeks). Leave empty for flexible search.",
                        "default": ""
                    },
                    "checkOut": {
                        "title": "Check-out date",
                        "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$|^$",
                        "type": "string",
                        "description": "Select absolute date (YYYY-MM-DD) or relative (e.g. 1 week). Leave empty for flexible search.",
                        "default": ""
                    },
                    "flexWindow": {
                        "title": "Stay date flexibility (days)",
                        "enum": [
                            "0",
                            "1",
                            "2",
                            "3",
                            "7"
                        ],
                        "type": "string",
                        "description": "Allow dates to shift by this many days. Use 0 for exact dates only.",
                        "default": "0"
                    },
                    "rooms": {
                        "title": "Number of rooms",
                        "minimum": 1,
                        "maximum": 9,
                        "type": "integer",
                        "description": "Number of rooms for the stay.",
                        "default": 1
                    },
                    "adults": {
                        "title": "Number of adults",
                        "minimum": 1,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Number of adult guests.",
                        "default": 2
                    },
                    "children": {
                        "title": "Number of children",
                        "minimum": 0,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Number of children.",
                        "default": 0
                    },
                    "minMaxPrice": {
                        "title": "Price range",
                        "type": "string",
                        "description": "Min-max price filter, e.g. 50-200 or 100+ for minimum only.",
                        "default": "0-999999"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "By default no proxy is used. If Booking.com blocks requests, the actor falls back to datacenter then residential proxy."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
