Hotel & Stay Price Comparison
Pricing
from $4.25 / 1,000 rooms
Hotel & Stay Price Comparison
Compares bookable hotels and stays with totalStayPrice, pricePerNight, amenities, rating, reviewCount, and bookingUrl.
Pricing
from $4.25 / 1,000 rooms
Rating
0.0
(0)
Developer
Trove Vault
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Hotel & Stay Price Comparison helps travel planners, revenue teams, event organizers, and relocation researchers compare public hotel and stay options for a destination and date range. Give it a city or destination, check-in and check-out dates, guest count, room count, budget filters, and amenity requirements. It returns one dataset row per stay option with buyer-facing fields such as propertyName, accommodationType, totalStayPrice, pricePerNight, currency, bookingUrl, rating, reviewCount, amenities, and missingRequestedAmenities.
Use it when you need a structured short list of bookable accommodation options instead of manually checking travel pages and copying prices into spreadsheets. The actor is designed for comparison, monitoring, and workflow automation, not for final checkout confirmation.
Why use this actor
- Compare hotel-style and short-term-rental-style options in one Apify dataset.
- Prioritize stays by total trip cost, nightly price, rating, review count, and amenity fit.
- Keep booking links in the output so each option can be inspected before purchase.
- Flag missing requested amenities instead of forcing manual page review.
- Append results to an existing dataset with
datasetIdfor recurring travel or relocation tracking. - Pass
runIdthrough the output when this actor is part of a larger TroveVault pipeline.
What it extracts
Each stay row can include:
| Field | Meaning |
|---|---|
propertyName | Accommodation name visible on the public booking page. |
accommodationType | Normalized type such as hotel, aparthotel, guesthouse, or short-term-rental-style stay. |
totalStayPrice | Total stay price when the actor can detect a trustworthy value. |
pricePerNight | Nightly price derived from total price and stay length when trustworthy. |
currency | Requested or detected currency. |
bookingUrl | Public booking URL for manual inspection or booking. |
rating / reviewCount | Public rating and review count when visible. |
amenities | Normalized amenities detected from public page text. |
missingRequestedAmenities | Required amenities that were not detected. |
cancellationSignal / breakfastSignal | Visible policy or meal signals when available. |
roomFit | Basic signal for guest and room fit. |
The actor also writes run-level diagnostics to RUN_SUMMARY, including coverage and limitations for the run.
Use cases
- Business travel sourcing: shortlist hotels under a maximum total stay budget and export rows to a travel approval sheet.
- Conference and event planning: compare options around a city for a fixed date range and identify stays missing required amenities.
- Relocation research: monitor available apartments, aparthotels, guesthouses, and hotel options in a target city.
- Travel deal tracking: schedule recurring runs for the same destination and compare
totalStayPrice,rating, andreviewCountover time. - Marketplace enrichment: feed normalized accommodation rows into internal dashboards, BI tools, or recommendation workflows.
How to use it
- Enter the destination, for example
Lisbon, Portugal. - Set
checkIn,checkOut,guests, androoms. - Optionally choose accommodation types, currency, maximum total price, and amenities.
- Start the actor and review the
Stay Optionsdataset view. - Open
bookingUrlfor any stay that looks promising before booking.
Input example
{"destination": "Lisbon, Portugal","checkIn": "2026-09-12","checkOut": "2026-09-15","guests": 2,"rooms": 1,"accommodationTypes": ["hotel", "aparthotel", "guesthouse", "short_term_rental"],"maxTotalPrice": 1000,"currency": "EUR","requiredAmenities": ["wifi"],"preferredAmenities": ["breakfast", "workspace"],"maxResults": 25,"runId": "lisbon-september-shortlist"}
Input reference
| Field | Required | Description |
|---|---|---|
destination | Yes | City, area, or destination to search. Include the country when possible. |
checkIn / checkOut | Yes | Stay dates in YYYY-MM-DD format. |
guests | Yes | Number of guests. |
rooms | Yes | Number of rooms. |
accommodationTypes | No | Types to include, such as hotel, aparthotel, guesthouse, or short-term-rental-style stays. |
maxTotalPrice | No | Optional budget cap for the whole stay. |
currency | No | Preferred currency such as EUR, USD, or GBP. |
requiredAmenities | No | Amenities that should be checked and reported in missingRequestedAmenities. |
preferredAmenities | No | Amenities used for comparison and review. |
maxResults | No | Maximum number of stay rows to return. |
datasetId | No | Existing dataset to append rows into. |
runId | No | Your own workflow identifier copied into run metadata. |
Output example
{"propertyName": "Alameda Prime Suites","accommodationType": "hotel","totalStayPrice": 287,"pricePerNight": 95.67,"currency": "EUR","bookingUrl": "https://www.booking.com/hotel/pt/alameda-prime-suites.html","rating": 9.3,"reviewCount": 11,"amenities": ["wifi", "air_conditioning", "pool", "breakfast", "workspace", "family_friendly"],"missingRequestedAmenities": [],"cancellationSignal": "cancellation_policy_visible","breakfastSignal": "breakfast_available","roomFit": "standard_room_search","destination": "Lisbon, Portugal","checkIn": "2026-09-12","checkOut": "2026-09-15","guests": 2,"rooms": 1,"scrapedAt": "2026-06-22T17:45:48.710Z"}
API usage
curl -X POST "https://api.apify.com/v2/acts/trovevault~hotel-stay-price-comparison/runs" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"destination": "Lisbon, Portugal","checkIn": "2026-09-12","checkOut": "2026-09-15","guests": 2,"rooms": 1,"accommodationTypes": ["hotel", "aparthotel", "guesthouse", "short_term_rental"],"currency": "EUR","maxResults": 25}'
Limitations
- Prices are public-page signals, not final checkout quotes. Taxes, fees, discounts, and availability can change before booking.
- Some public accommodation pages challenge automated sessions, change markup, localize content, or hide fees until later checkout steps.
totalStayPriceandpricePerNightare returned asnullwhen the actor cannot detect a trustworthy price.- Amenities are normalized from visible text and should be verified on the booking page before purchase.
- Short-term rentals are included only when public booking pages expose apartment, studio, villa, home, or similar stay listings in the same accommodation search flow.
- The actor does not log in, bypass access controls, or guarantee full market coverage.
Troubleshooting
| Problem | What to try |
|---|---|
| No rows returned | Use a broader destination, increase maxResults, remove strict budget or amenity filters, and confirm the date range is valid. |
Prices are null | Public pages may have hidden or ambiguous pricing. Open bookingUrl and inspect the current checkout page. |
| Too many options miss an amenity | Check that the amenity name is common and visible in public listing text. Try a simpler term such as wifi or breakfast. |
| Results are outside the expected area | Include country or region in destination, for example Porto, Portugal rather than Porto. |
| Run is slow or blocked | Lower maxResults, retry later, or enable Apify Proxy if public pages are challenging datacenter traffic. |
FAQ
Does this actor book rooms automatically?
No. It returns public stay options and booking links for human review.
Can I use it for short-term rentals?
Yes, when those stays appear as public accommodation types in the same search flow. It is not a separate Airbnb integration.
Which price should I use?
Use totalStayPrice for trip budgeting because it reflects the full stay when trustworthy. Use pricePerNight for cross-stay comparison.
Why are some fields null?
A field is null when the public page did not expose a value clearly enough to parse without guessing.
Can I schedule this actor?
Yes. Schedule repeated runs and use datasetId if you want to append comparable rows into a long-lived dataset.
Is this suitable for final purchasing decisions?
Use it for shortlist and monitoring workflows. Always verify current price, fees, cancellation terms, and availability on the booking page.
Does it expose source diagnostics in the dataset?
No. Operational diagnostics stay in logs and RUN_SUMMARY so the buyer-facing table remains clean.
Related actors
- Remote Work Hub Market Analyzer for comparing cities as remote-work destinations.
- Sustainable Travel Certification Tracker for accommodation sustainability signals.
- Conference Events Scout for event and travel planning workflows.
Changelog
- 0.1: Booking-based hotel and stay comparison with total price, nightly price, amenity matching, rating, review count, booking URL,
datasetId, andrunIdsupport.
Feedback and support
Open an issue on the actor page with the input JSON, run ID, expected destination, and a short description of the missing or incorrect result.