# Hilton Hotel Search Scraper (`boncross/hilton-hotel-search`) Actor

Scrape every Hilton hotel for any destination and dates. Add a city and get each Hilton, DoubleTree, Hampton, Waldorf Astoria, Conrad, Curio and Garden Inn with nightly and stay prices, points cost, brand, amenities, guest rating, phone, coordinates and distance. $1.20 per 1,000 hotels.

- **URL**: https://apify.com/boncross/hilton-hotel-search.md
- **Developed by:** [BonCross API](https://apify.com/boncross) (community)
- **Categories:** Travel
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.84 / 1,000 hotel-listeds

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

## Hilton Hotel Search Scraper

### What is Hilton Hotel Search Scraper?

Give Hilton Hotel Search Scraper a city, a landmark or a pair of coordinates and you get the Hilton properties near it, each priced for your dates, in a few seconds. One row per hotel, across the whole portfolio: Hampton and Hilton Garden Inn through to Waldorf Astoria, Conrad and LXR. It suits anyone tracking what a market costs night by night, ranking a city around a venue, or comparing cash against points before picking hotels to price in full.

Why it's worth running:

- **A long list of cities is quick.** 20 cities, up to 100 hotels each, returned 1,184 priced hotels in about 6 seconds.
- **"Cheapest 20" means the cheapest 20.** Price, rating and points sorts look at every Hilton in the place before your limit applies. You don't get the 20 nearest hotels re-sorted.
- **You get the price Hilton's own search page shows.** We checked 41 hotel cards for New York and London on 2 October 2026 and all 41 matched. Each row also says whether that nightly rate includes tax, and gives the stay total with tax.
- **Cash and Honors points for the same dates, on one row.** Switch on points and each hotel adds its lowest points price per night for your stay. All 39 available London hotels answered when we measured it.
- **$1.20 per 1,000 hotels** on the Free plan and $0.84 on Business. Hotels your filters drop are free, and there's no proxy to set up or pay for.

**BonCross Verified** means we tested this actor against the live site before release and kept the record:

- 35 of 35 live checks on its inputs and filters passed on 7 October 2026
- 7 destinations run the same day in 6 countries: 70 hotels, none empty
- Charges matched the rows

What you can do with it:

- List the Hilton properties near a place, with brand, address, coordinates and distance
- Price each hotel for your stay: the nightly rate as Hilton shows it, whether it includes tax, and the stay total with tax
- Read Hilton's published lowest rate and its points price per night beside the dated quote
- Sort by distance, price, guest rating or points
- Filter by brand, amenity, minimum rating, bookable status or availability for your dates
- See the currency each price is actually in
- Take the results out as JSON, CSV, Excel, XML or HTML

### What data can you extract?

| | |
|---|---|
| 🏨 Identity | `id`, `hotelId`, `name`, `brandCode`, `brandName`, `url` |
| 📍 Place | `address`, `city`, `state`, `postcode`, `country`, `countryCode`, `lat`, `lng`, `distance`, `distanceUnit`, `distanceText` |
| ⭐ Guest rating | `rating`, `ratingScale`, `reviewCount` |
| 📅 Stay | `checkIn`, `checkOut`, `nights`, `adults`, `rooms`, `childrenAges` |
| 💷 Price for your stay | `pricePerNight`, `priceTotal`, `currency`, `pricesIncludeTax`, `isTaxIncludedInRate`, `ratePlanName`, `ratePlanCode`, `pointsPerNight`, `pointsRatePlanName` |
| Published rate | `leadRate`, `leadRateCurrency`, `leadRatePlanName`, `leadRatePlanCode`, `leadPointsPerNight`, `hotelCurrency` |
| Availability | `isAvailable`, `availabilityStatus` |
| Property | `amenityIds`, `amenities`, `phone`, `imageUrl`, `isOpen`, `isBookable`, `isSeasonallyClosed`, `isAdultsOnly`, `isRecentlyRenovated` |
| Run metadata | `scrapedAt`, `input` |

### How to scrape Hilton hotel prices

It's a form. You type places the way you'd type them on hilton.com and download a spreadsheet.

1. [Create a free Apify account](https://console.apify.com/sign-up) and open [Hilton Hotel Search Scraper](https://apify.com/boncross/hilton-hotel-search).
2. Put one or more places in **Destinations**: "London, England, United Kingdom", "Tokyo, Japan", or "51.5074,-0.1278".
3. Set **Check-in** and **Check-out**. If you leave them empty, the stay starts 30 days from today and lasts one night.
4. Choose how many hotels you want per destination and how to sort them.
5. Click **Start**. You get one row per hotel, priced for that stay, as JSON, CSV or Excel.

### ⬇️ Input

All you need is a destination. Left alone, the actor prices a one-night stay for two adults, 30 days out, in US dollars, and returns up to 100 hotels per destination, nearest first.

You have two limits. "Max hotels per destination" (1 to 500, default 100) applies to each place separately: ten cities at 50 each returns 500. "Maximum results for the whole run" caps the total across all of them, and 0 means no cap. London has about 70 Hiltons, to give you a sense of scale.

| Field | Type | Default | What it does |
|---|---|---|---|
| `destinations` | array | `[]` | Where to search. Prose, or `lat,lng`. |
| `maxResultsPerDestination` | integer | `100` | Hotels per destination, 1 to 500. London has about 70. |
| `maxItems` | integer | `0` | A run-wide ceiling across every destination. Zero means no limit. |
| `checkIn` / `checkOut` | string | empty | `YYYY-MM-DD`. Leave empty to use the rolling window. A stay is 1 to 30 nights. |
| `checkInDaysAhead` | integer | `30` | Used only when check-in is empty. A scheduled run then keeps asking about a stay the same distance away. |
| `nights` | integer | `1` | Used only when check-out is empty. |
| `adults` | integer | `2` | Adults per room, 1 to 8. |
| `childrenAges` | array | `[]` | One age per child. Hilton prices children by age. |
| `rooms` | integer | `1` | Rooms to price, 1 to 9. |
| `sortBy` | string | `distance` | `distance`, `price_asc`, `price_desc`, `rating_desc`, `rating_asc`, `points_asc` or `points_desc`. See below. |
| `brands` | array | `[]` | Keep only these brand codes. |
| `amenityIds` | array | `[]` | Keep only hotels with these amenities. |
| `amenityMatch` | string | `all` | `all` keeps only hotels that have each of the `amenityIds`, as Hilton's own filter does. `any` keeps a hotel that has at least one. |
| `minRating` | number | `0` | Drop hotels rated below this, out of 5. Decimals such as `4.5` work. Zero keeps everything, including unrated hotels. Any higher value drops them. |
| `onlyBookable` | boolean | `false` | Drop pre-opening and seasonally closed properties. |
| `onlyAvailable` | boolean | `false` | Drop what is sold out, closed or not yet open for the stay. Needs dated prices on. |
| `includeRates` | boolean | `true` | Price the stay. Off lists properties only, with the undated published rate, which is faster. |
| `includePoints` | boolean | `false` | Add `pointsPerNight`, the lowest Honors points price per night for the stay, beside the cash price. Needs `includeRates`. |
| `currency` | string | `USD` | ISO code to price in, such as `GBP` or `EUR`. |
| `distanceUnit` | enum | `mi` | `mi` or `km`. |
| `delayMs` | integer | `0` | Optional pause before each call, 0 to 10,000 ms. |
| `maxConcurrency` | integer | `16` | Parallel requests, 1 to 32. |

#### Sorting

| `sortBy` | Order |
|---|---|
| `distance` | Nearest to the searched place first (the default) |
| `price_asc` | Cheapest `pricePerNight` first |
| `price_desc` | Dearest `pricePerNight` first |
| `rating_desc` | Best rated first |
| `rating_asc` | Lowest rated first |
| `points_asc` | Fewest points per night first: the dated `pointsPerNight` when `includePoints` is on, otherwise `leadPointsPerNight` |
| `points_desc` | Most points per night first, on the same basis |

Hotels with no price (or no rating) go to the end. A price sort needs dated prices. If you turn "Include dated prices" off and ask for a price sort, the run stops and tells you why.

#### Search a city for a two-night stay

```json
{
  "destinations": ["London, England, United Kingdom"],
  "checkIn": "2026-10-15",
  "checkOut": "2026-10-17",
  "currency": "GBP",
  "adults": 2,
  "maxResultsPerDestination": 50
}
```

#### The 20 cheapest Hiltons in a city

```json
{
  "destinations": ["Paris, France"],
  "checkIn": "2026-11-05",
  "checkOut": "2026-11-06",
  "currency": "EUR",
  "sortBy": "price_asc",
  "maxResultsPerDestination": 20
}
```

#### Several cities, one brand, capped run

```json
{
  "destinations": ["London, England, United Kingdom", "Edinburgh, Scotland", "Tokyo, Japan"],
  "brands": ["HP", "GI"],
  "minRating": 4,
  "maxItems": 60
}
```

#### Brand codes

`HI` Hilton · `DT` DoubleTree · `HP` Hampton · `GI` Hilton Garden Inn · `WA` Waldorf Astoria · `CH` Conrad · `QQ` Curio · `UP` Tapestry · `RU` Tru · `HW` Homewood Suites · `HT` Home2 Suites · `ES` Embassy Suites · `PY` Canopy · `ND` NoMad · `OL` LXR · `SA` Signia · `PE` Spark · `UA` Motto · `PO` Tempo · `LX` SLH · `YH` YOTEL · `GU` Graduate · `AQ` Apartment Collection · `EY` LivSmart Studios · `GV` Hilton Grand Vacations · `OU` AutoCamp · `ID` Outset

#### Amenity ids

`freeBreakfast` · `freeParking` · `freeWifi` · `spa` · `resort` · `luxury` · `beach` · `golf` · `casino` · `allInclusive` · `digitalKey` · `concierge` · `nonSmoking` · `adjoiningRooms` · `eveningReception` · `tennisCourt` · `ski` · `boutique` · `hotelResidence`

Rows also list further ids that Hilton attaches (`fitnessCenter`, `dining`, `roomService` and others), and `amenities` gives the readable name beside each one.

#### For developers

- `maxResultsPerDestination` is the per-destination limit and `maxItems` the run-wide one. Filters run before either cap: with a brand, amenity, rating or availability filter, the actor looks at up to 500 hotels in the place and caps what's left.
- A price, rating or points sort prices each Hilton in the place and then keeps the first N. That takes a little longer than a distance sort with a small limit.
- `checkInDaysAhead` and `nights` apply only when `checkIn` and `checkOut` are empty. Leave the dates empty on a schedule and each run asks about a stay the same distance away.
- `maxConcurrency` (default 16, from 1 to 32) is how many requests run at once. Lower it only if a run reports refusals or errors.
- `delayMs` (default 0) adds a pause before each request. Values above 2,000 are treated as 2,000. We'd leave both alone.
- Rows are written in the order you listed the destinations. If Apify restarts a run part-way through, it carries on where it stopped, and no row is repeated or billed twice.

### ⬆️ Output

One row is one Hilton property, priced for your stay. You can view the dataset as a table or as JSON in the Output tab.

```json
{
  "id": "LONCCQQ",
  "hotelId": "LONCCQQ",
  "url": "https://www.hilton.com/en/hotels/lonccqq/",
  "scrapedAt": "2026-09-26T15:54:17.636Z",
  "input": "London, England, United Kingdom",
  "name": "Lost Property St Paul's London - Curio Collection by Hilton",
  "brandCode": "QQ",
  "brandName": "Curio",
  "address": "3-5 Ludgate Hill, St Paul's",
  "city": "London",
  "state": null,
  "postcode": "EC4M 7AA",
  "country": "United Kingdom",
  "countryCode": "GB",
  "lat": 51.51375796792,
  "lng": -0.10112802735,
  "distance": 1.2127317720832262,
  "distanceUnit": "mi",
  "distanceText": "1.21 mi",
  "rating": 4.9,
  "ratingScale": 5,
  "reviewCount": 1968,
  "phone": "+44 20 4553 0555",
  "amenityIds": ["adjoiningRooms", "boutique", "digitalKey", "dining", "fitnessCenter", "freeWifi"],
  "amenities": ["Connecting Rooms", "Boutique", "Digital Key", "On-site restaurant", "Fitness center", "Free WiFi"],
  "imageUrl": "https://www.hilton.com/im/en/LONCCQQ/17270819/common-spaces-exterior-evening-1.jpg?…",
  "isOpen": true,
  "isBookable": true,
  "isSeasonallyClosed": false,
  "isAdultsOnly": false,
  "isRecentlyRenovated": false,
  "adults": 2,
  "rooms": 1,
  "childrenAges": [],
  "checkIn": "2026-10-24",
  "checkOut": "2026-10-26",
  "nights": 2,
  "pricePerNight": 214.18,
  "priceTotal": 428.36,
  "pricesIncludeTax": true,
  "isTaxIncludedInRate": true,
  "currency": "GBP",
  "ratePlanName": "Honors Discount Advance Purchase",
  "ratePlanCode": "HPPAP4",
  "isAvailable": true,
  "availabilityStatus": "AVAILABLE",
  "leadRate": 177.4,
  "leadRateCurrency": "GBP",
  "leadRatePlanName": "Honors Discount Advance Purchase",
  "leadRatePlanCode": "HPPAP4",
  "leadPointsPerNight": 79000,
  "hotelCurrency": "GBP"
}
```

#### How to read the prices

- `pricePerNight` is the nightly rate exactly as Hilton's search results show it: the average per night over your stay, including any mandatory nightly fee.
- `pricesIncludeTax` tells you whether that nightly rate includes tax. It's `true` where Hilton quotes with tax inside (most UK hotels, VAT included) and `false` where tax is added at checkout (the United States, for example, and some London hotels). `isTaxIncludedInRate` is kept for compatibility and always says the same.
- `priceTotal` is the whole stay with all taxes and charges, the total Hilton shows at booking.

`leadRate` is a different kind of number. It's Hilton's published lowest rate for the property and has **no dates** attached. You still get it when dated prices are off, and it's a useful sanity check beside the quote. `leadPointsPerNight` is the matching published points price.

Each priced row repeats the party it was quoted for (`adults`, `rooms` and `childrenAges`) beside `checkIn`, `checkOut` and `nights`. Two runs at different party sizes stay separable.

#### When a place or a hotel has nothing to show

A destination that couldn't be reached, a place Hilton doesn't recognise, and a place with no Hilton in reach each return a single row with `error` saying which. Those rows are never charged for. On a long list you can see exactly which places returned nothing.

A hotel with no price isn't open yet, is closed for the season, or is sold out for those dates. `availabilityStatus` says which (`NOT_OPEN` for a pre-opening property), and "Only hotels with rooms for these dates" drops them.

#### One row per hotel, not per room

You get the lowest available rate for each hotel. For each room the hotel is selling, in cash and points, run [Hilton Room Rates Scraper](https://apify.com/boncross/hilton-room-rates) on the hotels this one finds. For the property record itself (amenities, parking, policies, photos), there's [Hilton Hotel Details Scraper](https://apify.com/boncross/hilton-hotel-details). Both take the `hotelId` or `url` from these rows.

### How many hotels can you get, and how fast?

You get the properties Hilton lists near the place, up to 500 per destination.

| Run | Rows | Time |
|---|---|---|
| London, the 8 nearest hotels | 8 | 2.2 to 3.9 s |
| London, New York and Orlando, every hotel priced, cheapest first | 210 | 8 to 9 s |
| Eight cities on three continents, every hotel priced, cheapest first | 378 | 4 to 5 s |
| London, New York, Chicago and Dubai, up to 100 each, priced | 196 | 5.5 to 5.9 s |
| 20 US and world cities, up to 100 hotels each, priced | 1,184 | about 6 s |

These are whole runs on Apify, measured on 1 and 2 October 2026. Destinations are searched at the same time, and so are the price checks inside each one, which is why several cities take little longer than one. Thousands of destinations fit inside the default one-hour run limit.

### How much does it cost to search Hilton hotels?

| Event | Free plan | Starter | Scale | Business |
|---|---|---|---|---|
| `actor-start`, once per run | $0.002 | $0.002 | $0.002 | $0.002 |
| `destination-checked`, per destination whose hotels were all removed by your filters | $0.0005 | $0.0005 | $0.0005 | $0.0005 |
| `hotel-listed`, per hotel returned | $0.0012 | $0.00108 | $0.00096 | $0.00084 |

Enterprise plans pay the Business price.

**$1.20 per 1,000 hotels** on the Free plan, $0.84 on Business. That's the whole price: platform usage is included and there's no proxy charge.

Three cities at 50 hotels each returns 150 rows: $0.002 + 150 × $0.0012 = **$0.182** ($0.128 on Business).

What you don't pay for, and the one small fee you might:

- Hotels dropped by a filter aren't charged.
- An error row (unreachable destination, unknown place, no Hilton in reach) isn't charged.
- If Hilton lists hotels for a destination and your filters remove all of them, that destination costs the $0.0005 `destination-checked` fee once and writes one row with an `error` saying how many hotels were found.

The $5 of credits in Apify's Free plan each month covers about 27 runs the size of that example, roughly 4,100 priced hotels, before you pay anything.

### FAQ

#### Do I need proxies or a Hilton account?

Neither. There's no proxy to set up, no proxy charge and no sign-in.

#### How do I get the cheapest hotels in a city, not the nearest?

Set "Sort by" to price, low to high. The actor prices each Hilton in the place before your limit applies, and a limit of 20 gives you the 20 cheapest.

#### Is the nightly price with or without tax?

It depends on the hotel, and the row tells you. `pricesIncludeTax` is true where Hilton quotes with tax inside and false where tax is added at checkout. `priceTotal` is the stay with tax in both cases, which makes it the safer column to compare across countries.

#### Can I see what the stay costs in Honors points?

Switch on "Include points for your dates". Each hotel then has `pointsPerNight`, its lowest points price per night for your stay, beside the cash price. Without it you still get `leadPointsPerNight`, the property's published points price, which has no dates.

#### I asked for three rooms. Why didn't the price change?

The search quotes a per-room rate, and more rooms doesn't change it. For a total that scales with the booking, use Hilton Room Rates Scraper.

#### How do I track a market every day for a stay 30 days out?

Schedule the run and leave the dates empty. "Check-in days ahead" keeps each run asking about a stay the same distance away, where a fixed date would drift into the past.

#### Can I search around a point, such as a venue?

Pass `"lat,lng"` as the destination. Rows are nearest first by default, and `distance` is in miles or kilometres, whichever you choose.

#### What are the limits?

- One rate per hotel, the lowest available. The room-by-room list needs Hilton Room Rates Scraper.
- `pointsPerNight` is the hotel's lowest points price for the stay. The points price of each room needs Hilton Room Rates Scraper too.
- `leadRate` has no dates, and it can differ from the dated `pricePerNight`.
- Pre-opening properties have no price and `availabilityStatus: NOT_OPEN`.
- Hotel and rate-plan names are in English.
- Amenity ids are Hilton's own vocabulary and differ from other chains'.
- A stay is 1 to 30 nights.

#### Is it legal to scrape Hilton?

This actor reads search results Hilton publishes to anyone, with no login and no paywall, and collects no personal data. What you do with the data is your responsibility. Apify's [ethical scraping](https://blog.apify.com/is-web-scraping-legal/) guidance is a good place to start.

### Run it on a schedule, or from your own code

A daily market tracker needs no code: an Apify Schedule runs the search, and the Google Sheets or Slack integration passes on the rows. Make, Zapier, Airbyte, n8n, GitHub and webhooks connect the same way.

From code, `POST https://api.apify.com/v2/acts/boncross~hilton-hotel-search/run-sync-get-dataset-items` with the input JSON as the body returns the hotels in one call for short runs. The [Apify API](https://docs.apify.com/api/v2) has clients for [JavaScript](https://docs.apify.com/api/client/js/) and [Python](https://docs.apify.com/api/client/python/).

An AI agent can call it through the Apify MCP server at `mcp.apify.com` as `boncross/hilton-hotel-search`. Ask it for the best-rated Hilton within a mile of a venue on given dates and it has what it needs. The actor asks for no access to your Apify account.

### More from BonCross

- [Hilton Hotel Details Scraper](https://apify.com/boncross/hilton-hotel-details): Everything a Hilton property publishes about itself: address, coordinates, phone,…
- [Hilton Room Rates Scraper](https://apify.com/boncross/hilton-room-rates): Every room Hilton is selling for a hotel and your dates.
- [ikyu.com Room Rates Scraper (一休)](https://apify.com/boncross/ikyu-room-rates): Each room and rate plan ikyu.com (一休) sells for a hotel or ryokan on your dates.
- [ikyu.com Search Scraper (一休)](https://apify.com/boncross/ikyu-search): ikyu.com (一休) search results for any Japanese area, station or landmark on your dates.
- [Jalan.net Area Rates Scraper (じゃらん)](https://apify.com/boncross/jalan-area-rates): Jalan (じゃらん) prices and rooms left for every available hotel in an area, a whole…
- [Jalan.net Room Rates Scraper (じゃらん)](https://apify.com/boncross/jalan-room-rates): Every plan and room Jalan (じゃらん) lists for a hotel on a date.

### Your feedback

Is a Hilton missing from a city, or a price that doesn't match what hilton.com shows you? Tell us on the Issues tab in Apify Console with the destination and dates. We read every issue and reply there.

# Changelog

This Actor's version history is a separate document: https://apify.com/boncross/hilton-hotel-search/changelog.md

# Actor input Schema

## `destinations` (type: `array`):

Where to search. Use prose the way you would type it on hilton.com ("London, England, United Kingdom", "Tokyo, Japan", "Times Square, New York") or a coordinate pair as "lat,lng" ("51.5074,-0.1278"). Each destination is resolved to one place, and every Hilton property near it comes back.

## `maxResultsPerDestination` (type: `integer`):

Stop after this many hotels per destination. London has about 70.

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

A run-wide ceiling across every target. The per-destination limit above applies to each one separately, so ten cities at 50 each returns 500; set this to cap the total. Zero means no run-wide limit.

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

YYYY-MM-DD. Leave empty to use the rolling window below.

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

YYYY-MM-DD. Leave empty and the stay runs for the number of nights below.

## `checkInDaysAhead` (type: `integer`):

Used only when check-in is empty, so a scheduled run keeps asking about a stay the same distance away rather than one that drifts into the past.

## `nights` (type: `integer`):

Used only when check-out is empty.

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

How many adults per room.

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

One age per child. Hilton prices children by age, so an empty list means adults only.

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

How many rooms to price.

## `brands` (type: `array`):

Optional. Keep only these Hilton brands, by code: HI Hilton, DT DoubleTree, HP Hampton, GI Hilton Garden Inn, WA Waldorf Astoria, CH Conrad, QQ Curio, UP Tapestry, RU Tru, HW Homewood Suites, HT Home2 Suites, ES Embassy Suites, PY Canopy, ND NoMad, OL LXR, SA Signia, PE Spark, UA Motto, PO Tempo, LX SLH, YH YOTEL, GU Graduate, AQ Apartment Collection, EY LivSmart Studios, GV Hilton Grand Vacations, OU AutoCamp, ID Outset.

## `amenityIds` (type: `array`):

Optional. Keep only hotels carrying these amenity ids (all of them by default, or at least one with the setting below), such as freeBreakfast, freeParking, freeWifi, spa, resort, luxury, beach, golf, casino, allInclusive, digitalKey, concierge, nonSmoking, adjoiningRooms, eveningReception, tennisCourt, ski, boutique, hotelResidence.

## `amenityMatch` (type: `string`):

With several amenities: All (the default) keeps only hotels carrying every one, the way Hilton's own amenity filter works; Any keeps a hotel carrying at least one of them.

## `minRating` (type: `number`):

Keep only hotels rated at least this on TripAdvisor, out of 5. Zero keeps everything, including hotels with no rating yet. Accepts a decimal, so 4.5 is a valid floor.

## `onlyBookable` (type: `boolean`):

Drop properties Hilton marks as not yet taking reservations: pre-opening hotels and ones closed for the season.

## `onlyAvailable` (type: `boolean`):

Drop properties that came back sold out, closed, or not yet open for the stay. Needs dated prices to be on.

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

Hilton's orderings. Distance is the default. Price and rating orders consider every Hilton in the place, then keep the first N, the way Hilton's own site sorts: so with a cap of 20 and Price: low–high you get the 20 cheapest, not the 20 nearest re-sorted. Points orders use the points price for your dates when Include points is on, otherwise Hilton's published points rate.

## `includeRates` (type: `boolean`):

Price the stay below. Turn this off to list properties only, which is one request per destination instead of one extra per 20 hotels; the row still carries Hilton's undated published lowest rate.

## `includePoints` (type: `boolean`):

Add the lowest Hilton Honors points price per night for the stay below, beside the cash price. One extra request per 20 hotels.

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

ISO code to price in, such as USD, GBP or EUR.

## `distanceUnit` (type: `string`):

Unit for the distance from the searched place.

## `delayMs` (type: `integer`):

Optional pause before each call, in milliseconds. 0 (the default) runs as fast as the parallel limit allows. Values above 2000 are treated as 2000.

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

How many requests run at once across the whole run. The default is the fastest level measured clean; lower it only if a run reports refusals or errors.

## Actor input object example

```json
{
  "destinations": [
    "London, England, United Kingdom"
  ],
  "maxResultsPerDestination": 100,
  "maxItems": 0,
  "checkIn": "",
  "checkOut": "",
  "checkInDaysAhead": 30,
  "nights": 1,
  "adults": 2,
  "childrenAges": [],
  "rooms": 1,
  "brands": [],
  "amenityIds": [],
  "amenityMatch": "all",
  "minRating": 0,
  "onlyBookable": false,
  "onlyAvailable": false,
  "sortBy": "distance",
  "includeRates": true,
  "includePoints": false,
  "currency": "USD",
  "distanceUnit": "mi",
  "delayMs": 0,
  "maxConcurrency": 16
}
```

# Actor output Schema

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

Hilton search results: every row the run returned.

## `stats` (type: `string`):

Counts for the run: what was resolved, fetched, filtered and returned.

# 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 = {
    "destinations": [
        "London, England, United Kingdom"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("boncross/hilton-hotel-search").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 = { "destinations": ["London, England, United Kingdom"] }

# Run the Actor and wait for it to finish
run = client.actor("boncross/hilton-hotel-search").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 '{
  "destinations": [
    "London, England, United Kingdom"
  ]
}' |
apify call boncross/hilton-hotel-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,boncross/hilton-hotel-search"
        }
    }
}
```

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/JHMlQmyfE29LrOXvB/builds/cecOW2CUHu8LcsMMU/openapi.json
