Hotel Rate Monitoring API avatar

Hotel Rate Monitoring API

Pricing

from $0.01 / 1,000 results

Go to Apify Store
Hotel Rate Monitoring API

Hotel Rate Monitoring API

Hotel rate monitoring: track competitor hotel prices over time and get clean JSON datasets for revenue management and market analysis.

Pricing

from $0.01 / 1,000 results

Rating

0.0

(0)

Developer

Travel Monitor Lab

Travel Monitor Lab

Maintained by Community

Actor stats

1

Bookmarked

6

Total users

2

Monthly active users

11 hours ago

Last modified

Security

Limited permissions

Share

Hotel Rate Monitoring — Published Luxembourg Rates

Collect verifiable published hotel room-rate ranges from official Visit Luxembourg pages. The Actor stores the exact source URL, fetch timestamp and HTML SHA-256 for every hotel card, then exposes the same real records through a worker dataset, Standby API, CSV, Markdown and delivery bundles.

Important: these are published minimum/maximum rates, not live availability, date-specific quotes or Booking.com parity data. The source supplies no dates or occupancy for these labels. Currency defaults to EUR for the default Luxembourg pages and is explicitly marked as an Actor input because the labels do not repeat it.

Verified default target

The default input measures two public hotel pages in Mersch, Luxembourg:

  • Hotel Martha — official Visit Luxembourg page publishes double-room labels 151–195 and other room ranges.
  • Hostellerie Val Fleuri — official page publishes a double-room label of 108 and single/triple ranges.

Values are extracted from the live HTML on every run. Source anomalies are preserved and flagged rather than silently corrected.

Quick start

  1. Keep the two default sourceUrls, destination as Mersch, Luxembourg, and currency as EUR.
  2. Use serviceMode: auto and persistArtifacts: true.
  3. A standard run finishes with one hotel card per source in the dataset plus SUMMARY and BUNDLE records.
  4. In Standby, the same default starts the HTTP API. Call /health, then /travel/opportunities/feed.
  5. Add or replace sources only with HTTPS hotel pages on visitluxembourg.com containing supported English or German rate labels.

Output

Each dataset item contains:

  • hotelName, configured destination, source address.
  • rates: room type, minimum, maximum, exact source labels and sourceAnomaly.
  • rateType: published-min-max and isDateSpecific: false.
  • sourceName, sourceUrl, fetchedAt, httpStatus and contentSha256.
  • priceBasis and currencySource limitations.

The feed is ordered by the lowest published double-room minimum. It contains no invented market leader, booking gap or opportunity score. Legacy min_score and tier query parameters are listed in legacyFiltersIgnored because they do not apply to published rate ranges.

Standby endpoints

RouteReal output
/healthService state, hotel count, source errors and rate type
/readinessReadiness and explicit liveAvailability: false
/travel/opportunities/feedSource-backed hotel feed; limit supported
/travel/opportunities/topSame feed ordered by published double minimum
/travel/reports/top-opportunitiesMeasurement summary and limitations
/travel/opportunities/feed/export.csvOne row per hotel and room type
/travel/reports/top-opportunities/export.mdMarkdown table with source links and hashes
/travel/delivery/bundleRecords, feed, report and source manifest
/travel/plansAccess model and monitoring scope
/travel/product/offersAvailable export surfaces and limitations

Add ?include_inline=1 to the bundle route to embed CSV and Markdown. Apify token authentication is handled by the Standby runtime.

Optional webhook delivery

Set externalDeliveryMode to webhook, provide an HTTPS externalDeliveryWebhookUrl, and optionally an externalDeliveryBearerToken. The bundle is sent once after source collection with a deterministic Idempotency-Key. Enable inline exports only when needed. externalDeliveryRequired fails the run if delivery fails. The bearer token is replaced with REDACTED in the stored INPUT before delivery.

Scope and reliability

  • Only the intended public Visit Luxembourg hotel source is accepted; arbitrary URLs and local-network targets are rejected.
  • A page without supported rates produces an explicit source error. If every source fails, the run fails.
  • A partial run preserves successful cards and reports the failed URLs.
  • This Actor does not claim real-time rates, room availability, taxes, cancellation terms or occupancy.
  • Apify charges according to the current Store pay-per-event pricing; no additional provider key is required.

Development

Run the local suite with python -m unittest discover -s tests -v. Tests cover English and German labels, source anomalies, feed honesty, exports and source-URL restrictions.