Apify hotel price monitoring
Skill johnisanerd/claude-skill-hotel-price-monitoring/apify-hotel-price-monitoring
Claude/agent skill: scheduled hotel rate snapshots for rate drop alerts and competitor watching. Installs via npx skills add.
npx -y skills add johnisanerd/claude-skill-hotel-price-monitoring --skill apify-hotel-price-monitoringAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
3 things to look at
- 19 days oldThe repository was created 19 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Run hotel price monitoring on Google Hotels with the Apify Google Hotels Search Scraper Actor (johnvc/google-hotels-search-scraper). Poll the same destination and stay dates on a schedule, snapshot rate_per_night and total_rate per property with numeric extracted values, then diff snapshots keyed on property_token to alert on drops, watch competitor hotel rates, or chart how prices move as the stay date approaches. Use when the user wants hotel price monitoring, wants to track or watch hotel prices over time, monitor competitor hotel rates for a property or market, build a rate drop alert pipeline, or asks whether hotel prices go down closer to the date. Pay-per-page billing plus a small per-run setup fee, MCP-ready for Claude and other AI agents.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
7.6 KB, ~1.7k tokens by cl100k_base, as published. Nobody here has run it
Hotel Price Monitoring: Rate Snapshots From Google Hotels
Turn Google Hotels into a hotel price monitor. Each poll takes a destination and stay dates and returns every listed property with numeric nightly and total rates. Snapshot the run, diff it against the last one on property_token, and you have rate-drop alerts, competitor rate watching, or a price history for one market.
When to use this skill
- The user wants hotel price monitoring for a destination, a set of stay dates, or specific properties.
- They want to watch competitor hotel rates (a hotelier checking the market around their property).
- They want alerts when a rate drops below a threshold before a trip or an event.
- They ask "do hotel prices go down closer to the date": monitor the same stay across days and answer with data.
Not for: one-off exports of a single search (use the scrape-hotel-prices skill), booking or reservations (the Actor is read-only), or flight fare tracking (use the Google Flights Data Scraper).
What each snapshot returns (one object per results page)
Each dataset item is a page of results with search_metadata (total_results, properties_count, pages_processed, pagination_limit_reached) and a properties array. Per property: name, type, rate_per_night and total_rate (display lowest plus numeric extracted_lowest and before-tax variants), overall_rating, reviews count, amenities, gps_coordinates, check_in_time, check_out_time, and property_token, the stable key you diff on. When present: hotel_class, location_rating, deal plus deal_description, a per-vendor prices array with cancellation flags, and a reviews_breakdown by topic. Sponsored listings arrive separately in ads.
Prerequisites
- Apify account (sign up at https://apify.com?fpr=9n7kx3&fp_sid=skillrepo).
- Authentication via
apify login, or anAPIFY_TOKENenvironment variable (Apify Console, Settings, Integrations).
The Actor
- Store page: https://apify.com/johnvc/google-hotels-search-scraper?fpr=9n7kx3&fp_sid=skillrepo
- Actor ID:
johnvc/google-hotels-search-scraper - Pricing: pay per page of results processed plus a small per-run setup fee (see
references/gotchas.md).
Run it with the Apify CLI
One monitoring poll, one page, fixed stay dates:
apify actors call "johnvc/google-hotels-search-scraper" -i '{"search_type":"search","q":"hotels near Moscone Center San Francisco","check_in_date":"2026-10-05","check_out_date":"2026-10-08","currency":"USD","max_pages":1}' \
--json \
--user-agent apify-awesome-skills/apify-hotel-price-monitoring \
2>/dev/null
Read a finished run's snapshot later, for example from a scheduled run:
apify datasets get-items <DATASET_ID> --format json --user-agent apify-awesome-skills/apify-hotel-price-monitoring 2>/dev/null
Every call carries the three flags this repo expects: --json (or --format json), --user-agent apify-awesome-skills/apify-hotel-price-monitoring, and 2>/dev/null.
Run it from Claude or another AI agent (MCP)
The Actor is MCP-ready. Add the hosted server URL:
https://mcp.apify.com/?tools=actors,docs,johnvc/google-hotels-search-scraper
Then ask, for example: "Check hotel prices near the Louvre for November 12 to 14 and tell me which of yesterday's hotels got cheaper." MCP setup docs: https://docs.apify.com/platform/integrations/mcp
Workflow
- Fix the monitor definition. One Actor input per monitor:
q(destination or market),check_in_dateandcheck_out_date, party size, and an explicitcurrency. Keep every field identical across polls; only then are two snapshots comparable. - Bound each poll.
max_pages: 1covers about 20 properties and is enough for most competitor sets. Narrow the market with server-side filters (hotel_class,guest_rating,max_price) instead of adding pages. - Poll on a schedule. Wrap the same input in an Apify Schedule or a cron job. Daily is the usual cadence; hourly only for short event windows.
- Store and diff. Flatten each page object's
propertiesinto rows keyed onproperty_token, keepextracted_lowestfromrate_per_nightandtotal_rateplus the run timestamp, then compare with the previous snapshot: new lows, threshold crossings, and week-over-week drift. - Alert and report. Send drops past the user's threshold, and chart a property's rate across snapshot dates to answer "when should I book".
Inputs
q(string): destination, market, or landmark querycheck_in_date/check_out_date(YYYY-MM-DD): the monitored stay, required with a queryadults,children,children_ages: party, keep constant across pollscurrency(ISO 4217): set it explicitly so snapshots compare cleanlyhotel_class,guest_rating,stars,min_price,max_price: narrow to the competitor setgl,hl: country and language codesmax_pages(default 1): pages per poll, the cost bound per snapshot
Cost
Billing is pay per event: a per-run setup fee plus a per-page fee, about $0.04 for a one-page poll at the time of writing. A daily one-page monitor is roughly $1.20 a month; three markets daily is under $4 a month. Estimate with the live prices in references/gotchas.md before scheduling.
Honest limits
- This is a polled monitor, not a push feed: freshness equals your poll interval.
- Rates apply to the exact stay dates and party in the input; a monitor with rolling dates (always 30 days out) needs the dates recomputed before each poll.
- Listing sets shift between polls: hotels enter and leave page one, so a missing
property_tokendoes not always mean sold out. - The Actor returns current prices only. Price history exists only in the snapshots you keep.
- Read-only data: it cannot hold, book, or confirm any rate.
Troubleshooting
- A tracked property vanished from the snapshot: it may have dropped off the fetched pages; raise
max_pagesby one or query the hotel name directly. - Rates jump wildly between polls: confirm
currency, party fields, and dates are identical across polls before trusting the diff. - Empty
properties: dates in the past orcheck_out_datenot aftercheck_in_dateare the usual cause in long-running monitors. pagination_limit_reachedtrue: expected on one-page polls; only raisemax_pagesif your competitor set is bigger than one page.
See references/gotchas.md for cost guardrails and error recovery, and references/actor-index.md for the Actor routing table.
Related travel-data Actors
- Google Flights Data Scraper: https://apify.com/johnvc/Google-Flights-Data-Scraper-Flight-and-Price-Search?fpr=9n7kx3&fp_sid=skillrepo
- Google Travel Explore API: https://apify.com/johnvc/google-travel-explore-api?fpr=9n7kx3&fp_sid=skillrepo
- Google Local API: https://apify.com/johnvc/google-local-api?fpr=9n7kx3&fp_sid=skillrepo