Google Hotels API
Search a destination, open a property, pull a whole price calendar and read its reviews. Every Google Hotels result as JSON, with base price, taxes, fees and total kept separate.
1,000 free credits a month · Failed requests are free · Free during the beta
Google Hotels is the most complete free view of hotel prices: one page shows a property next to every OTA and the hotel’s own site. The Google Hotels API turns that into data you can store. A destination search returns about 20 properties per page with prices, star class, ratings, amenities, coordinates and a property token. The token opens the property page, the price calendar and the reviews.
The calendar is the difference for revenue teams. A per-date SERP API needs one request for every check-in date. The calendar endpoint returns up to 330 nights for one hotel in a single 5-credit call, each night with its observed price and provenance.
What you get
property_token— stable id for the property, reused by the calendar, property and reviews callsprice_per_night / total_price— displayed and exact prices, with before-taxes valueshotel_class, rating, reviews— star class, guest rating and review countreviews_breakdown, amenities— what guests mention and what the hotel offersgps_coordinates, nearby_places— location and how to get thereall_offers— each seller on the property page with its price (property endpoint)calendar[]— one entry per night with base, tax, fees and total (calendar endpoint)next_page_token— cursor for the next page of a destination search
One call, structured JSON
POST /v1/serp/google_hotels — 3 credits per successful call.
curl -X POST "https://api.scrapercompany.com/v1/serp/google_hotels" \
-H "x-api-key: $SCRAPERCOMPANY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"q": "hotels in Montreal",
"adults": 2,
"currency": "CAD",
"gl": "ca",
"check_in_date": "2026-12-02",
"check_out_date": "2026-12-04"
}'{
"search_metadata": {
"status": "Success",
"created_at": "2026-09-30T22:46:08Z",
"request_time_taken": 1.89,
"total_time_taken": 1.89
},
"search_parameters": {
"engine": "google_hotels",
"q": "hotels in Montreal",
"check_in_date": "2029-03-16",
"check_out_date": "2029-03-18",
"adults": 2,
"currency": "CAD",
"gl": "ca",
"hl": "en",
"sort_by": "relevance"
},
"search_information": {
"total_results": 5778,
"location": "Montreal",
"currency_matches_request": true
},
"properties": [
{
"type": "hotel",
"property_token": "ChgImtDg_rW5k8iWARoLL2cvMXRzamQ4NncQAQ",
"data_id": "0x4cc9178df6e67b8d:0x96904dcb5fd8281a",
"name": "Radisson Hotel Montreal Airport",
"link": "https://www.choicehotels.com/quebec/montreal/radisson-hotels/cnc37?mc=llgoxxpx",
"description": "Modern lodging with a restaurant & an indoor pool, plus free WiFi & an airport shuttle.",
"gps_coordinates": {
"latitude": 45.4851544,
"longitude": -73.6909316
},
"city": "Montreal",
"country": "CA",
"check_in_time": "3:00 PM",
"check_out_time": "11:00 AM",
"price_per_night": {
"price": "$121",
"extracted_price": 121,
"price_before_taxes": "$102",
"extracted_price_before_taxes": 101.67969
},
"total_price": {
"price": "$242",
"extracted_price": 242,
"price_before_taxes": "$203",
"extracted_price_before_taxes": 203.36
},
"deal": "27% less than usual",
"deal_description": "Great Deal",
"nearby_places": [
{
"name": "Côte-de-Liesse / No 6400",
"transportations": [
{
"type": "Walking",
"duration": "2 min"
}
]
}
],
"hotel_class": "4-star hotel",
"extracted_hotel_class": 4,
"rating": 3.5,
"reviews": 2535,
"reviews_histogram": {
"1": 443,
"2": 220,
"3": 396,
"4": 674,
"5": 802
},
"location_rating": 3.1,
"proximity_to_things_to_do_rating": 3.2,
"proximity_to_restaurants_rating": 2.8,
"proximity_to_transit_rating": 2.5,
"airport_access_rating": 4.6,
"reviews_breakdown": [
{
"name": "Fitness",
"description": "Fitness",
"total": 199,
"positive": 119,
"neutral": 13,
"negative": 67
},
{
"name": "Pool",
"description": "Pool",
"total": 107,
"positive": 78,
"neutral": 7,
"negative": 22
}
],
"amenities": [
"Breakfast ($)",
"Free Wi-Fi"
],
"images": [
{
"thumbnail": "https://lh3.googleusercontent.com/gps-cs-s/AHRPTWk0lycQOr7G_2oWSLSEpBlBBfN0wY5jwgISonycKD0xeg__AHXxCEpS3XqlR9IcD1alML-r6P2EvsCMBx_Lt3KN8sOYNRZU4Jouiz7gc8JcjOskWyeb7HyYDCnqD1bR4L-24cbbvm9TvXHm=s287-w287-h192-n-k-no-v1",
"original": "https://lh3.googleusercontent.com/gps-cs-s/AHRPTWk0lycQOr7G_2oWSLSEpBlBBfN0wY5jwgISonycKD0xeg__AHXxCEpS3XqlR9IcD1alML-r6P2EvsCMBx_Lt3KN8sOYNRZU4Jouiz7gc8JcjOskWyeb7HyYDCnqD1bR4L-24cbbvm9TvXHm=s10000"
}
],
"thumbnail": "https://lh3.googleusercontent.com/gps-cs-s/AHRPTWk0lycQOr7G_2oWSLSEpBlBBfN0wY5jwgISonycKD0xeg__AHXxCEpS3XqlR9IcD1alML-r6P2EvsCMBx_Lt3KN8sOYNRZU4Jouiz7gc8JcjOskWyeb7HyYDCnqD1bR4L-24cbbvm9TvXHm=s150-w92-h150-n-k-no",
"currency": "CAD"
},
{
"type": "vacation_rental",
"property_token": "ChkQzZioqLvP4IUiGg0vZy8xMXpjZmhoMzJwEAI",
"name": "HoMa Loft 206 – Bright, Modern & Easy Parking",
"link": "https://www.host-me.ca/properties/69e924482b031c00122c840e",
"gps_coordinates": {
"latitude": 45.54264831542969,
"longitude": -73.53958129882812
},
"city": "Montreal",
"country": "CA",
"check_in_time": "4:00 PM",
"check_out_time": "10:00 AM",
"price_per_night": {
"price": "$152",
"extracted_price": 152.34,
"price_before_taxes": "$138",
"extracted_price_before_taxes": 138.49
},
"total_price": {
"price": "$305",
"extracted_price": 304.68,
"price_before_taxes": "$277",
"extracted_price_before_taxes": 276.98
},
"nearby_places": [
{
"name": "Montréal-Pierre Elliott Trudeau International Airport",
"transportations": [
{
"type": "Taxi",
"duration": "35 min"
},
{
"type": "Public transport",
"duration": "1 hr 30 min"
}
]
}
],
"location_rating": 2.9,
"proximity_to_restaurants_rating": 2.5,
"airport_access_rating": 3.9,
"amenities": [
"Air conditioning",
"Kid-friendly"
],
"excluded_amenities": [
"No balcony",
"No crib"
],
"essential_info": [
"Entire apartment",
"Sleeps 2"
],
"images": [
{
"thumbnail": "https://lh3.googleusercontent.com/grass-proxy/AIM7gW39AJ5sNUqWYbyQkdBH2YHq7dV63MGIYm0DnOBPevzdmKuKVhPt19sLNF1TWMEzHBW2kN-KopL4tXsF2coEPixiQxcAV6aM2SWxYoWA73riNVMyRVNI3QHt-96hRHLb5couboHdgW6G-tN6pu_pOwPJZdNGqL_RGKM9UOM7G9cUNeoBDdsqXM6hNg=s287-w287-h192-n-k-no-v1",
"original": "https://lh3.googleusercontent.com/grass-proxy/AIM7gW39AJ5sNUqWYbyQkdBH2YHq7dV63MGIYm0DnOBPevzdmKuKVhPt19sLNF1TWMEzHBW2kN-KopL4tXsF2coEPixiQxcAV6aM2SWxYoWA73riNVMyRVNI3QHt-96hRHLb5couboHdgW6G-tN6pu_pOwPJZdNGqL_RGKM9UOM7G9cUNeoBDdsqXM6hNg=s10000"
}
],
"thumbnail": "https://lh3.googleusercontent.com/grass-proxy/AIM7gW39AJ5sNUqWYbyQkdBH2YHq7dV63MGIYm0DnOBPevzdmKuKVhPt19sLNF1TWMEzHBW2kN-KopL4tXsF2coEPixiQxcAV6aM2SWxYoWA73riNVMyRVNI3QHt-96hRHLb5couboHdgW6G-tN6pu_pOwPJZdNGqL_RGKM9UOM7G9cUNeoBDdsqXM6hNg=s150-w92-h150-n-k-no",
"prices": [
{
"source": "host-me",
"raw_source": "host-me",
"displayed_prices": [
"$138",
"$152"
],
"partner_id": "420480647",
"logo": "//www.gstatic.com/travel-hotels/branding/icon_default.png",
"price_per_night": "$152",
"price_per_night_before_taxes": "$138",
"extracted_price_per_night": 152,
"extracted_price_per_night_before_taxes": 138,
"has_free_cancellation": true,
"free_cancellation_until": "Oct 16",
"free_cancellation_time": "4:00 PM",
"is_featured": true
}
],
"currency": "CAD"
}
],
"brands": [
{
"id": 33,
"title": "Accor Live Limitless",
"children": [
{
"id": 8,
"title": "Fairmont Hotels and Resorts"
},
{
"id": 47,
"title": "Novotel"
}
]
},
{
"id": 18,
"title": "Best Western International",
"children": [
{
"id": 155,
"title": "Best Western"
},
{
"id": 104,
"title": "Best Western Plus"
}
]
}
],
"pagination": {
"records_from": 1,
"records_to": 20,
"next_page_token": "CBI="
}
}Endpoints and price per call
Credits per successful call, and what one call costs on the Starter, Growth, Scale plans. Failed requests cost nothing. See all plans.
| Endpoint | What it returns | Credits | Starter · Growth · Scale |
|---|---|---|---|
| Destination search POST /v1/serp/google_hotels | Hotels for a place and dates, about 20 per page, with filters and sorting | 3 credits | $0.0029 · $0.0018 · $0.0012 |
| Property page POST /v1/serp/google_hotels_property | Every seller’s price for one stay, rooms and hotel details | 3 credits | $0.0029 · $0.0018 · $0.0012 |
| Price calendar POST /v1/serp/google_hotels_calendar | Nightly prices for one hotel, 90 nights by default and up to 330 | 5 credits | $0.0049 · $0.0030 · $0.0020 |
| Reviews POST /v1/hotels/reviews | Guest reviews from Google and the sites it syndicates, up to 10 pages per call | 2 credits | $0.0020 · $0.0012 · $0.0008 |
Frequently asked questions
Is there an official Google Hotels API?
Google offers hotel APIs to partners who send it prices, not to developers who want to read them. To collect the prices shown on Google Hotels you need a service like this one that returns the public results as data.
How do I get a property token?
Run a destination search and take property_token from any result, or look a hotel up by name and city with the property lookup endpoint. The token is stable, so you can store it and reuse it for calendars and reviews.
How far ahead can I price a hotel?
The calendar returns 90 nights by default and up to 330 nights in one call. Nights with no availability come back as unavailable dates instead of missing silently.
Are taxes and fees included in the prices?
Both are returned. Prices keep the base rate, taxes, mandatory fees and total separately, and say whether the displayed price already includes tax for the market you asked for.
Do failed requests cost credits?
No. A failed or blocked call (any non-2xx response) costs 0 credits, and so does a search page that comes back empty. You pay only for successful results.
How do I get an API key?
Request a free API key through the contact page. The Free plan includes 1,000 credits a month, and the API is free while it is in beta. You create and rotate keys yourself in the dashboard.