# Hrs Hotels Search Scraper (`stealth_mode/hrs-hotels-search-scraper`) Actor

Scrape hotel search results from HRS.com including names, locations, ratings, amenities, room types, pricing, and 55+ structured fields. Perfect for travel analysts, procurement teams, and hospitality researchers needing bulk hotel data.

- **URL**: https://apify.com/stealth\_mode/hrs-hotels-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, Travel
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

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

## HRS.com Hotel Search Scraper: Extract Hotel Listings & Rates

---

### What Is HRS.com?

HRS (Hotel Reservation Service) is a global B2B hotel booking and procurement platform, widely used by corporations and travel managers to source accommodation. Its search listings aggregate hotels across hundreds of cities, complete with pricing, amenity flags, chain affiliations, and quality certifications. Collecting this data manually is impractical at scale — the **HRS.com Hotel Search Scraper** automates extraction from search result pages directly.

---

### Overview

The **HRS Hotel Search Scraper** processes HRS.com hotel list URLs and returns structured records for every hotel in the results. It is suited for:

- **Corporate travel managers** benchmarking hotel options across cities
- **Procurement analysts** evaluating preferred hotel programs
- **Market researchers** tracking hotel supply, pricing, and amenities
- **Developers** building travel intelligence tools or hotel aggregators

The scraper handles pagination automatically and can collect up to `max_items_per_url` records per search URL, making it viable for both targeted spot-checks and large-scale market sweeps.

---

### Input Format

