A fast, simple hotel scraper for Google Hotels, inspired by fast-flights.
Project description
fast-hotels
A fast, simple hotel scraper for Google Hotels, inspired by fast-flights. Fetches hotel data (name, price, rating, amenities, etc.) using Playwright, with a simple synchronous API.
Features
- Scrape Google Hotels for hotel data
- Simple, synchronous API (no Playwright or async knowledge needed)
- Returns structured hotel data (name, price, rating, amenities, ...)
- Sort results by price, rating, or best value (rating/price ratio)
- Limit the number of results returned
- Support for IATA airport codes as locations (e.g., 'CDG' → 'Charles de Gaulle Airport')
- Validates that check-in date is not in the past
Installation
pip install fast-hotels
# Then install Playwright browsers:
python -m playwright install
Usage
from fast_hotels import HotelData, Guests, get_hotels
hotel_data = [
HotelData(
checkin_date="2025-06-23",
checkout_date="2025-06-25",
location="Tokyo" # or use an IATA code like "CDG"
)
]
guests = Guests(adults=2, children=1)
# Basic usage
result = get_hotels(hotel_data=hotel_data, guests=guests, fetch_mode="live")
for hotel in result.hotels:
print(f"Name: {hotel.name}, Price: {hotel.price}, Rating: {hotel.rating}, Amenities: {hotel.amenities}")
# Limit results to 5 hotels
result = get_hotels(hotel_data=hotel_data, guests=guests, fetch_mode="live", limit=5)
# Sort by price (descending)
result = get_hotels(hotel_data=hotel_data, guests=guests, fetch_mode="live", sort_by="price")
# Sort by rating (descending)
result = get_hotels(hotel_data=hotel_data, guests=guests, fetch_mode="live", sort_by="rating")
# Default sort is by best value (highest rating/price ratio)
result = get_hotels(hotel_data=hotel_data, guests=guests, fetch_mode="live")
# Use an IATA airport code as location
hotel_data = [HotelData(checkin_date="2025-06-23", checkout_date="2025-06-25", location="CDG")]
result = get_hotels(hotel_data=hotel_data, guests=guests, fetch_mode="live")
API
get_hotels(hotel_data, guests, fetch_mode="live", debug=False, limit=None, sort_by=None)
hotel_data: List ofHotelData(checkin_date, checkout_date, location)guests:Guests(adults, children)fetch_mode: "live" (scrape Google) or "mock" (return sample data)debug: If True, enables debug mode in scraperlimit: Maximum number of hotels to return (default: all)sort_by: 'price', 'rating', or None (default: best value, i.e., highest rating/price ratio)- Returns:
Resultwith.hotels(list ofHotel)
Models
HotelData: checkin_date, checkout_date, location (city name or IATA airport code)Guests: adults, childrenHotel: name, price, rating, amenities, ...Result: hotels (list of Hotel)
Playwright
This package uses Playwright. After install, run:
python -m playwright install
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fast_hotels-0.1.4.tar.gz.
File metadata
- Download URL: fast_hotels-0.1.4.tar.gz
- Upload date:
- Size: 7.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f92a21b2efc3a5b4c2378fde0507aa0388d53f9fc629e5633e1825208ead032e
|
|
| MD5 |
53040c79c32380a25f40694dbf52fe9a
|
|
| BLAKE2b-256 |
7b3c4841dcd966e32cfef61d1d73f8f6479a6c9b3520c07e23cd844852dc3c1b
|
File details
Details for the file fast_hotels-0.1.4-py3-none-any.whl.
File metadata
- Download URL: fast_hotels-0.1.4-py3-none-any.whl
- Upload date:
- Size: 9.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
25956e0266212315410e7f82afb176c5a79bbc7a1e1321ca95c30b4f96a649c1
|
|
| MD5 |
5317fdf1c4ed554a7410bdba70dc1932
|
|
| BLAKE2b-256 |
6ea53a68845ce75a8c905dc1d31fd8cf329e71bdf558348df2dd635545465278
|