Skip to content

HRS Hotel Rates Scraper

Try for free

Hotel rates from HRS (hrs.com, hrs.de): the lowest bookable price per hotel for every check-in date, length of stay and guest count, with taxes, breakfast and rate type. Also search every hotel in a city. No login needed.

🏨 HRS Hotel Rates Scraper

Get hotel rates from HRS (hrs.com and hrs.de) for rate shopping and price monitoring. You get the lowest bookable price of every hotel for every check-in date, length of stay and guest count you choose, with taxes and fees, breakfast and the rate type. Paste HRS hotel links or ids, or search a whole city. Rates cost from $1.70 per 1,000 rows, with platform usage included, and no login is needed.

Runs are fast because no browser is used. One HRS search prices up to 200 hotels at once, so a year of dates for hundreds of hotels finishes in minutes.

✨ Why use HRS Hotel Rates Scraper?

  • 📅 Rate calendar in one run: price every check-in day in a range (for example 365 days), several lengths of stay and several guest counts at once.
  • 🏨 Thousands of hotels per run: HRS prices up to 200 hotels per request, so large rate-shopping sets stay quick.
  • 💶 Full price breakdown: total stay price, price per night, price before taxes, taxes and fees, and the price with breakfast.
  • 🍳 Rate details: room type, rate type (flex, basic, hot deal), breakfast included or extra, earlier price and the booking source.
  • 🚫 Sold-out stays are kept: a stay without a bookable offer still gets a row with available: false and the reason, so every lookup is accounted for.
  • 🌍 25 currencies: prices converted with HRS's own exchange rates, or left in the hotel's currency.

🎯 Use cases

  • 📊 Rate shopping for hotels: track your own and your competitors' HRS prices for every arrival day of the year.
  • 📈 Revenue management: feed daily HRS rates by length of stay and occupancy into pricing tools.
  • 🧳 Corporate travel: compare business-hotel rates in a city for planned trip dates.
  • 🔍 Parity checks: see which rate type and price HRS shows for a hotel on a given day.
  • 🗺️ Market research: list every HRS hotel in a city with stars, rating, chain and price for your dates.

