Booking Price Monitor · Hotel Rate Tracker avatar

Booking Price Monitor · Hotel Rate Tracker

Pricing

from $2.49 / 1,000 hotel price retrieveds

Go to Apify Store
Booking Price Monitor · Hotel Rate Tracker

Booking Price Monitor · Hotel Rate Tracker

Track hotel market rates on Booking.com. Paste a city search URL — get avg, min, max prices per property, discount %, promo flags and free cancellation across 5 upcoming periods. No login.

Pricing

from $2.49 / 1,000 hotel price retrieveds

Rating

0.0

(0)

Developer

Corentin Robert

Corentin Robert

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

a day ago

Last modified

Share

Track hotel prices across any Booking.com market. Paste a city search URL — get avg, min, max rates per property across 15 date windows (3 stay durations × 5 upcoming periods) with automatic discount detection.

No login. No API key. No account required.


Who is this for?

You are…Typical goalSuggested setup
STR / hotel revenue managerBenchmark your property against the market for coming monthsCity search URL with your star/type filters
Property management agencyWeekly pricing report for client portfolios across multiple citiesOne URL per market · schedule every Monday
Real estate investorValidate projected hotel revenues before purchaseCity URL with price range filter · run once
Travel agency / OTA analystMonitor seasonal rate trends and discount windowsCity URL · review windowSummary in run log
Data analyst / BI teamFeed price time-series into a dashboardAPI integration · flat-prices view
Competitive intelligence teamTrack competitor pricing by stars, type, or neighbourhoodFiltered Booking.com URL with your criteria

What you get by default — property name, star rating, review score, coordinates, avg/min/max nightly rate for 1-night, 2-night, and 7-night stays, weekly discount %, max discount %, promo badge detection, free cancellation flag, pay-on-arrival flag, and a full priceByWindow[] array (one entry per date/duration combination).

Coverage: runs 15 search configurations per URL — 3 stay durations (1N, 2N, 7N) × 5 date windows (J+7, J+14, J+30, J+60, J+90 from today). Properties that only appear for specific stay durations are captured automatically.


Quick start

  1. Open the Actor in Apify Console and click Try for free
  2. Go to booking.com, search for a city, apply any filters you want (stars, property type, neighbourhood…), and copy the URL from your browser
  3. Paste it in the Booking.com search URL(s) field
  4. Click Start — results appear in the Dataset tab within a few minutes
  5. Use the Overview view to compare properties side by side, or Flat prices for a date-by-date spreadsheet

Tip: Your filters (guest count, star rating, property type, neighbourhood…) are automatically preserved in the search.


What it extracts

Per property

FieldDescription
propertyNameProperty display name
propertyUrlDirect link to the Booking.com property page
cityCity
starRatingStar rating (1–5)
ratingGuest review score (e.g. 8.4)
reviewCountNumber of reviews
latitude / longitudeGPS coordinates
distanceFromCenterDistance from city centre (e.g. "1.8 km from centre")
currencyISO currency code (e.g. EUR, USD)
avgPrice1N / minPrice1N / maxPrice1NAvg / min / max nightly rate across all 1-night windows
avgPrice2N / minPrice2N / maxPrice2NSame for 2-night stays
avgPrice7N / minPrice7N / maxPrice7NSame for 7-night stays
weeklyDiscountPct% cheaper per night for 7-night vs 1-night stays
maxDiscountPctLargest discount detected across all windows (vs original price)
hasPromoPromo badge detected (e.g. "Limited Time Deal")
freeCancellationFree cancellation available on at least one window
noPrepaymentPay on arrival available on at least one window
priceSamplesNumber of date/duration windows where a price was found
priceByWindow[]Array — one entry per (checkin, checkout, nights) configuration
scrapedAtISO timestamp of the run

priceByWindow array entry

FieldDescription
checkinCheck-in date (YYYY-MM-DD)
checkoutCheck-out date
nightsStay duration (1, 2, or 7)
pricePerNightPrice per night for this window
totalPriceTotal stay price
discountPct% discount vs original price (0 if no discount)
hasPromoFlagPromo badge present for this specific window
currencyCurrency for this window

Market summary (in run log)

At the end of each market scan, the run log prints:

─── Market Summary ──────────────────────────────────────────────────────────────
Properties with prices : 743/743
Free cancellation : 49%
With active discount : 31%
With promo badge : 23%
Avg price by check-in date (2-night stays):
2026-06-19: 403 EUR/night (743 properties)
2026-06-26: 385 EUR/night (692 properties)
2026-07-12: 391 EUR/night (678 properties)
2026-08-11: 420 EUR/night (621 properties)
2026-09-10: 372 EUR/night (589 properties)
────────────────────────────────────────────────────────────────────────────────

Input

ParameterTypeDefaultDescription
searchUrlsarrayBooking.com search URLs. Paste one or more.
maxPropertiesnumber0Max properties per URL. 0 = no cap (up to ~930, Booking.com backend limit). API-only.
verboseLogsbooleanfalseLog per-page debug details. API-only.

Input examples

Monitor a city market:

{
"searchUrls": ["https://www.booking.com/searchresults.html?ss=Barcelona%2C+Spain"]
}

Monitor multiple cities at once:

{
"searchUrls": [
"https://www.booking.com/searchresults.html?ss=Paris%2C+France",
"https://www.booking.com/searchresults.html?ss=Lisbon%2C+Portugal"
]
}

Monitor 4-star hotels only (with star filter applied on Booking.com):