```json
{
  "ignore_url_failures": true,
  "max_items_per_url": 200,
  "urls": [
    "https://www.hrs.com/en/list?location=%2555133&orderBy=Recommendations&startDateDay=26&startDateMonth=5&startDateYear=2026&endDateDay=27&endDateMonth=5&endDateYear=2026&currency=EUR&rooms=1&numberOfAdults%5B0%5D=1&type%5B0%5D=SINGLEROOM&adults=1&children=0&singleRooms=1&doubleRooms=0"
  ]
}
````

| Field | Type | Description |
|---|---|---|
| `urls` | `array` | One or more HRS hotel search result URLs. Build your search on HRS.com (select location, dates, room type, currency), then copy the full URL from your browser. Supports bulk entry. |
| `max_items_per_url` | `integer` | Maximum number of hotel records to collect per URL. Default: `20`. Set higher (e.g., `200`) to capture full search result pages. |
| `ignore_url_failures` | `boolean` | If `true`, the scraper continues when a URL fails instead of halting the entire run. Recommended for bulk jobs. Default: `true`. |

**How to build a valid URL:**\
Navigate to `hrs.com/en/list`, apply your filters (city, check-in/out dates, room type, currency), and copy the full URL from the address bar. The URL encodes all search parameters including location code, dates, room configuration, and sort order.

***

### Output Format

**Sample output**

```json
{
  "hotel_name": "Capri by Fraser Berlin",
  "country": "DEU",
  "zip_code": "10178",
  "city_name": "Berlin",
  "district_name": "Berlin",
  "street": "Scharrenstraße 22",
  "location_name": "Berlin",
  "thumbnail_picture": {
    "supported_locales": [
      "de",
      "en"
    ],
    "seo_name": {
      "de": "Capri_by_Fraser_Berlin-Berlin-Hotelhalle-2-875998.jpg",
      "en": "Capri_by_Fraser_Berlin-Berlin-Hall-2-875998.jpg"
    },
    "picture": {
      "id": 25167780,
      "type": "NORMAL",
      "category": "HALL",
      "width": 6703,
      "height": 4469,
      "center_point": {
        "center_width": 3351,
        "center_height": 2578,
        "as_url_part": "3351%2C2578"
      },
      "checksum": "xpeDDOMpk7WkRi9DKoQ6Zg==",
      "provider": "HRS",
      "origin_host": "http://foto-origin.hrsstatic.com/foto",
      "path": {
        "path": "/MTS/875998/",
        "name": "teaser_875998_5.jpg"
      },
      "number": 2,
      "version": 6,
      "hotel_list": true,
      "teaser": true,
      "complete_origin_path": "http://foto-origin.hrsstatic.com/foto/MTS/875998/teaser_875998_5.jpg",
      "cached_picture_path": "https://foto.hrsstatic.com/fotos/0/2/269/213/80/000000/http%3A%2F%2Ffoto-origin.hrsstatic.com%2Ffoto%2FMTS%2F875998%2Fteaser_875998_5.jpg/xpeDDOMpk7WkRi9DKoQ6Zg%3D%3D/134%2C106/6/Capri_by_Fraser_Berlin-Berlin-Hotelhalle-2-875998.jpg",
      "hdcontent": true
    }
  },
  "average_rating": {
    "number_of_ratings": {
      "b_u_s_i_n_e_s_s": 16,
      "a_l_l_h_r_s": 20,
      "m_a_t_u_r_e__c_o_u_p_l_e": 1,
      "p_r_i_v_a_t_e": 3
    },
    "percentaged_recommendation_rates": {
      "b_u_s_i_n_e_s_s": 81.3,
      "a_l_l_h_r_s": 85.0,
      "m_a_t_u_r_e__c_o_u_p_l_e": 100.0,
      "p_r_i_v_a_t_e": 100.0
    },
    "ratings": {
      "b_u_s_i_n_e_s_s": 9.0,
      "a_l_l_h_r_s": 9.1,
      "m_a_t_u_r_e__c_o_u_p_l_e": 9.6,
      "p_r_i_v_a_t_e": 9.3
    }
  },
  "feature_types": [
    "CITY",
    "BUSINESS",
    "DESIGN",
    "APARTMENT",
    "BUSINESSCENTER",
    "EXPRESSCHECKOUT",
    "PETS",
    "LAUNDRY",
    "PARKING",
    "ACCESSIBILITY",
    "NOSMOKING",
    "AIRCONDITION",
    "RESTAURANT",
    "INTERNET",
    "WHEELCHAIRFRIENDLYROOM",
    "ELEVATOR",
    "HOTELBAR",
    "INTERNET_WLANINROOM",
    "INTERNET_WLANINPUBLICAREA",
    "INTERNET_PUBLICTERMINAL",
    "INTERNET_FREEINTERNET_INROOM",
    "DESK",
    "ROOMSAFE",
    "BATHROOM",
    "KITCHENETTE",
    "DINERS_CLUB",
    "VISA",
    "MASTERCARD",
    "AMERICAN_EXPRESS",
    "ELECTRONIC_CASH"
  ],
  "parking_feature": {
    "parking_free": false,
    "parking_at_the_hotel_available": true,
    "parking_hotel_owned_available": false,
    "electric_vehicle_charging_available": false
  },
  "no_smoking_feature": {
    "type": "NOSMOKING",
    "non_smoker_hotel": true,
    "non_smoking_room_available": true
  },
  "restaurant_feature": {
    "type": "RESTAURANT",
    "number_of_restaurant": 1
  },
  "internet_feature": {
    "dsl_in_room_available": false,
    "wlan_in_room_available": true,
    "internet_in_public_available": false,
    "internet_in_room_free": false
  },
  "free_gifts": {
    "language": "eng",
    "currency": "EUR",
    "translated_amenities": {
      "f_r_e_e_w_l_a_n": [
        {
          "name": "WLAN in room",
          "value": "FREE_WLAN",
          "index": 0,
          "amenity_type": "FREEWLAN",
          "translated_values_per_field": {
            "value_original": "WLAN in room"
          },
          "translated_value": "WLAN in room",
          "top": false,
          "amenity_group": "FREEGIFTS"
        }
      ]
    }
  },
  "hotel_category": {
    "hrs_stars": 4
  },
  "distance_city_center": {
    "distance": {
      "distance": 2.0,
      "unit": "KM"
    },
    "name": "Alexanderplatz"
  },
  "distance_railway": {
    "distance": {
      "distance": 5.0,
      "unit": "KM"
    },
    "name": "Hauptbahnhof"
  },
  "distance_airport": {
    "distance": {
      "distance": 12.0,
      "unit": "KM"
    }
  },
  "currency": "EUR",
  "chain_hierarchy": [
    "Frasers Hospitality"
  ],
  "hotel_types": [
    "CITY_HOTEL",
    "BUSINESS_HOTEL",
    "DESIGN_HOTEL",
    "BOUTIQUE_HOTEL",
    "APARTMENT_HOTEL",
    "NON_SMOKER_HOTEL"
  ],
  "type_of_hotel_business": [
    "HOTEL"
  ],
  "payment_types": [
    "DINERS_CLUB",
    "VISA",
    "MASTERCARD",
    "AMERICAN_EXPRESS",
    "ELECTRONIC_CASH"
  ],
  "hotel_status": "OPEN",
  "hotel_contract_status": "FREE_SALE",
  "preferred_hotel": false,
  "overlook_hotel": false,
  "hotel_location_info_to": {
    "primary_location_id": 55133,
    "date_time_zone": "Europe/Berlin"
  },
  "number_of_conference_rooms": 2,
  "number_of_single_rooms": 143,
  "number_of_double_rooms": 143,
  "construction_year": 2017,
  "chain_id": 1363,
  "chain_name": "Frasers Hospitality",
  "brand_id": 1363,
  "brand_name": "Frasers Hospitality",
  "crs_type": "HRS",
  "hotel_quality_seal": false,
  "senior_comfort_seal": false,
  "china_friendly_seal": false,
  "clean_and_safe_certifications": [
    "EXPERT_CERTIFIED"
  ],
  "greenstay_amenity": {
    "greenstayset": [
      "CERTIFIED"
    ],
    "efficiency_class": "A",
    "kilogram_carbon_p_o_c": 8.84834840537166
  },
  "lo_fi": false,
  "btc_pay_support": true,
  "contactless_checkin_support": false,
  "btc_pay_status": "OPTIONAL",
  "hotel_audit_data": {
    "hotel_id": 875998,
    "hotel_audit_info": {
      "status": true,
      "created_date": "2022-05-15T11:42:34",
      "updated_date": "2022-05-15T11:42:34",
      "id": "95de83b9-be83-4d0d-a72a-ec05a6442ce9",
      "type": "cleansafe_expert_inspection",
      "program_name": "FRS GS 54 (SGS ID for Capri by Fraser, Berlin)",
      "link": "https://www.frasershospitality.com/covid-19-update.html"
    },
    "hotel_audit_green_stay_info": {
      "status": true,
      "created_date": "2022-03-04T11:11:25",
      "updated_date": "2022-03-11T09:02:40",
      "id": "fc4f43fd-7473-42a2-b434-91bc988b1bbb",
      "report_year": 2019,
      "kilogram_carbon_p_o_c": 8.84834840537166,
      "liter_water_p_o_c": 48.21621611106081,
      "kilogram_waste_p_o_c": 0.888624532110034,
      "carbon_class": "A",
      "water_class": "A",
      "waste_class": "C",
      "green_class": "A",
      "type": "green_stay_self_inspection_hero",
      "program": {
        "name": "Frasers Hospitality Green Program",
        "link": "https://www.frasershospitality.com/en/germany/sustainability"
      },
      "cert": {
        "cert_id": "BDE01294BG24T1",
        "url": "https://bregroup.com/products/breeam",
        "issuer": "BREEAM",
        "validity_start": "2024-04-11T00:00:00",
        "validity_end": "2027-04-10T00:00:00"
      }
    },
    "hotel_audit_location_info": {
      "status": true,
      "gs_id": "Q930400998",
      "gs_province": "Berlin",
      "gs_region": "European Union",
      "gs_district": "Overall",
      "gs_city": "Berlin",
      "gs_country": "Germany",
      "gs_type": "Capital",
      "gs_countrycode": "DE",
      "gs_distance": 9.37845387952202e-05,
      "date": "2025-12-01T03:41:19",
      "gs_population": 33752220,
      "composite": 86,
      "nightime": 78,
      "physical": 85,
      "women": 78,
      "theft": 69,
      "freedom": 88,
      "health": 84,
      "lgbtq": 87,
      "type": "geosure"
    },
    "hotel_audit_green_stay_v2": {
      "status": true,
      "config_id": 0,
      "assessment_level": "ADV_LEVEL",
      "type": "gsi2_self_inspection_hero",
      "scoring": {
        "status": false,
        "score": 8,
        "categories": {
          "status": false,
          "purchasing": 1.0,
          "pollution": 1.0,
          "biodiversity": 1.0,
          "energy": 1.0,
          "water": 1.0,
          "waste": 1.0,
          "policy": 1.0
        },
        "points": {
          "is": 137,
          "max": 195,
          "percent": 0.7025641025641025
        }
      },
      "footprint": {
        "status": true,
        "report_year": 2019,
        "kilogram_carbon_p_o_c": 8.84834840537166,
        "liter_water_p_o_c": 48.21621611106081,
        "kilogram_waste_p_o_c": 0.888624532110034,
        "carbon_class": "A",
        "water_class": "A",
        "waste_class": "C",
        "green_class": "A",
        "type": "green_stay_self_inspection_hero",
        "compensation": false
      },
      "footprint_meetings": {
        "status": true,
        "report_year": 2019,
        "kg_co2e_sqm_hr": 0.00492423864992153,
        "liter_water_sqm_hr": 0.026833047711244826,
        "kg_waste_sqm_hr": 0.00049453288521372,
        "carbon_class": "A",
        "water_class": "A",
        "waste_class": "C",
        "green_class": "A",
        "compensation": false,
        "type": "gsi2_self_inspection_meeting_hero"
      },
      "programs": [
        {
          "name": "Frasers Hospitality Green Program",
          "link": "https://www.frasershospitality.com/en/germany/sustainability"
        }
      ],
      "certs": [
        {
          "cert_id": "BDE01294BG24T1",
          "url": "https://bregroup.com/products/breeam",
          "issuer": "BREEAM",
          "validity_start": "2024-04-11T00:00:00",
          "validity_end": "2027-04-10T00:00:00"
        }
      ],
      "gsi_champion": true,
      "exemption": false
    },
    "green_stay_hotel": true,
    "green_stay_compensation": false,
    "green_stay_champion": true
  },
  "hotel_audit_status_data": {
    "hkey": 875998,
    "info": {
      "chain_id": 1363,
      "brand_id": 1363,
      "brand": "Frasers Hospitality",
      "chain": "Frasers Hospitality",
      "name": "Capri by Fraser Berlin",
      "city": "Berlin (Berlin)",
      "country": "Germany",
      "mpp": false,
      "mpp_prospect": false,
      "ccr": false,
      "hrs_office": "HS Cologne",
      "code": "xZm6fo",
      "cs_audit_link": "https://www.hotel-audit.hrs.com?hkey=875998&code=xZm6fo&redirect=footprint-assessment&utm_source=hrs-hs&utm_medium=email&utm_campaign=individual_invitation&utm_content=875998",
      "gs_audit_link": "https://www.hotel-audit.hrs.com?hkey=875998&code=xZm6fo&utm_source=hrs-hs&utm_medium=email&utm_campaign=individual_invitation&utm_content=875998",
      "compensation_link": "https://www.hotel-audit.hrs.com?hkey=875998&code=xZm6fo&redirect=compensation-program&utm_source=hrs-hs&utm_medium=email&utm_campaign=individual_invitation&utm_content=875998",
      "more_info": "https://www.hrs.com/enterprise/sustainability/",
      "exemption": false
    },
    "audits": [
      {
        "id": "95de83b9-be83-4d0d-a72a-ec05a6442ce9",
        "status": true,
        "type": "cleansafe_expert_inspection",
        "program_name": "FRS GS 54 (SGS ID for Capri by Fraser, Berlin)",
        "link": "https://www.frasershospitality.com/covid-19-update.html",
        "checked": "1,2,3,4,5,6,7,8,10,11,12,9,14,15,16,17,18,19,23,24,25,26,27,28,29,30,31,35,36,37,39,40,41,42,43,44,45,46",
        "services": "breakfast,fitness,mice",
        "protocol_version": 1,
        "terms_version": 2
      },
      {
        "id": "fc4f43fd-7473-42a2-b434-91bc988b1bbb",
        "hkey": 875998,
        "status": true,
        "type": "green_stay_self_inspection_hero",
        "report_year": 2019,
        "kilogram_carbon_p_o_c": 8.84834840537166,
        "liter_water_p_o_c": 48.21621611106081,
        "kilogram_waste_p_o_c": 0.888624532110034,
        "carbon_class": "A",
        "water_class": "A",
        "waste_class": "C",
        "green_class": "A"
      },
      {
        "hkey": 875998,
        "status": true,
        "type": "gsi2_self_inspection_hero",
        "footprint": {
          "report_year": 2019,
          "kilogram_carbon_p_o_c": 8.84834840537166,
          "liter_water_p_o_c": 48.21621611106081,
          "kilogram_waste_p_o_c": 0.888624532110034,
          "carbon_class": "A",
          "water_class": "A",
          "waste_class": "C",
          "green_class": "A",
          "status": true,
          "type": "green_stay_self_inspection_hero"
        }
      }
    ],
    "green_tracking": {
      "overview_opened": 1,
      "report_initiated": 0,
      "report_completed": 0,
      "info_viewed": 0,
      "status_viewed": 0,
      "report_error": 0,
      "benefits_viewed": 0,
      "cert_added": 0,
      "program_added": 0,
      "claim_opened": 0,
      "claim_failed": 0,
      "claim_completed": 0
    }
  },
  "reception_info": [
    "RECEPTION_24H",
    "MULTI_LINGUAL_PERSONAL_24H",
    "ENGLISH_SPEAKING_PERSONAL_BY_DAY",
    "ENGLISH_SPEAKING_PERSONAL_BY_NIGHT"
  ],
  "country_alpha2": "DE",
  "hrs_hotel": true,
  "address": {
    "company_name": {
      "locale": "en",
      "type": "ORIGINAL",
      "name": "Capri by Fraser Berlin",
      "language": "eng"
    },
    "country": "DEU",
    "zip_code": "10178",
    "city": "Berlin",
    "district": "Berlin",
    "locale": "de",
    "street": "Scharrenstraße 22",
    "language": "deu",
    "country_alpha2": "DE"
  },
  "hotel_offer": {
    "avg_offers": {
      "s_i_n_g_l_e_r_o_o_m": {
        "total_avail_count": 16,
        "artificial": false,
        "meal": {
          "meal": {
            "type": "BREAKFAST",
            "breakfast_type": "BUFFET",
            "price": {
              "amount": 19.5,
              "currency": "EUR"
            },
            "corporate_calculative_price": false,
            "meal_approval_status": "NONE"
          },
          "availability": "INCLUSIVE",
          "meal_varying": false
        },
        "offer_label": {
          "type": "NONE",
          "marketing_offer": false,
          "corporate_discount_possible": false
        },
        "price_per_night_and_room": {
          "amount": 150.0,
          "amount_net": 138.35,
          "currency": "EUR"
        },
        "was_price_per_night_and_room": {
          "amount": 150.0,
          "amount_net": 138.35,
          "currency": "EUR"
        },
        "price_per_night_and_room_including_breakfast": {
          "amount": 150.0,
          "amount_net": 138.35,
          "currency": "EUR"
        },
        "room_occupancies": [
          {
            "adults": [
              {
                "extra_bed": false
              }
            ]
          }
        ],
        "room_requests": [
          {
            "room_number": 1,
            "room_type": "SINGLEROOM",
            "occupancy": {
              "adults": [
                {
                  "extra_bed": false
                }
              ]
            },
            "optional": false
          }
        ],
        "room_type": "SINGLEROOM",
        "total_price": {
          "amount": 150.0,
          "amount_net": 138.35,
          "currency": "EUR"
        },
        "total_price_including_breakfast": {
          "amount": 150.0,
          "amount_net": 138.35,
          "currency": "EUR"
        },
        "company_rate": false,
        "corporate_club_rate": false,
        "loyalty_points": {
          "total_points": 150,
          "number_of_nights": 1,
          "number_of_loyalty_nights": 1,
          "points_per_night": 150.0,
          "points_per_loyalty_night": 150.0
        },
        "real_multibedroom": false
      }
    },
    "total_price": {
      "amount": 150.0,
      "amount_net": 138.35,
      "currency": "EUR"
    },
    "total_price_including_breakfast": {
      "amount": 150.0,
      "amount_net": 138.35,
      "currency": "EUR"
    },
    "hotel_id": 875998,
    "room_categories": [
      "SUPERIOR",
      "BUSINESS"
    ],
    "corporate_hotel": false,
    "total_avail_count": 16,
    "artificial": false,
    "contingented": "FALSE",
    "reservation_options": [
      "GUARANT_WITH_CREDIT_CARD"
    ],
    "standard_reservation_available": false,
    "crs_type": "HRS",
    "top_ranking_booster": 25.0,
    "tariff_type": "BASIC",
    "net_price": "FALSE",
    "real_multibedroom_consolidated": "FALSE",
    "business_traveller_prices": {
      "s_i_n_g_l_e_r_o_o_m": {
        "business_traveller_price": {
          "amount": 150.0,
          "amount_net": 138.35,
          "currency": "EUR"
        },
        "business_traveller_discount": 0.0,
        "business_traveller_price_per_night": {
          "amount": 150.0,
          "amount_net": 138.35,
          "currency": "EUR"
        },
        "business_traveller_discount_per_night": 0.0,
        "business_traveller_price_per_night_and_room": {
          "amount": 150.0,
          "amount_net": 138.35,
          "currency": "EUR"
        },
        "business_traveller_discount_per_night_and_room": 0.0
      }
    },
    "only_on_request_bookable": false,
    "incomplete": false,
    "company_rate_commission": false
  },
  "hotel_id": 875998,
  "geo_coordinate": {
    "latitude": 52.513894,
    "longitude": 13.405057
  },
  "from_url": "https://www.hrs.com/en/list?location=%2555133&orderBy=Recommendations&startDateDay=26&startDateMonth=5&startDateYear=2026&endDateDay=27&endDateMonth=5&endDateYear=2026&currency=EUR&rooms=1&numberOfAdults%5B0%5D=1&type%5B0%5D=SINGLEROOM&adults=1&children=0&singleRooms=1&doubleRooms=0"
}
```

Each hotel record contains 55+ fields grouped below:

#### Identity & Location

| Field | Meaning |
|---|---|
| `Hotel ID` | Unique HRS internal identifier |
| `Hotel Name` | Display name of the property |
| `Address` | Full formatted address string |
| `Street` | Street name and number |
| `City Name` | City where the hotel is located |
| `District Name` | Sub-city district or neighborhood |
| `Zip Code` | Postal code |
| `Country` | Full country name |
| `Country Alpha2` | ISO 2-letter country code (e.g., `DE`, `FR`) |
| `Location Name` | HRS location label for the search area |
| `Geo Coordinate` | Latitude/longitude for mapping |

#### Distances

| Field | Meaning |
|---|---|
| `Distance City Center` | Distance from city center (km) |
| `Distance Railway` | Distance to nearest train station |
| `Distance Airport` | Distance to nearest airport |

#### Ratings & Category

| Field | Meaning |
|---|---|
| `Average Rating` | Guest review score |
| `Hotel Category` | Star rating or category classification |
| `Hotel Quality Seal` | HRS quality certification flag |
| `Senior Comfort Seal` | Certified senior-friendly property |
| `China Friendly Seal` | Certified China-friendly property |
| `Clean And Safe Certifications` | Health & hygiene certification status |
| `Greenstay Amenity` | Sustainability/eco-friendly flag |

#### Amenities & Features

| Field | Meaning |
|---|---|
| `Feature Types` | Full list of amenity feature codes |
| `Parking Feature` | Parking availability flag |
| `No Smoking Feature` | Non-smoking policy flag |
| `Restaurant Feature` | On-site restaurant flag |
| `Internet Feature` | Wi-Fi/internet availability flag |
| `Free Gifts` | Complimentary perks or inclusions |
| `Number Of Conference Rooms` | Meeting/event room count |
| `Number Of Single Rooms` | Single room inventory count |
| `Number Of Double Rooms` | Double room inventory count |
| `Construction Year` | Year the property was built |

#### Chain & Brand

| Field | Meaning |
|---|---|
| `Chain ID` | Unique ID of the hotel chain |
| `Chain Name` | Name of the hotel chain (e.g., Marriott, IHG) |
| `Chain Hierarchy` | Chain group/sub-brand structure |
| `Brand ID` | Unique ID of the sub-brand |
| `Brand Name` | Sub-brand name |
| `CRS Type` | Central Reservation System type used |

#### Booking & Commercial

| Field | Meaning |
|---|---|
| `Hotel Offer` | Active rate or offer data for the searched dates |
| `Currency` | Currency used for pricing |
| `Payment Types` | Accepted payment methods |
| `BTC Pay Support` | Whether business travel card payment is supported |
| `BTC Pay Status` | Current BTC payment activation status |
| `Contactless Checkin Support` | Contactless check-in availability |
| `Hotel Contract Status` | Corporate contract status on HRS |
| `Preferred Hotel` | Flagged as preferred in a corporate program |
| `Hotel Types` | Classification (e.g., business, resort, boutique) |
| `Type Of Hotel Business` | Business model type |
| `Hotel Status` | Active/inactive listing status |

#### Additional Metadata

| Field | Meaning |
|---|---|
| `Thumbnail Picture` | URL of the hotel's primary image |
| `Hotel Location Info To` | Proximity description to key landmarks |
| `Reception Info` | Front desk hours and contact info |
| `HRS Hotel` | Whether directly managed by HRS |
| `Overlook Hotel` | Internal flag for display suppression |
| `Lo Fi` | Low-fidelity/fallback data mode flag |
| `Hotel Audit Data` | Internal audit record |
| `Hotel Audit Status Data` | Current audit status |

***

### How to Use

1. **Build your search URL** — Go to `hrs.com`, search by city/location, set dates, room type, and currency, then copy the full URL.
2. **Paste into `urls`** — Add one or more search URLs to the array. Use bulk edit for multiple cities.
3. **Set item limit** — Increase `max_items_per_url` to `200` or more for comprehensive results.
4. **Enable failure tolerance** — Keep `ignore_url_failures: true` for multi-URL runs.
5. **Run and export** — Download results as JSON, CSV, or Excel.

**Tips:**

- Each unique search (different city, dates, or room type) requires its own URL.
- To compare weekend vs. weekday rates, run separate URLs with different date parameters.
- If results seem truncated, verify the location code in the URL is correct for your target city.

***

### Use Cases & Business Value

- **Corporate procurement:** Audit hotel supply and contract coverage across key travel destinations
- **Rate benchmarking:** Compare hotel pricing across cities and room types for policy-setting
- **Market mapping:** Visualize hotel density, chain presence, and amenity distribution using geo coordinates
- **Travel tech:** Populate hotel databases or recommendation engines with structured property data

***

### Conclusion

The **HRS.com Hotel Search Scraper** turns search result pages into structured, analysis-ready datasets — covering everything from geo coordinates and star ratings to chain affiliations and contactless check-in support. Whether you're running a procurement review or building a travel intelligence dashboard, this scraper delivers the depth and breadth of data HRS offers, without the manual effort.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the hotels list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.hrs.com/en/list?location=%2555133&orderBy=Recommendations&startDateDay=26&startDateMonth=5&startDateYear=2026&endDateDay=27&endDateMonth=5&endDateYear=2026&currency=EUR&rooms=1&numberOfAdults%5B0%5D=1&type%5B0%5D=SINGLEROOM&adults=1&children=0&singleRooms=1&doubleRooms=0"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# 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 = {
    "urls": [
        "https://www.hrs.com/en/list?location=%2555133&orderBy=Recommendations&startDateDay=26&startDateMonth=5&startDateYear=2026&endDateDay=27&endDateMonth=5&endDateYear=2026&currency=EUR&rooms=1&numberOfAdults%5B0%5D=1&type%5B0%5D=SINGLEROOM&adults=1&children=0&singleRooms=1&doubleRooms=0"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/hrs-hotels-search-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 = {
    "urls": ["https://www.hrs.com/en/list?location=%2555133&orderBy=Recommendations&startDateDay=26&startDateMonth=5&startDateYear=2026&endDateDay=27&endDateMonth=5&endDateYear=2026&currency=EUR&rooms=1&numberOfAdults%5B0%5D=1&type%5B0%5D=SINGLEROOM&adults=1&children=0&singleRooms=1&doubleRooms=0"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/hrs-hotels-search-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 '{
  "urls": [
    "https://www.hrs.com/en/list?location=%2555133&orderBy=Recommendations&startDateDay=26&startDateMonth=5&startDateYear=2026&endDateDay=27&endDateMonth=5&endDateYear=2026&currency=EUR&rooms=1&numberOfAdults%5B0%5D=1&type%5B0%5D=SINGLEROOM&adults=1&children=0&singleRooms=1&doubleRooms=0"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/hrs-hotels-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Hrs Hotels Search Scraper",
        "description": "Scrape hotel search results from HRS.com including names, locations, ratings, amenities, room types, pricing, and 55+ structured fields. Perfect for travel analysts, procurement teams, and hospitality researchers needing bulk hotel data.",
        "version": "0.0",
        "x-build-id": "wyhRCicIdSc21v0nt"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~hrs-hotels-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-hrs-hotels-search-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/stealth_mode~hrs-hotels-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-hrs-hotels-search-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/stealth_mode~hrs-hotels-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-hrs-hotels-search-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": {
                    "urls": {
                        "title": "URLs of the hotels list urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the hotels list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