🚀 How to use

  1. Paste Hotels (HRS hotel links such as https://www.hrs.com/en/hotel/572146, or plain ids), or type Cities or places such as Berlin.
  2. Choose the First check-in date and either a Last check-in date or a Number of check-in dates.
  3. Set Lengths of stay (nights) and Guests (adults per room), for example [1, 3, 7] and [1, 2].
  4. Optionally choose a Currency.
  5. Click Start, then download the rows as JSON, CSV or Excel, or read them through the API.

📥 Input

FieldTypeDescription
hotelsarrayHRS hotel URLs or ids. Every hotel is priced for every date, stay and guest count.
locationsarrayCities or regions (Berlin), or a point as latitude,longitude. Every HRS hotel there is priced.
checkInFromstringFirst check-in date, YYYY-MM-DD. Empty: today.
checkInTostringLast check-in date, included.
numberOfDatesintegerInstead of a last date: how many check-in days in a row, e.g. 365.
checkInDatesarrayExtra single check-in dates.
lengthsOfStayarrayNights per stay, e.g. [1, 3]. Default [1].
adultsarrayAdults per room, e.g. [1, 2]. Default [2]. 1 adult is priced as a single room.
currencystringConvert prices, e.g. USD. Empty: the hotel's own currency.
includeUnavailablebooleanKeep sold-out stays as rows (default on).
includeHotelDetailsbooleanAdd address, stars, rating, chain, coordinates and picture (default on).
radiusKm, maxHotelsPerLocationnumberArea and number of hotels for city searches.
{
  "hotels": ["https://www.hrs.com/en/hotel/572146", "393", "875998"],
  "checkInFrom": "2026-12-01",
  "numberOfDates": 30,
  "lengthsOfStay": [1, 3],
  "adults": [1, 2],
  "currency": "EUR"
}

That input saves 3 hotels × 30 dates × 2 stays × 2 guest counts = 360 rows.

📤 Output

One row per hotel × check-in date × length of stay × guest count.

FieldDescription
hotelId, hotelName, hotelUrlThe HRS hotel.
checkIn, checkOut, nights, adults, roomsThe stay that was priced.
available, unavailableReasonWhether HRS has a bookable offer, and why not.
totalPrice, pricePerNight, currencyLowest bookable price for the whole stay and per night.
totalPriceExclTaxes, taxesAndFeesPrice before taxes and the taxes and fees HRS includes.
board, breakfastIncluded, breakfastType, breakfastPricePerPerson, totalPriceWithBreakfastBreakfast details.
roomType, roomCategories, rateType, offerLabel, wasTotalPrice, payNow, providerRoom and rate details of the offer.
stars, rating, reviewCount, street, zipCode, city, district, country, latitude, longitude, chain, brand, imageUrlHotel details (turn off with includeHotelDetails).
searchInputThe city or place a row came from (city searches only).
fetchedAtWhen the price was read (UTC).

A trimmed row from a real run:

{
  "hotelId": 875998,
  "hotelName": "Capri by Fraser Berlin",
  "hotelUrl": "https://www.hrs.com/en/hotel/875998",
  "stars": 4,
  "rating": 9.4,
  "city": "Berlin",
  "country": "DE",
  "checkIn": "2026-12-01",
  "checkOut": "2026-12-02",
  "nights": 1,
  "adults": 2,
  "rooms": 1,
  "available": true,
  "roomType": "DOUBLEROOM",
  "rateType": "BASIC",
  "board": "Breakfast included",
  "breakfastType": "Buffet",
  "breakfastIncluded": true,
  "pricePerNight": 235,
  "totalPrice": 235,
  "totalPriceExclTaxes": 215.95,
  "taxesAndFees": 19.05,
  "currency": "EUR",
  "provider": "HRS",
  "unavailableReason": null,
  "fetchedAt": "2026-11-10T15:00:44Z"
}

💰 Pricing

You pay per saved rate row, and platform usage is included:

PlanPrice per 1,000 rows
Free$3.40
Starter$2.55
Scale$2.13
Business$1.70

Example: 100 hotels × 365 check-in dates × 1 stay × 1 guest count = 36,500 rows, which is about $62 on Business or $124 on Free. Sold-out rows count as rows; turn off Include sold-out stays to pay only for bookable rates.

❓ FAQ

Do I need an HRS account or a proxy? No. The actor reads the public HRS hotel search that anyone can use without logging in, through the default Scrape.ly datacenter proxy.

Which price do I get? The lowest bookable offer HRS shows on its result list for that hotel, stay and guest count, for one room. It comes from the same hotel search HRS uses for its own result list.

How many hotels and dates can I ask for? As many as you like. Large inputs are split into HRS searches of 200 hotels and run in parallel. For very large jobs raise the run timeout.

Why are some rows available: false? HRS had no bookable room for that stay and guest count (for example sold out, or no room for 3 or more adults), or the hotel's booking system did not answer. The reason is in unavailableReason.

Can I schedule it or use the API? Yes. Schedule the actor daily for rate monitoring, or start it from the Scrape.ly API and read the dataset as JSON or CSV.

Is it legal? The actor collects publicly visible hotel prices and hotel facts, and no personal data. Check the rules that apply to your use.

⚠️ Limits

  • One room per stay, 1 to 6 adults, no children. Stays for 3 or more adults are bookable only at hotels that have such rooms.
  • Only the lowest offer per hotel and stay, not every room and rate of the hotel.
  • A city search returns at most 1,000 hotels per date and stay, because HRS stops there. Use hotel ids for larger sets.
  • Check-in dates must be today or later; dates in the past are skipped. In our tests, check-in dates 13 or more months ahead had no offers yet, and long stays of several weeks have fewer offers.
  • Cancellation terms are shown only as the rate type (FLEX, BASIC, HOT_DEAL); HRS's search does not return the full cancellation text.

Related actors

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes.

No credit card. No setup calls.