Hilton Hotels Scraper - Lowest Rates & New Hotel Watch
Pricing
from $0.84 / 1,000 hotel scrapeds
Hilton Hotels Scraper - Lowest Rates & New Hotel Watch
Hilton hotels scraper: country slugs or hilton.com location pages to one row per hotel with lowest rate in USD and local currency, rate plan, brand, address, coordinates, amenities and opening date. For daily rate and new-hotel watching per destination.
Pricing
from $0.84 / 1,000 hotel scrapeds
Rating
0.0
(0)
Developer
Superslow Sloth
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Security
Limited permissionsShare
Hilton hotels scraper: lowest rates and new-hotel watch by country or city
This Hilton hotels scraper lists the hotels Hilton has in a
country, state or city and returns one flat row per hotel: Hilton's "from" rate in
US dollars and in the hotel's own currency, the rate plan behind it, brand, address,
coordinates, amenities, and whether the hotel is open yet (is_open, open_date,
pre_open_message). Run it daily on a few destinations and diff the dataset on
hotel_code to get a lowest-rate watch (which Tokyo hotel got cheaper) and a
new-hotel watch (which hotel appeared, which one opened).
No account, no API key, no login, no browser. It reads hilton.com's own location pages
(https://www.hilton.com/en/locations/japan/), which are server-rendered.
Input
| Field | Notes |
|---|---|
destinations | One per line: a country slug (japan, usa, france, thailand), a place under it (japan/tokyo, usa/california), or the address of a hilton.com location page (https://www.hilton.com/en/locations/japan/tokyo/). The slug is the one in the page address. A hotel that two destinations both contain is returned once, under the first. |
maxItems | Hotels to return per destination (default 100, up to 10,000). |
expandToCities | Default on. A country or state page shows only the first 20 hotels Hilton has there; with this on the actor also reads the narrower pages it links to until Hilton's own count for the destination is reached. Off = the one page you asked for, 20 hotels at most. |
proxyConfiguration | Apify datacenter proxy by default. |
Example input:
{"destinations": ["japan", "https://www.hilton.com/en/locations/thailand/"],"maxItems": 100,"expandToCities": true}
Output
Row example (real values, read from https://www.hilton.com/en/locations/japan/ on 2026-10-28):
{"hotel_code": "HNDTSLX","name": "The Tokyo Station Hotel, an SLH Hotel","url": "https://www.hilton.com/en/hotels/hndtslx-the-tokyo-station-hotel/","destination": "japan","found_on": "japan","brand_code": "LX","brand": "SLH","address_line": "1 9 1 Marunouchi","city": "Tokyo","state": "13","state_name": null,"postal_code": "100-0005","country_code": "JP","country": "Japan","address": "100-0005, Tokyo, 1 9 1 Marunouchi, Chiyoda ku, Japan","latitude": 35.681501,"longitude": 139.766,"phone": "+81 3-5220-1111","is_open": true,"open_date": "2024-07-09","pre_open_message": null,"reservations_enabled": true,"reservations_open_date": null,"seasonally_closed": false,"seasonal_reopen_date": null,"adults_only": false,"new_acquisition": false,"amenities": ["Concierge", "On-site restaurant", "Fitness center", "Luxury", "Smoke-free", "Pets not allowed", "Room service", "Spa"],"image_url": "https://www.hilton.com/im/en/HNDTSLX/20610440/hndtslx-65089270-exterior-6201x4134.jpg?impolicy=crop&cw=5000&ch=3333&gravity=NorthWest&xposition=0&yposition=-1","image_alt": "The Tokyo Station Hotel Exterior at Night","currency": "JPY","lowest_rate_usd": 1007.12,"lowest_rate_local": "¥158,906","rate_plan_code": "HPPRP1","rate_plan_name": "Honors Discount","rate_plan_description": "Hilton Honors Membership Required.","cma_total_price_indicator": false,"fee_transparency_indicator": false,"listing_updated_at": "2026-10-28T16:20:58Z"}
| Field | Notes |
|---|---|
hotel_code | Hilton's hotel code (HNDTSLX). The key to diff runs on: one row per code. |
name, url | As Hilton prints them; url is the hotel's own hilton.com page. |
destination, found_on | destination is what you asked for; found_on is the location page the hotel was read from (japan/small-luxury-hotels-slh when a brand page listed it). |
brand_code, brand | Hilton's brand code and the name from the page's own brand table (LX is SLH there). brand is null for a code the table does not list (YH, YOTEL, was seen). |
address_line, city, state, state_name, postal_code, country_code, country, address | As sent. state is Hilton's state code: a prefecture number in Japan (13 is Tokyo), letters in the USA (KS). state_name is null for most countries (it is Kansas in the USA, null in Japan and Thailand). |
latitude, longitude, phone | As sent. |
is_open | False for a hotel that has not opened. This is the new-hotel flag. |
open_date | Opening date YYYY-MM-DD. Null for many long-open hotels (Hilton Tokyo has none) - null does not mean "not open", read is_open. |
pre_open_message | Hilton's pre-opening text, e.g. "We're accepting reservations for 15 January 2027 and beyond." Null for an open hotel. |
reservations_enabled, reservations_open_date | Whether Hilton takes bookings, and from what date when it will start. |
seasonally_closed, seasonal_reopen_date, adults_only, new_acquisition | Hilton's flags as sent. new_acquisition marks a hotel Hilton took over from another operator. |
amenities | Amenity names from the page's amenity table; empty list if none. |
image_url, image_alt | The hotel's main photo (3:2 crop) and its alt text. |
currency | ISO currency of the hotel's own price text. |
lowest_rate_usd | Hilton's "from" rate in US dollars (USD): Tokyo 1007.12 prints as ¥158,906, a rate of 157.8 yen to the dollar. Null when Hilton sends no rate for the hotel, never 0. |
lowest_rate_local | The same rate as Hilton prints it, in currency ("¥158,906"). Hilton rounds it, so it can differ from lowest_rate_usd by a rounding step (USA: 121.23 prints as $122). Null with no rate. |
rate_plan_code, rate_plan_name, rate_plan_description | The rate plan behind the lowest rate. Read these before comparing rates: the lowest plan is often "Honors Discount", which needs a free Hilton Honors membership, or non-refundable. Null with no rate. |
cma_total_price_indicator, fee_transparency_indicator | Two price-display flags Hilton sends on the rate, passed through unchanged. Hilton does not document them and this actor does not claim what they mean. Null with no rate. |
listing_updated_at | When Hilton's server built the listing the hotel came from (UTC). The rate is a cached snapshot from then, not from the moment of the request. |
Honest nulls and limits
- No rate does not mean pre-opening. A hotel that has not opened yet has no rate
(
YOTEL Tokyo Ginza, opening 2026-12-03), but so do some open hotels with nothing on sale (a Hilton Grand Vacations resort in Odawara).lowest_rate_usdis null for both;is_opentells them apart. - The rate is not a quote for a stay. The page is Hilton's location listing: it
states no check-in date, number of nights or guests. It is Hilton's "from" rate for
the hotel, useful for day-over-day change and for ranking hotels against each other,
not for a booking decision. For a priced stay, use the hotel's
url. - The rate is cached and moves in steps. The same address fetched seconds apart
returned two rate sets (Tokyo Station Hotel
1007.12and1109.1) whoselisting_updated_atstamps were 9,351 seconds apart. Compare rows onlisting_updated_atas well as on the date of your run. - No room types, availability calendar, reviews or hotel descriptions. One row is one hotel as the location listing shows it.
Pricing
Pay per event:
- $0.002 per run (
actor-start), charged only after your input is validated, so a run that fails on bad input costs nothing. - $0.00084 per hotel row written (
hotel-scraped), i.e. $0.84 per 1,000 hotels. A hotel found twice in one run (neighbouring cities overlap) is returned and charged once.
How it fetches
Every number below was measured on 2026-10-29.
- A location page is
https://www.hilton.com/en/locations/<place>/and carries its hotels as JSON in the Next.js__NEXT_DATA__block. HTTP 200 from a plain home connection and from Apify datacenter and residential addresses (10 of 10 each, every body a real location page, runbAnQa4zG1KgbNpkEh). A 200 without that block, a 403/429/5xx or a dropped connection is treated as the address being refused: the actor rotates to a fresh address and retries. - A page does not paginate.
?page=2,?offset=20,?start=20and?pageNumber=2all returned the same first 20 hotels as the bare address. A country or state page lists the first 20 of the hotels Hilton has there (Japan 20 of 55, Thailand 20 of 39, France 20 of 75, USA 20 of 6,660); the page says the real count (totalSize). A city page lists every hotel it has (Tokyo 16 of 16, Osaka 15 of 15). - So the actor goes to the narrower pages. With
expandToCitieson it follows the links on the country page to reach every hotel: by brand when the brand pages can hold the whole place (Japan: the 12 brand pages hold 35 hotels the first page does not, 55 of 55 in total), otherwise by city or state, with the other as the fallback. Japan by city alone reached 54 of 55: the one hotel no city page lists (SHMFSLX) is on a brand page. Thailand by brand reached 39 of 39. It stops as soon as Hilton's own count is reached, atmaxItems, or at 600 pages per destination. - City pages are radius searches. A city page lists nearby hotels too, so neighbouring pages overlap: Japan's 27 city pages that were read add up to 163 listings of 54 different hotels. Rows are de-duplicated, and a hotel in a different country than the destination is dropped.
- A brand page can be cut at 20 too (Germany: Hampton lists 20 of 26). The actor then follows that brand page's own "by city" links.
- Measured end to end (this actor's own code, from a home connection, 2026-10-29):
Thailand 39 of 39 hotels in 10 pages, Japan 55 of 55 in 13 pages, Germany 56 of 56 in 25
pages (Hampton's brand page is cut at 20, so its city pages were read), Delaware 22 of 22
in 8 pages. For a country too big to read in full (USA: 6,660) a
maxItemscut-off keeps the hotels from the first pages in Hilton's link order, which is alphabetical by state. - Each page weighs about 1 MB and holds 1 to 20 hotels. Reading all of a big
country therefore reads many pages; use
maxItems. - A place Hilton does not know is HTTP 404 and is reported, not retried. Some
city links redirect to a neighbouring page (
japan/higashiyama-kutojapan/kyoto); the redirect is followed and the page read once. - The log ends with Hilton's own count and the number found per destination, and a warning when they differ.
If Hilton changes the page, the run fails with a message instead of returning empty rows.