# Hotels.com Scraper (`parsebird/hotels-com-scraper`) Actor

Scrape Hotels.com rates and compare them with Expedia, Booking.com, Agoda and other booking sites for any city and dates. Get hotel prices, star class, ratings, reviews, amenities, address, phone and GPS.

- **URL**: https://apify.com/parsebird/hotels-com-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.49 / 1,000 hotels

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Hotels.com Scraper

**Hotels.com Scraper** gets hotel rates for any city, neighborhood or hotel name and your exact dates, and puts the [Hotels.com](https://www.hotels.com) nightly rate next to Expedia, Booking.com, Agoda, Priceline, the hotel's own website and other booking sites. Every row includes the star class, guest rating, review count, amenities, GPS location and check-in times. Export the data as JSON, CSV or Excel, or pull it through the Apify API.

<table><tr>
<td style="border-left:4px solid #D32F2F;padding:12px 16px;font-weight:600">
Search hotels or vacation rentals with your own dates, guests and currency, filter by price, guest rating, star class and free cancellation, then add the Hotels.com rate, every booking site's price, room rates, full address, phone and typical price range for each property.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```text
Use the Apify Actor "parsebird/hotels-com-scraper" to get hotel rates and compare the Hotels.com price with other booking sites. Call it with the apify-client package: client.actor("parsebird/hotels-com-scraper").call(run_input={"location": "Paris", "checkInDate": "2026-11-12", "checkOutDate": "2026-11-14", "currency": "EUR", "maxResults": 20, "enrichDetails": true}), then read items from client.dataset(run["defaultDatasetId"]).iterate_items(). Inputs: location (string: city, neighborhood, landmark or hotel name), propertyTokens (array of propertyToken values from an earlier run), checkInDate and checkOutDate (YYYY-MM-DD; empty = 2-night stay 30 days ahead), adults (integer, default 2), children (integer), childrenAges (array of ages 1-17), currency (ISO code such as USD, EUR, GBP; default USD), countryCode (2-letter market code, default us), language (default en), sortBy (Relevance, Lowest price, Highest rating, Most reviewed), minPrice and maxPrice (per night, in the selected currency), minRating (3.5, 4.0, 4.5), hotelClasses (array of "2","3","4","5"), freeCancellation (boolean), vacationRentals (boolean), enrichDetails (boolean, adds Hotels.com rate and all booking-site prices), maxResults (integer, default 20). Each dataset item is one property with: mode, position, name, type, category, propertyToken, hotelClass, hotelClassStars, link, description, overallRating, reviewsCount, ratings, reviewsBreakdown, locationRating, locationRatings, currency, ratePerNight, ratePerNightLowest, ratePerNightLowestBeforeTaxes, totalRateLowest, totalRateLowestBeforeTaxes, totalTaxesAndFees, deal, images, amenities, nearbyPlaces, gpsLat, gpsLng, checkInTime, checkOutTime, checkInDate, checkOutDate, scrapedAt; with enrichDetails also hotelsComRate, hotelsComTotalRate, hotelsComLink, featuredPrices, allPriceSources, typicalPriceLow, typicalPriceHigh, address, phone, fullDescription, amenitiesDetailed, reviewSources. The OUTPUT record in the default key-value store has the run outcome and counts. API docs: https://apify.com/parsebird/hotels-com-scraper/api. Get an API token at https://console.apify.com/settings/integrations. Pricing is pay per event: one event per hotel, one more per enriched hotel.
```

### What is Hotels.com Scraper?

Hotels.com Scraper is a **hotel price scraper and Hotels.com rate checker**. You enter a destination and stay dates, and it returns one row per hotel with **nightly and total prices, star class, guest rating, number of reviews, amenities, photos and location**. Turn on **Add Hotels.com rate and competitor prices** and each hotel also gets the **Hotels.com nightly rate**, the price on **every other booking site** that sells it, room-level rates, the **full address and phone number**, and the hotel's **typical price range** for your dates.

The prices come from the [Google Hotels](https://www.google.com/travel/hotels) price comparison, where Hotels.com lists its rates next to Expedia, Booking.com, Agoda, Priceline, Trip.com and the hotels' own websites. That makes it a practical **Hotels.com API alternative** for rate shopping: you get the Hotels.com price and its competitors in the same row, with no Hotels.com account.

The easiest way to try it is to press **Start** with the prefilled search (`Paris`). Your first 20 hotels arrive in a few seconds.

### What can Hotels.com Scraper do?

- 🏨 **Compare the Hotels.com rate with other booking sites.** `hotelsComRate` sits next to `featuredPrices` and `allPriceSources`, which list each site's nightly and total price for the same dates and guests.
- 📅 **Price your exact stay.** Set check-in and check-out dates (up to 30 nights), adults, children with their ages, and any of 72 currencies.
- 🔎 **Search or look up.** Search by city, neighborhood, landmark or hotel name, or pass `propertyTokens` from an earlier run to refresh the same hotels.
- 🎚️ **Filter like on a booking site.** Sort by relevance, lowest price, highest rating or most reviewed, and filter by price per night, guest rating (3.5+, 4.0+, 4.5+), star class (2 to 5 stars) and free cancellation.
- 🏠 **Vacation rentals too.** Switch to apartments, houses and villas instead of hotels.
- 📊 **Rich hotel profiles.** Star distribution of reviews, review themes (what guests mention positively and negatively), location scores, nearby sights, transit and airports with travel times, photos and check-in times.
- ⚙️ **Built for automation.** Schedule daily or weekly rate checks, call the Actor from the [Apify API](https://docs.apify.com/api/v2), connect it to Make, Zapier, Google Sheets or Slack with [integrations](https://docs.apify.com/platform/integrations), and export results as JSON, CSV, Excel or HTML.

### What data can you extract from Hotels.com?

| Field | Description |
|-------|-------------|
| `name`, `type`, `category` | Property name, `hotel` or `vacation rental`, and its business category (hotel, hostel, bed and breakfast…) |
| `hotelClass`, `hotelClassStars` | Official star class as text and as a number |
| `overallRating`, `reviewsCount`, `ratings` | Guest rating out of 5, number of reviews and the count per star |
| `reviewsBreakdown` | Review themes such as Service, Location or Breakfast, with positive and negative mentions |
| `locationRating`, `locationRatings` | Location score overall and for things to do, restaurants, transit and airport access |
| `ratePerNightLowest`, `totalRateLowest` | Lowest nightly rate and lowest total for the stay across booking sites |
| `totalRateLowestBeforeTaxes`, `totalTaxesAndFees` | The lowest total split into price before taxes and taxes plus fees |
| `deal` | Price insight such as `30% less than usual` |
| `hotelsComRate`, `hotelsComTotalRate`, `hotelsComLink` | Hotels.com nightly rate, total and booking link (with enrichment) |
| `featuredPrices`, `allPriceSources` | Prices from every booking site, including the hotel's own website, with room rates and free-cancellation dates where shown (with enrichment) |
| `typicalPriceLow`, `typicalPriceHigh` | What the hotel usually costs per night for similar dates (with enrichment) |
| `address`, `phone`, `link` | Full street address, phone number and the hotel's website |
| `amenities`, `amenitiesDetailed` | Amenity names; with enrichment, the full list by category with notes such as `free` or `extra charge` |
| `nearbyPlaces` | Nearby sights, restaurants, transit and airports with taxi, walking or public transport times |
| `gpsLat`, `gpsLng`, `checkInTime`, `checkOutTime` | Coordinates and house times |
| `reviewSources` | Ratings from other review sites such as Tripadvisor (with enrichment) |
| `propertyToken`, `googleHotelsUrl` | Stable property ID for later refreshes and the property page link |

### How to scrape Hotels.com prices

1. Open [Hotels.com Scraper](https://apify.com/parsebird/hotels-com-scraper) in Apify Console.
2. In **Location**, type a city, neighborhood or hotel name, for example `Las Vegas Strip`.
3. Set your **check-in** and **check-out** dates, guests and **currency**. Leave the dates empty to price a 2-night stay 30 days from today.
4. Optional: choose a sort order and filters such as **Max price per night**, **Guest rating** or **Hotel class**.
5. Turn on **Add Hotels.com rate and competitor prices** if you want the Hotels.com price and every other site's price for each hotel.
6. Set **Max hotels** and click **Start**.
7. Download the results as JSON, CSV, Excel or HTML from the **Output** tab, or read them through the API.

### How much does it cost to scrape Hotels.com?

Hotels.com Scraper uses pay-per-event pricing. Compute and proxy costs are included in the event prices, so platform usage is not billed separately.

| Event | Free plan | Bronze | Silver | Gold |
|-------|-----------|--------|--------|------|
| `hotel` (per hotel saved) | $0.00499 | $0.00449 | $0.00399 | $0.00349 |
| `hotel-details` (per enriched hotel) | $0.01499 | $0.01399 | $0.01299 | $0.01199 |
| **Per 1,000 hotels, search only** | **$4.99** | **$4.49** | **$3.99** | **$3.49** |
| **Per 1,000 hotels with Hotels.com rate and competitor prices** | **$19.98** | **$18.48** | **$16.98** | **$15.48** |

- 20 hotels from a search cost 20 `hotel` events: $0.10 on the Free plan.
- 20 hotels with **Add Hotels.com rate and competitor prices** cost 20 `hotel` + 20 `hotel-details` events: $0.40 on the Free plan.
- Each hotel looked up by `propertyTokens` is returned with full details and costs one `hotel` + one `hotel-details` event.

`maxResults` caps each search, so it also works as a cost ceiling. You can set a maximum cost per run in the run options; the Actor stops once that limit is reached and reports `SPENDING_LIMIT_REACHED` in the `OUTPUT` record.

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `location` | string | One of `location` / `propertyTokens` | — | City, neighborhood, landmark or hotel name to search |
| `propertyTokens` | array | One of `location` / `propertyTokens` | — | Exact hotels to look up, from `propertyToken` in an earlier run (Google Hotels property links also work) |
| `maxResults` | integer | No | 20 | Hotels to save from the search; pages hold about 20 hotels |
| `enrichDetails` | boolean | No | false | Add the Hotels.com rate, all booking-site prices, room rates, address, phone, typical price range, full amenities and review sources |
| `checkInDate` | string | No | 30 days from today | Check-in date, `YYYY-MM-DD` |
| `checkOutDate` | string | No | check-in + 2 nights | Check-out date, `YYYY-MM-DD`; stays up to 30 nights |
| `adults` | integer | No | 2 | Adult guests |
| `children` | integer | No | 0 | Children; those without an age in `childrenAges` count as 10 years old |
| `childrenAges` | array | No | — | Age of each child, 1 to 17 |
| `currency` | string | No | USD | Currency for all prices (72 supported) |
| `sortBy` | string | No | Relevance | `Relevance`, `Lowest price`, `Highest rating` or `Most reviewed` |
| `minPrice`, `maxPrice` | integer | No | — | Nightly price range in the selected currency |
| `minRating` | string | No | — | Minimum guest rating: `3.5`, `4.0` or `4.5` |
| `hotelClasses` | array | No | — | Star classes to keep: `2`, `3`, `4`, `5` |
| `freeCancellation` | boolean | No | false | Only hotels with a free-cancellation rate |
| `vacationRentals` | boolean | No | false | Search vacation rentals instead of hotels |
| `countryCode` | string | No | us | Two-letter market code |
| `language` | string | No | en | Language of descriptions, amenities and review themes |

Compare booking-site prices for hotels in Paris:

```json
{
  "location": "Paris",
  "checkInDate": "2026-11-12",
  "checkOutDate": "2026-11-14",
  "currency": "EUR",
  "maxResults": 20,
  "enrichDetails": true
}
```

Four- and five-star hotels on the Las Vegas Strip under $300, cheapest first:

```json
{
  "location": "Las Vegas Strip",
  "hotelClasses": ["4", "5"],
  "maxPrice": 300,
  "sortBy": "Lowest price",
  "maxResults": 40
}
```

### Output example

A real enriched row from the Paris example above (lists shortened):

```json
{
  "mode": "details",
  "position": 1,
  "name": "Hôtel d'Orsay",
  "type": "hotel",
  "category": "hotel",
  "propertyToken": "ChgI2ajtweSK7ZPpARoLL2cvMXR2M21fZnAQAQ",
  "hotelClass": "4-star tourist hotel",
  "hotelClassStars": 4,
  "overallRating": 4.8,
  "reviewsCount": 878,
  "reviewsBreakdown": [
    { "name": "Service", "mentions": 185, "positive": 177, "negative": 5 }
  ],
  "locationRating": 4.4,
  "currency": "EUR",
  "ratePerNight": "€278",
  "ratePerNightLowest": 277.56,
  "totalRateLowest": 642.57,
  "totalRateLowestBeforeTaxes": 555.12,
  "totalTaxesAndFees": 87.45,
  "hotelsComRate": 296.34,
  "hotelsComTotalRate": 592.68,
  "featuredPrices": [
    { "source": "Hôtel d'Orsay", "rate": "€296", "extractedRate": 296, "totalRate": "€592", "extractedTotalRate": 592, "official": true },
    { "source": "Expedia.com", "rate": "€296", "extractedRate": 296.34, "totalRate": "€593", "extractedTotalRate": 592.68, "official": false }
  ],
  "allPriceSources": [
    { "source": "goseek.com", "rate": "€278", "extractedRate": 277.56, "official": false },
    { "source": "Super.com", "rate": "€284", "extractedRate": 283.62, "official": false }
  ],
  "typicalPriceLow": 300,
  "typicalPriceHigh": 395,
  "amenities": ["Wi-Fi", "Smoke-free property", "Credit cards", "Debit cards"],
  "nearbyPlaces": [
    {
      "name": "Musée d'Orsay",
      "type": "Top sight",
      "transportations": [
        { "type": "Walking", "duration": "2 min" },
        { "type": "Public transport", "duration": "5 min" }
      ]
    }
  ],
  "reviewSources": [
    { "source": "Tripadvisor", "rating": 4.7, "maxRating": 5, "reviewsCount": 1621 }
  ],
  "address": "93 Rue de Lille, 75007 Paris, France",
  "phone": "+33 1 47 05 85 54",
  "gpsLat": 48.860389,
  "gpsLng": 2.323112,
  "checkInTime": "2:00 PM",
  "checkOutTime": "12:00 PM",
  "checkInDate": "2026-11-12",
  "checkOutDate": "2026-11-14",
  "nights": 2,
  "scrapedAt": "2026-10-29T13:03:42.413Z"
}
```

Rows from a search without enrichment have `mode: "search"` and the same fields, with the enrichment-only fields set to `null`. The `OUTPUT` record in the default key-value store reports the run `outcome` (`SUCCEEDED`, `NO_RESULTS`, `SPENDING_LIMIT_REACHED`, `INVALID_INPUT` or `FAILED`), hotels saved, hotels enriched and events charged.

### Use the Hotels.com Scraper API

Start runs and read results from your own code with the [Apify API](https://docs.apify.com/api/v2) and its clients.

**Python** ([apify-client](https://docs.apify.com/api/client/python/)):

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")

run = client.actor("parsebird/hotels-com-scraper").call(run_input={
    "location": "Rome",
    "checkInDate": "2026-12-03",
    "checkOutDate": "2026-12-05",
    "currency": "EUR",
    "maxResults": 10,
    "enrichDetails": True,
})

for hotel in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(hotel["name"], hotel["hotelsComRate"], hotel["ratePerNightLowest"])
```

**JavaScript** ([apify-client](https://docs.apify.com/api/client/js/)):

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });

const run = await client.actor('parsebird/hotels-com-scraper').call({
    location: 'Las Vegas Strip',
    hotelClasses: ['4', '5'],
    maxPrice: 300,
    sortBy: 'Lowest price',
    maxResults: 40,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((hotel) => console.log(hotel.name, hotel.hotelClassStars, hotel.ratePerNightLowest));
```

### Use cases

- **Rate shopping for hotels:** compare your Hotels.com rate with Expedia, Booking.com and your own website, and spot when an online travel agency undercuts you.
- **Revenue management:** track competitor hotels' nightly rates for future dates on a daily schedule with `propertyTokens`.
- **Travel price comparison apps:** feed per-site hotel prices, ratings and photos into your own product.
- **Market research:** compare price levels, star classes and guest ratings across cities and neighborhoods.
- **Travel planning and AI agents:** let an assistant find hotels near a landmark within a budget, with travel times to sights and airports.
- **Lead lists for hospitality services:** collect hotel names, websites, phone numbers and addresses for a destination.

### How it works

1. The Actor runs your search on Google Hotels with your dates, guests, currency and filters, and reads about 20 properties per results page.
2. It moves through results pages until it reaches `maxResults` or there are no more hotels, and skips hotels already seen on earlier pages.
3. With **Add Hotels.com rate and competitor prices** on, it opens each hotel's property page and adds every booking site's price, the Hotels.com rate, room rates, address, phone, typical price range, the full amenity list and third-party review scores.
4. Each hotel is saved to the dataset and charged as it is saved, so the run stops cleanly when your spending limit is reached.

### FAQ

**Where do the prices come from?**
From the Google Hotels price comparison. Hotels.com, Expedia, Booking.com, Agoda, Priceline, the hotels' own websites and other partners list their rates there for your dates. The Actor does not log in to Hotels.com or book anything.

**Does every hotel have a Hotels.com rate?**
No. `hotelsComRate` is filled only when Hotels.com offers the property for your dates and guests. In our tests, it was present for 13 of 20 hotels in Paris and 18 of 20 in New York. When it's missing, `hotelsComRate` is `null` and the other sites are still listed in `allPriceSources`.

**Do prices include taxes?**
`totalRateLowest` always includes taxes and fees, and `totalRateLowestBeforeTaxes` plus `totalTaxesAndFees` show the split. Nightly rates (`ratePerNightLowest`, `hotelsComRate` and the per-site `rate`) follow the display convention of the market: for example, US prices are shown before taxes, while many European markets include them.

**Why are address and phone empty in some rows?**
Search results don't include them. Turn on **Add Hotels.com rate and competitor prices**, or look the hotels up by `propertyTokens`, to get the full address and phone number.

**How do I refresh the same hotels later?**
Copy the `propertyToken` values from a run into **Property tokens** and set new dates. Each hotel comes back with full details and current prices. You can also paste Google Hotels property links.

**How many hotels can I get per search?**
Large cities return thousands. Paris reported about 15,000 properties, and a test run saved 300 hotels in Rome in under 2 minutes. Narrow filters or small towns return fewer.

**Some hotels have no price. Why?**
They are sold out or not bookable for your dates and guests, so `ratePerNightLowest` and the totals are `null`. Change the dates or guests to check other availability.

**Which booking sites appear?**
It depends on the hotel and the market. In US runs we saw Hotels.com, Expedia, Booking.com, Priceline, Orbitz, Travelocity, CheapTickets, Agoda, Trip.com, Vio.com and the hotels' own websites, among others.

**Can I schedule recurring rate checks?**
Yes. Create a [schedule](https://docs.apify.com/platform/schedules) in Apify Console to run the Actor every day or week, and use [integrations](https://docs.apify.com/platform/integrations) to send new rows to Google Sheets, Slack or your own webhook.

**Can I use it through the API or with AI agents?**
Yes. Use the [API tab](https://apify.com/parsebird/hotels-com-scraper/api) for endpoints and code samples, or connect the Actor to AI agents through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp).

**Something doesn't work. What should I do?**
Open an issue in the [Issues tab](https://apify.com/parsebird/hotels-com-scraper/issues) with your run link. We read every report.

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

Hotels.com Scraper collects publicly available hotel information: prices, ratings, amenities and business contact details that anyone can see without logging in. It does not collect personal data about guests. Scraping public data is generally legal, but you should check the laws that apply to you and how you use the data, and avoid collecting personal data without a legitimate reason. If in doubt, ask a lawyer. Read more in Apify's blog post on [whether web scraping is legal](https://blog.apify.com/is-web-scraping-legal/).

### Other travel scrapers

| Actor | What it scrapes |
|-------|-----------------|
| [Expedia Reviews Scraper](https://apify.com/parsebird/expedia-reviews-scraper) | Guest reviews from Expedia hotel listings |
| [HRS Hotel Reviews Scraper](https://apify.com/parsebird/hrs-hotel-reviews-scraper) | Guest reviews and rating breakdowns from HRS.com |
| [HolidayCheck.de Hotels Scraper](https://apify.com/parsebird/holidaycheck-hotels-scraper) | Hotels, package prices, scores and review counts from HolidayCheck.de |
| [Airbnb Scraper & API](https://apify.com/parsebird/airbnb-scraper) | Airbnb listings with prices and ratings |
| [Airbnb Availability Calendar Scraper](https://apify.com/parsebird/airbnb-availability-calendar-scraper) | Day-by-day Airbnb availability and nightly prices |
| [Airbnb Reviews Scraper](https://apify.com/parsebird/airbnb-reviews-scraper) | Airbnb guest reviews |
| [Kayak Car Rental Scraper](https://apify.com/parsebird/kayak-car-rental-scraper) | Car rental offers and prices from Kayak |
| [TheFork Scraper](https://apify.com/parsebird/thefork-scraper) | Restaurants, menus and reviews from TheFork |

# Changelog

This Actor's version history is a separate document: https://apify.com/parsebird/hotels-com-scraper/changelog.md

# Actor input Schema

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

Enter a city, neighborhood, landmark or hotel name, as you would type it into a hotel search box (for example <code>Paris</code>, <code>Las Vegas Strip</code> or <code>Hotel Arts Barcelona</code>).

## `propertyTokens` (type: `array`):

Look up exact hotels by the <code>propertyToken</code> value from an earlier run (Google Hotels property links also work). Each hotel is returned with its Hotels.com rate and competitor prices. Leave empty to search by location only.

## `maxResults` (type: `integer`):

Maximum number of hotels to save from the location search. Results come in pages of about 20 hotels.

## `enrichDetails` (type: `boolean`):

Open each hotel's page to add the Hotels.com nightly rate, prices from every other booking site, room rates, full address, typical price range, the full amenity list and third-party review scores. Charged as an extra event per hotel.

## `checkInDate` (type: `string`):

Leave empty to use a 2-night stay starting 30 days from today. Stays can be up to 30 nights.

## `checkOutDate` (type: `string`):

Leave empty for a 2-night stay after the check-in date.

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

Number of adult guests.

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

Number of children. Add their ages below for accurate prices; children without an age are counted as 10 years old.

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

Age of each child (1 to 17), one per line.

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

Currency for all prices.

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

Order of the search results.

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

Only show hotels from this nightly price, in the selected currency.

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

Only show hotels up to this nightly price, in the selected currency.

## `minRating` (type: `string`):

Only show hotels with at least this guest rating (out of 5).

## `hotelClasses` (type: `array`):

Only show hotels with these star classes. Leave empty for all.

## `freeCancellation` (type: `boolean`):

Only show hotels that offer a free-cancellation rate for your dates.

## `vacationRentals` (type: `boolean`):

Search vacation rentals (apartments, houses, villas) instead of hotels. Hotel class and free-cancellation filters don't apply to rentals.

## `countryCode` (type: `string`):

Two-letter country code of the market to search from (for example <code>us</code>, <code>gb</code>, <code>de</code>). Booking sites and their local domains can differ by market.

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

Language code for text such as descriptions, amenities and review themes (for example <code>en</code>, <code>fr</code>, <code>de</code>).

## Actor input object example

```json
{
  "location": "Paris",
  "maxResults": 20,
  "enrichDetails": false,
  "adults": 2,
  "children": 0,
  "currency": "USD",
  "sortBy": "Relevance",
  "freeCancellation": false,
  "vacationRentals": false,
  "countryCode": "us",
  "language": "en"
}
```

# Actor output Schema

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

No description

## `summary` (type: `string`):

No description

# API

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

## JavaScript example

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

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

// Prepare Actor input
const input = {
    "location": "Paris",
    "maxResults": 20
};

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

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

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

```

## Python example

```python
from apify_client import ApifyClient

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

# Prepare the Actor input
run_input = {
    "location": "Paris",
    "maxResults": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/hotels-com-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "location": "Paris",
  "maxResults": 20
}' |
apify call parsebird/hotels-com-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/hotels-com-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/LdD5ZlP96JWdIkpnG/builds/fBQXdSm3UmvJa7AmP/openapi.json
