No hostels, no capsules: why Hotelglitch ignores half of Google Hotels
How the rate filter dropped "$23 LA hotel" alerts without dropping real deep-discount listings.
Early Hotelglitch alerts had a surface-level credibility problem: every other day someone got a 'Marriott LA, $23/night' ping that turned out to be a 4-bed hostel dorm or a capsule sleep pod sublisted under a hotel name. The price was real. The product wasn't a hotel.
The Google Hotels mix
SerpAPI's google_hotels engine returns the union of: real branded hotels, independent boutique hotels, chain economies, hostels, capsule hotels, vacation rentals (Airbnb-style), apartments, guesthouses, homestays, and campsites. They're all priced per-night in the same field. Taking Math.min directly gives you garbage.
The four-stage filter
- Drop properties with hotel_class < 3 (no 1- or 2-star "hotels" / hostels). Override with min_stars=1 or min_stars=2 if you specifically want budget tier.
- Drop type=="vacation rental" / "apartment" / "guesthouse" / "homestay" / "campsite" (incomparable to hotels for fare-watching purposes).
- Drop properties with reviews < 50 (filters new sublistings + listing-page noise).
- Among the survivors, take the median of the BOTTOM HALF — keeps a cheap-direction signal but drops the rock-bottom outliers that escape the type filter.
Star-rating override
The 3+ star default is right for most users; if you want to watch a different tier — a luxury 5-star deal, or a budget 2-star clean-but-no-frills — set `min_stars` on the target. The scraper will pass `hotel_class={N..5}` to SerpAPI and the filter will respect your floor.
The fallback
If the four-stage filter ate everything (fewer than 3 survivors), we fall back to the all-rates pool rather than throwing 'no rates returned'. The detector will absorb the resulting noise over 16 samples worth of rolling baseline. This rarely fires in cities with normal hotel inventory; mostly it's a courtesy for tier-3 destinations where the curated set is genuinely small.