# Priceline Hotel Details & Reviews Scraper (`mrbridge/priceline-hotel-details-scraper`) Actor

Extract complete hotel profiles from Priceline: ratings, reviews, room types, amenities, photos, policies, and nearby attractions. AI-training-ready structured data.

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

## Pricing

from $3.00 / 1,000 hotel extracteds

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

Priceline Hotel Scraper extracts structured hotel data from [Priceline.com](https://www.priceline.com) — guest ratings, category scores, reviews, descriptions, GPS coordinates, and neighborhood data. Search **107 major cities worldwide** or scrape specific hotel URLs and IDs.

**Key features:**

- 🏨 **Hotel profiles** — star ratings, descriptions, and full address with GPS coordinates
- ⭐ **Guest ratings** — overall score, cleanliness, location, staff, and more on a 0–10 scale
- 💬 **Guest reviews** — review text with pros/cons, reviewer info, and individual ratings
- 🌍 **City search** — discover hotels across 107 cities in 48 countries with star and score filters
- 🔗 **Flexible input** — scrape by URL, hotel ID, or city name
- 📊 **Structured output** — JSON, CSV, or Excel, ready for analysis and integrations

### Why scrape Priceline hotel data?

- **Competitive analysis** — Compare guest ratings and category scores across competing hotels in any market
- **Market research** — Analyze guest satisfaction trends by city, neighborhood, or hotel class across 107 cities
- **Investment due diligence** — Assess hotel reputation and review sentiment before acquisition decisions
- **Travel aggregation** — Build hotel comparison tools with structured Priceline data and GPS coordinates
- **Revenue management** — Track competitor ratings and review volumes to inform pricing strategy
- **Academic research** — Study hospitality patterns using structured rating and review datasets
- **Location intelligence** — Map hotel quality by neighborhood using GPS coordinates and scores

### How to scrape hotels from Priceline

1. Go to the Priceline Scraper [input page](https://console.apify.com/actors/Dfghye4iyPSa7p2zG) on Apify Console
2. Choose your input method — **URLs**, **Hotel IDs**, or **City Search**
3. Click **Start** and wait for results
4. Download your data as **JSON**, **CSV**, or **Excel** from the Output tab

#### Finding hotel IDs

The hotel ID is the number at the end of any Priceline hotel URL:

````

https://www.priceline.com/relax/at/71741505
^^^^^^^^
Hotel ID: 71741505

````

You can also use the **City Search** mode to discover hotels automatically without knowing their IDs.

### Input configuration

The Priceline Scraper supports three input modes. Click each mode below to see an example.

<details>
<summary><strong>Hotel URLs (default)</strong> — scrape specific Priceline hotel pages</summary>

Provide one or more Priceline hotel page URLs:

```json
{
  "hotelUrls": [
    "https://www.priceline.com/relax/at/71741505",
    "https://www.priceline.com/relax/at/700363886"
  ]
}
````

The actor extracts the hotel ID from each URL automatically. Without `inputType`, it auto-detects this mode when `hotelUrls` is provided.

</details>

<details>
<summary><strong>Hotel IDs</strong> — scrape by numeric Priceline hotel identifier</summary>

Provide Priceline hotel IDs directly:

```json
{
  "inputType": "ids",
  "hotelIds": ["71741505", "700363886"]
}
```

</details>

<details>
<summary><strong>City Search</strong> — discover and scrape all hotels in a city</summary>

Search all hotels in a city with optional filters:

```json
{
  "inputType": "city",
  "searchCity": "Paris",
  "maxHotels": 50,
  "minStars": 4,
  "minScore": 8
}
```

**107 cities** available across 48 countries — from New York and London to Tokyo, Dubai, and Buenos Aires. Use the dropdown in the Apify Console for the full list.

</details>

#### Input reference

| Field | Type | Description | Default |
|-------|------|-------------|---------|
| `inputType` | string | Input mode: `urls`, `ids`, or `city` | `urls` |
| `hotelUrls` | string\[] | Priceline hotel page URLs | — |
| `hotelIds` | string\[] | Priceline hotel IDs (numbers) | — |
| `searchCity` | string | City name for hotel search (107 cities) | — |
| `maxHotels` | integer | Max hotels to extract from city search | `100` |
| `minStars` | integer | Min star rating filter for city search (0–5) | `0` |
| `minScore` | number | Min guest score filter for city search (0–10) | `0` |
| `maxReviewsPerHotel` | integer | Max reviews to collect per hotel (0 = all) | `100` |
| `checkIn` | string | Check-in date (YYYY-MM-DD) | Tomorrow |
| `checkOut` | string | Check-out date (YYYY-MM-DD) | Day after tomorrow |

### What data can you extract from Priceline?

The Priceline Scraper produces one JSON object per hotel in the default dataset. Each object contains the complete hotel profile.

| Data Point | Example |
|------------|---------|
| Hotel name & star rating | Doubletree By Hilton, 4 stars |
| Overall guest score (0–10) | 7.0 / 10 (Good) |
| Category ratings | Cleanliness 7.4, Location 8.5, Staff 7.6 |
| Total review count | 6,008 reviews |
| Full hotel description | Multi-paragraph hotel description |
| Description language | Detected automatically (en, fr, de, es, zh, ja, ko) |
| Street address | 350 West 40th Street |
| City, state, country | New York, NY, US |
| Neighborhood | Times Square - Theatre District |
| GPS coordinates | 40.757, -73.993 |
| Guest reviews | Review text, rating, reviewer name, pros/cons |
| Extraction timestamp | ISO 8601 timestamp |

#### Sample output

```json
{
  "hotelId": "71741505",
  "name": "Doubletree By Hilton New York Times Square West",
  "url": "https://www.priceline.com/relax/at/71741505",
  "starLevel": 4,
  "description": "The DoubleTree by Hilton Hotel New York – Times Square West is within 0.9 mi of Times Square...",
  "descriptionLanguage": "en",
  "ratings": {
    "overallScore": 7,
    "totalReviewCount": 6008,
    "ratingLabel": "Good",
    "categories": {
      "overall": 6.9,
      "cleanliness": 7.4,
      "location": 8.5,
      "staff": 7.6,
      "comfort": null,
      "valueForMoney": null
    }
  },
  "location": {
    "address": "350 West 40th Street",
    "city": "New York",
    "state": "NY",
    "countryCode": "US",
    "neighborhood": "Times Square - Theatre District",
    "latitude": 40.75680164,
    "longitude": -73.99306987
  },
  "reviews": [],
  "scrapedAt": "2026-04-25T11:28:45.228Z",
  "dataVersion": "0.4.0"
}
```

<details>
<summary><strong>Output fields reference</strong></summary>

| Field | Type | Description |
|-------|------|-------------|
| `hotelId` | string | Unique Priceline hotel identifier |
| `name` | string | Hotel name |
| `url` | string | Priceline hotel page URL |
| `starLevel` | number | Star classification (1–5) |
| `description` | string | Full hotel description text |
| `descriptionLanguage` | string | Detected language code (en, fr, de, es, zh, ja, ko) |
| `ratings.overallScore` | number | Overall guest score (0–10 scale) |
| `ratings.totalReviewCount` | number | Total number of guest reviews |
| `ratings.ratingLabel` | string | Rating label: Excellent, Very Good, Good, Fair, or Poor |
| `ratings.categories` | object | Category scores: cleanliness, location, staff, overall |
| `location` | object | Full address, city, state, country, neighborhood |
| `location.latitude` | number | GPS latitude coordinate |
| `location.longitude` | number | GPS longitude coordinate |
| `reviews` | array | Guest reviews with text, rating, reviewer info, pros/cons |
| `scrapedAt` | string | ISO 8601 extraction timestamp |
| `dataVersion` | string | Data schema version |

</details>

<details>
<summary><strong>Error records</strong></summary>

If a hotel fails to extract, an error record is added to the dataset instead:

```json
{
  "error": true,
  "errorMessage": "Fetch failed after 3 retries",
  "errorType": "ExtractionError",
  "hotelUrl": "https://www.priceline.com/relax/at/123",
  "timestamp": "2026-04-25T11:28:45.228Z"
}
```

You are not charged for failed extractions.

</details>

### How much does it cost?

The Priceline Scraper uses **pay-per-event** pricing — you only pay for successful extractions:

| Event | Cost |
|-------|------|
| Successful hotel extraction | **$0.005** per hotel |
| Failed extraction | Free |
| Incomplete data (validation error) | Free |
| City search (listing page) | Free |

Platform compute costs are minimal — a typical run uses ~0.001 compute units.

#### Cost estimates

| Scenario | Hotels | Cost |
|----------|--------|------|
| Single hotel lookup | 1 | $0.005 |
| Small batch | 10 | $0.05 |
| City research (top 50) | 50 | $0.25 |
| Full city scan | 100 | $0.50 |

### Integrations

Connect the Priceline Scraper to your workflow:

- **[API](https://docs.apify.com/api/v2)** — Call the actor from any language using the Apify REST API
- **[JavaScript](https://docs.apify.com/sdk/js) / [Python](https://docs.apify.com/sdk/python)** — Use the official Apify client libraries
- **[Zapier](https://apify.com/integrations/zapier)** / **[Make](https://apify.com/integrations/make)** / **[n8n](https://apify.com/integrations/n8n)** — Automate data collection with no-code platforms
- **[Google Sheets](https://apify.com/integrations/google-sheets)** — Export results directly to a spreadsheet
- **Webhooks** — Get notified when a run completes

### FAQ

#### How do I find Priceline hotel IDs?

The hotel ID is the number at the end of any Priceline hotel URL: `priceline.com/relax/at/{hotelId}`. You can also use **City Search** mode to discover hotels automatically without knowing their IDs.

#### Which cities are supported for hotel search?

107 cities across 48 countries. The full list includes major destinations across North America, Europe, Asia, Middle East, Africa, South America, and Oceania. Use the dropdown in the Apify Console to browse available cities.

#### What category ratings are available?

The Priceline Scraper extracts **Cleanliness**, **Location**, **Staff**, and **Overall Quality** scores on a 0–10 scale. Comfort and Value for Money are included in the schema but may be null depending on what Priceline returns for a given hotel.

#### How fast is the extraction?

Each hotel takes approximately 3–5 seconds. A batch of 10 hotels completes in under a minute. City search adds ~15 seconds for the listing page.

#### What happens if a hotel page is unavailable?

The actor logs the error and pushes an error record to the dataset. Other hotels in the batch continue processing normally. You are not charged for failed extractions.

#### Can I schedule recurring runs?

Yes. Use [Apify Schedules](https://docs.apify.com/platform/schedules) to run the Priceline Scraper on any interval (daily, weekly, etc.) and track hotel metrics over time.

#### What export formats are available?

JSON, CSV, Excel, XML, and RSS. You can also access results via the Apify API or connect to Google Sheets for automatic updates.

### Is it legal to scrape Priceline?

This Priceline Scraper extracts publicly accessible data that any visitor can see on Priceline.com. It does not bypass any login, paywall, or access restriction. No personal data is collected — only hotel profiles, ratings, and guest reviews that Priceline displays publicly.

Always use web scraping responsibly and in accordance with applicable laws, regulations, and [Priceline's terms of service](https://www.priceline.com/content/en-us/terms-and-conditions.html). If you are unsure about your use case, consult legal counsel.

For more information, see Apify's guide on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

### Support

- **Issues & feature requests** — Open an issue on the [Issues tab](https://console.apify.com/actors/Dfghye4iyPSa7p2zG/issues) in Apify Console
- **Custom solutions** — Contact us for tailored hotel data extraction

# Actor input Schema

## `inputType` (type: `string`):

Choose how to specify which hotels to scrape. Use URLs or IDs for specific hotels, or City Search to discover hotels in a city.

## `hotelUrls` (type: `array`):

One or more Priceline hotel page URLs. The hotel ID is extracted automatically from the URL (e.g. priceline.com/relax/at/71741505).

## `hotelIds` (type: `array`):

Priceline numeric hotel IDs. Find the ID at the end of any hotel URL: priceline.com/relax/at/{hotelId}.

## `searchCity` (type: `string`):

Select a city to search for hotels (107 cities, each labeled with its country). Set Input Type to 'City Search' to use this field.

## `maxHotels` (type: `integer`):

Optional. Maximum number of hotels to extract from city search results (applied after star and score filters). Default: 100.

## `minStars` (type: `integer`):

Optional. Minimum star rating filter for city search results (0-5). Default: 0 (no filter).

## `minScore` (type: `number`):

Optional. Minimum overall review score filter for city search results (0-10). Default: 0 (no filter).

## `maxReviewsPerHotel` (type: `integer`):

Optional. Maximum number of guest reviews to collect per hotel. Set to 0 for all available reviews. Default: 100.

## `discoverMode` (type: `boolean`):

Save raw API responses and search HTML to Key-Value Store for debugging. Keep disabled in production.

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

Optional. Check-in date in YYYY-MM-DD format. Defaults to tomorrow.

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

Optional. Check-out date in YYYY-MM-DD format. Defaults to day after tomorrow.

## Actor input object example

```json
{
  "inputType": "urls",
  "hotelUrls": [
    "https://www.priceline.com/relax/at/71741505"
  ],
  "maxHotels": 100,
  "minStars": 0,
  "minScore": 0,
  "maxReviewsPerHotel": 100,
  "discoverMode": false
}
```

# Actor output Schema

## `hotelProfiles` (type: `string`):

Dataset containing all extracted hotel profiles with ratings, reviews, and location data

## `runSummary` (type: `string`):

Summary of extraction results (total hotels, success count, error count)

# 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 = {
    "hotelUrls": [
        "https://www.priceline.com/relax/at/71741505"
    ],
    "maxReviewsPerHotel": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("mrbridge/priceline-hotel-details-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 = {
    "hotelUrls": ["https://www.priceline.com/relax/at/71741505"],
    "maxReviewsPerHotel": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("mrbridge/priceline-hotel-details-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 '{
  "hotelUrls": [
    "https://www.priceline.com/relax/at/71741505"
  ],
  "maxReviewsPerHotel": 100
}' |
apify call mrbridge/priceline-hotel-details-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Priceline Hotel Details & Reviews Scraper",
        "description": "Extract complete hotel profiles from Priceline: ratings, reviews, room types, amenities, photos, policies, and nearby attractions. AI-training-ready structured data.",
        "version": "0.4",
        "x-build-id": "wPQDZiTYqzBleILhV"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/mrbridge~priceline-hotel-details-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-mrbridge-priceline-hotel-details-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/mrbridge~priceline-hotel-details-scraper/runs": {
            "post": {
                "operationId": "runs-sync-mrbridge-priceline-hotel-details-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/mrbridge~priceline-hotel-details-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-mrbridge-priceline-hotel-details-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": {
                    "inputType": {
                        "title": "Input Type",
                        "enum": [
                            "urls",
                            "ids",
                            "city"
                        ],
                        "type": "string",
                        "description": "Choose how to specify which hotels to scrape. Use URLs or IDs for specific hotels, or City Search to discover hotels in a city.",
                        "default": "urls"
                    },
                    "hotelUrls": {
                        "title": "Hotel URLs",
                        "type": "array",
                        "description": "One or more Priceline hotel page URLs. The hotel ID is extracted automatically from the URL (e.g. priceline.com/relax/at/71741505).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "hotelIds": {
                        "title": "Hotel IDs",
                        "type": "array",
                        "description": "Priceline numeric hotel IDs. Find the ID at the end of any hotel URL: priceline.com/relax/at/{hotelId}.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchCity": {
                        "title": "City",
                        "enum": [
                            "Buenos Aires",
                            "Sydney",
                            "Melbourne",
                            "Vienna",
                            "Brussels",
                            "São Paulo",
                            "Rio de Janeiro",
                            "Toronto",
                            "Vancouver",
                            "Montreal",
                            "Santiago",
                            "Shanghai",
                            "Beijing",
                            "Guangzhou",
                            "Shenzhen",
                            "Hong Kong",
                            "Bogotá",
                            "Prague",
                            "Copenhagen",
                            "Cairo",
                            "Helsinki",
                            "Paris",
                            "Nice",
                            "Lyon",
                            "Berlin",
                            "Munich",
                            "Frankfurt",
                            "Hamburg",
                            "Athens",
                            "Budapest",
                            "Mumbai",
                            "Delhi",
                            "Bangalore",
                            "Chennai",
                            "Jakarta",
                            "Bali",
                            "Dublin",
                            "Tel Aviv",
                            "Rome",
                            "Milan",
                            "Florence",
                            "Venice",
                            "Tokyo",
                            "Osaka",
                            "Kyoto",
                            "Nairobi",
                            "Kuala Lumpur",
                            "Mexico City",
                            "Cancún",
                            "Marrakech",
                            "Amsterdam",
                            "Auckland",
                            "Lagos",
                            "Oslo",
                            "Lima",
                            "Manila",
                            "Warsaw",
                            "Kraków",
                            "Lisbon",
                            "Porto",
                            "Doha",
                            "Riyadh",
                            "Jeddah",
                            "Singapore",
                            "Cape Town",
                            "Johannesburg",
                            "Seoul",
                            "Busan",
                            "Barcelona",
                            "Madrid",
                            "Stockholm",
                            "Zurich",
                            "Geneva",
                            "Taipei",
                            "Bangkok",
                            "Phuket",
                            "Istanbul",
                            "Dubai",
                            "Abu Dhabi",
                            "London",
                            "Edinburgh",
                            "Manchester",
                            "New York",
                            "Los Angeles",
                            "Chicago",
                            "Miami",
                            "San Francisco",
                            "Las Vegas",
                            "Houston",
                            "Washington DC",
                            "Boston",
                            "Seattle",
                            "Orlando",
                            "Denver",
                            "Nashville",
                            "San Diego",
                            "Atlanta",
                            "Dallas",
                            "Philadelphia",
                            "Phoenix",
                            "Austin",
                            "New Orleans",
                            "Honolulu",
                            "Portland",
                            "Minneapolis",
                            "Tampa",
                            "Charlotte"
                        ],
                        "type": "string",
                        "description": "Select a city to search for hotels (107 cities, each labeled with its country). Set Input Type to 'City Search' to use this field."
                    },
                    "maxHotels": {
                        "title": "Max Hotels",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Optional. Maximum number of hotels to extract from city search results (applied after star and score filters). Default: 100.",
                        "default": 100
                    },
                    "minStars": {
                        "title": "Min Star Rating",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Optional. Minimum star rating filter for city search results (0-5). Default: 0 (no filter).",
                        "default": 0
                    },
                    "minScore": {
                        "title": "Min Review Score",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "number",
                        "description": "Optional. Minimum overall review score filter for city search results (0-10). Default: 0 (no filter).",
                        "default": 0
                    },
                    "maxReviewsPerHotel": {
                        "title": "Max Reviews Per Hotel",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional. Maximum number of guest reviews to collect per hotel. Set to 0 for all available reviews. Default: 100.",
                        "default": 100
                    },
                    "discoverMode": {
                        "title": "Discovery Mode",
                        "type": "boolean",
                        "description": "Save raw API responses and search HTML to Key-Value Store for debugging. Keep disabled in production.",
                        "default": false
                    },
                    "checkIn": {
                        "title": "Check-In Date",
                        "type": "string",
                        "description": "Optional. Check-in date in YYYY-MM-DD format. Defaults to tomorrow."
                    },
                    "checkOut": {
                        "title": "Check-Out Date",
                        "type": "string",
                        "description": "Optional. Check-out date in YYYY-MM-DD format. Defaults to day after tomorrow."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
