JustSERPDocs
Google

Google Hotels

A page of hotels and vacation rentals for a search on Google Hotels, answered as the document with `properties`: price per night and for the stay, rating, class, nearby places and pictures.

GET
/v1/google/hotels

A page of hotels and vacation rentals for a search on Google Hotels, answered as the document with properties: price per night and for the stay, rating, class, nearby places and pictures. Twenty a page (17 to 20 seen). A vacation rental (type: vacation_rental) has no class and names its amenities. Not answered: search_information.total_results, brands, pagination, a hotel's amenities, ratings by theme, images[].original, price_before_taxes. The page's filters are refused (400): bounding_box, sort_by other than relevance, price_min, price_max, property_type vacation_rental, property_types, amenities, rating, hotel_class, brands, bedrooms, bathrooms, free_cancellation, special_offers, eco_certified, for_displaced_individuals, next_page_token.

Authorization

headerX-API-Key<token>

Your API key.

Query Parameters

cancel_token?string

A name you make up for this request (a UUID is fine), so you can later GET /v1/cancel with it. Only you know it, so only you can cancel. Use a new one for every request, retries included: a cancelled token stays cancelled for a few minutes.

Length1 <= length <= 128
q*string

What to search for.

Length1 <= length
check_in_date*string

YYYY-MM-DD.

Formatdate
check_out_date*string

YYYY-MM-DD; after check_in_date, at most 365 nights.

Formatdate
adults?integer

Guests with the children: 1 to 10.

Range1 <= value <= 10
Default2
children_ages?string

Ages 1 to 17, comma-separated.

currency?string
Default"USD"
hl?string
Default"en"
gl?string
Default"us"

Response Body

The hotels, as the document. When the page could not be parsed, the usual envelope.

application/json
  1. response

The first three keys of every parsed 200 (the answer is the document itself, no success/data envelope): what the search was (search_metadata), what it asked (search_parameters), the parser's own search_information ({} when it has none). The engine's blocks follow, at the same level. An engine whose answer is a list puts it under results.

search_metadata*
search_parameters*

The request's own fields as sent, engine first, without cancel_token.

search_information*

The parser's own, e.g. yelp_search's; otherwise {}.

properties?array<>
[key: string]?any
Example Request
curl -X GET 'https://api.justserp.com/v1/google/hotels?q=hotels+in+paris&check_in_date=2026-12-12&check_out_date=2026-12-15&adults=3&children_ages=5%2C9'
Example Response
{  "search_metadata": {    "id": "string",    "status": "Success",    "created_at": "string",    "request_url": "string",    "html_url": "string"  },  "search_parameters": {},  "search_information": {},  "properties": [    {      "type": "hotel",      "property_token": "string",      "data_id": "string",      "name": "string",      "link": "string",      "description": "string",      "gps_coordinates": {        "latitude": 0,        "longitude": 0      },      "city": "string",      "country": "string",      "check_in_time": "string",      "check_out_time": "string",      "price_per_night": {        "price": "string",        "extracted_price": 0      },      "total_price": {        "price": "string",        "extracted_price": 0      },      "deal": "string",      "nearby_places": [        {          "name": "string",          "transportations": [            {              "type": "string",              "duration": "string"            }          ]        }      ],      "hotel_class": "string",      "extracted_hotel_class": 0,      "rating": 0,      "reviews": 0,      "reviews_histogram": {        "property1": 0,        "property2": 0      },      "amenities": [        "string"      ],      "images": [        {          "thumbnail": "string"        }      ]    }  ]}