{
"searchUrls": ["https://www.booking.com/searchresults.html?ss=Rome%2C+Italy&nflt=class%3D4"]
}

How it works

  1. URL parsing — extracts destination, guest count, and all filters from the pasted URL
  2. Date window generation — builds 15 configurations: 1N/2N/7N stays × J+7/J+14/J+30/J+60/J+90 from today
  3. GraphQL fetch — calls Booking.com's internal /dml/graphql endpoint (HTTP-only, no browser needed) for each configuration with full pagination
  4. Deduplication — properties found across multiple windows are merged by pageName
  5. Aggregation — computes avg/min/max per stay duration, weekly discount, max discount, promo flag
  6. Dataset push — one row per property; market summary printed to run log

Why 3 stay durations? Booking.com returns different property sets depending on stay length — a property with a 3-night minimum stay is invisible in 1-night searches. Running all three durations guarantees maximum market coverage.


Data quality — what priceSamples means

A property only appears in a search window when it is available and priced for those exact dates. A fully-booked hotel for the next month appears in fewer windows.

priceSamplesInterpretation
1–3Limited availability — appeared in few windows
4–9Good coverage across date windows
10–15Available across all or most windows

For deep per-date analysis, see the Flat prices dataset view.


Output sample

{
"propertyName": "Saphir Grenelle",
"propertyUrl": "https://www.booking.com/hotel/fr/saphirgrenelle.html",
"city": "Paris",
"starRating": 3,
"rating": 7.2,
"reviewCount": 1720,
"latitude": 48.8484,
"longitude": 2.2971,
"distanceFromCenter": "4.1 km from centre",
"currency": "EUR",
"avgPrice1N": 173.9,
"minPrice1N": 140.66,
"maxPrice1N": 197.36,
"avgPrice2N": 179.81,
"minPrice2N": 144.71,
"maxPrice2N": 205.46,
"avgPrice7N": 209.7,
"minPrice7N": 196.2,
"maxPrice7N": 223.2,
"weeklyDiscountPct": 0,
"maxDiscountPct": 0,
"hasPromo": false,
"freeCancellation": false,
"noPrepayment": false,
"priceSamples": 11,
"scrapedAt": "2026-06-13T09:48:01.831Z",
"priceByWindow": [
{ "checkin": "2026-06-19", "checkout": "2026-06-20", "nights": 1, "pricePerNight": 197.36, "totalPrice": 197.36, "discountPct": 0, "hasPromoFlag": false, "currency": "EUR" },
{ "checkin": "2026-06-19", "checkout": "2026-06-21", "nights": 2, "pricePerNight": 205.46, "totalPrice": 410.92, "discountPct": 0, "hasPromoFlag": false, "currency": "EUR" },
{ "checkin": "2026-06-19", "checkout": "2026-06-26", "nights": 7, "pricePerNight": 223.2, "totalPrice": 1562.42, "discountPct": 0, "hasPromoFlag": false, "currency": "EUR" }
]
}

Dataset views

ViewBest for
OverviewComparing properties side by side — avg prices, discounts, promo flags
Flat pricesDate-level analysis, pivot tables, Excel / Sheets import

Performance and cost

ScenarioPropertiesTime (Apify cloud)
Paris full market (5 windows × 3 durations)~740~20 s
Marbella, Spain~300~10 s
3 cities in one run~2,000~60 s

Runs are HTTP-only (no browser) — 256 MB memory, high concurrency.

No residential proxy needed — Booking.com's GraphQL endpoint is not gated by the HTML WAF. The actor works reliably without any proxy configuration.


Set up automated weekly monitoring

Most users run this actor on a schedule — once a week per city — and store results over time to track price trends.

Step-by-step in Apify Console:

  1. Open the Actor and click Schedule (top right)
  2. Set the frequency — every Monday at 08:00 is the most common for weekly reports
  3. Paste your search URL(s) in the input
  4. Save — the actor will run automatically and push data to the same dataset each time

Track trends across runs with the API:

Each run appends to the default dataset. Query it via the Apify API and filter by scrapedAt to build a time-series:

$curl "https://api.apify.com/v2/datasets/{datasetId}/items?token={token}&fields=propertyName,avgPrice1N,scrapedAt"

Tip: use the flat-prices dataset view to get one row per property per date window — ideal for feeding directly into Excel, Google Sheets, or a BI tool.


How much does it cost?

You pay per hotel row successfully written to the dataset. Properties with no price are never billed.

PlanPrice per property
FREE$0.00399
BRONZE$0.00349
SILVER$0.00299
GOLD$0.00249
PLATINUM / DIAMOND$0.00199

Plus a one-time $0.05 actor start charge (same across all plans).

Typical cost

ScenarioPropertiesFREEBRONZEGOLD
Test run — Paris, 50 properties50~$0.25~$0.22~$0.17
Full city scan — Paris~740~$3.00~$2.63~$1.89
Full city scan — Marbella~300~$1.25~$1.10~$0.80
3 cities in one run~2,000~$8.03~$7.03~$5.05

All figures include the $0.05 actor-start charge.


This Actor only accesses data that Booking.com makes publicly available on its search results pages — property names, star ratings, review scores, publicly listed prices, and publicly visible policies (free cancellation, etc.). No login, account, or credentials are required or used.

As with any data, ensure your use complies with applicable regulations, including GDPR where personal data may be involved.


Local development

npm install
# Edit storage/key_value_stores/default/INPUT.json with your test URLs
node src/main.js

Or use the Apify CLI:

$apify run

Also available


Support

Custom scraper or tailored automation? Contact corentin@outreacher.fr.