Google Hotels Search

Search for hotels by location with comprehensive filtering options. Supports price range, star rating, free cancellation, and sorting options.

Endpoint

GET /api/google-hotels.search

Generate Code with AI

Copy a ready-made prompt with all the endpoint details, parameters, and example responses. Paste it into ChatGPT, Claude, or any AI assistant to instantly generate working code.

Parameters

q string Required

Location query for hotel search (e.g., "Paris, France", "Near Eiffel Tower")

check_in_date string Required

Check-in date in YYYY-MM-DD format (must be today or future date)

check_out_date string Required

Check-out date in YYYY-MM-DD format (must be after check-in date)

adults integer Optional

Number of adult guests (1-10)

children integer Optional

Number of children (0-6)

currency string Optional

3-letter currency code for prices (e.g., USD, EUR, GBP)

gl string Optional

2-letter country code for localization (e.g., us, gb, de, fr)

hl string Optional

2-letter language code for results (e.g., en, es, fr, de)

sort_by integer Optional

Sort order: 3 (price lowest first), 8 (rating highest first), 13 (most reviewed first)

min_price integer Optional

Minimum price per night filter

max_price integer Optional

Maximum price per night filter (must be greater than min_price)

hotel_class array Optional

Filter by hotel star rating IDs (comma-separated): 2, 3, 4, or 5

rating integer Optional

Minimum guest rating filter: 7 (3.5+), 8 (4.0+), 9 (4.5+)

amenities array Optional

Filter by amenity IDs (SerpAPI list, comma-separated). Example: 35 (Free Wi-Fi), 9 (Free breakfast), 15 (Bar)

free_cancellation boolean Optional

Filter for hotels with free cancellation (true/false)

children_ages array Optional

Comma-separated children ages (1-17 years old). Count must match children.

vacation_rentals boolean Optional

Filter for vacation rental properties only (Airbnb-style properties) instead of hotels

eco_certified boolean Optional

Filter for eco-certified/sustainable hotels only

special_offers boolean Optional

Filter for hotels with special offers/deals

property_types array Optional

Filter by property type IDs (SerpAPI list, comma-separated). Example: 12 (Beach hotels), 1 (Apartments)

brands array Optional

Filter by brand IDs (use brands[].id from response)

bedrooms integer Optional

Minimum number of bedrooms (1-20, vacation rentals only)

bathrooms integer Optional

Minimum number of bathrooms (1-20, vacation rentals only)

next_page_token string Optional

Pagination token from previous response

property_token string Optional

Property token for a specific hotel (from search results)

Request Examples

<?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://scrappa.co/api/google-hotels.search?q=Paris%2C+France&check_in_date=2025-08-15&check_out_date=2025-08-18&currency=EUR&gl=fr');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'x-api-key: YOUR_API_KEY_HERE',
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
<?php

use Illuminate\Support\Facades\Http;

$response = Http::withHeaders([
    'x-api-key' => 'YOUR_API_KEY_HERE',
])->get('https://scrappa.co/api/google-hotels.search?q=Paris%2C+France&check_in_date=2025-08-15&check_out_date=2025-08-18&currency=EUR&gl=fr');

return $response->json();
fetch('https://scrappa.co/api/google-hotels.search?q=Paris%2C+France&check_in_date=2025-08-15&check_out_date=2025-08-18&currency=EUR&gl=fr', {
  headers: {
    'x-api-key': 'YOUR_API_KEY_HERE'
  }
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));
const axios = require('axios');

axios.get('https://scrappa.co/api/google-hotels.search?q=Paris%2C+France&check_in_date=2025-08-15&check_out_date=2025-08-18&currency=EUR&gl=fr', {
  headers: {
    'x-api-key': 'YOUR_API_KEY_HERE'
  }
})
  .then(response => console.log(response.data))
  .catch(error => console.error('Error:', error));
import requests

headers = {
    'x-api-key': 'YOUR_API_KEY_HERE'
}

response = requests.get('https://scrappa.co/api/google-hotels.search?q=Paris%2C+France&check_in_date=2025-08-15&check_out_date=2025-08-18&currency=EUR&gl=fr', headers=headers)
print(response.json())
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse('https://scrappa.co/api/google-hotels.search?q=Paris%2C+France&check_in_date=2025-08-15&check_out_date=2025-08-18&currency=EUR&gl=fr')
request = Net::HTTP::Get.new(uri)
request['x-api-key'] = 'YOUR_API_KEY_HERE'

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
  http.request(request)
end

puts JSON.parse(response.body)
package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    client := &http.Client{}
    req, _ := http.NewRequest("GET", "https://scrappa.co/api/google-hotels.search?q=Paris%2C+France&check_in_date=2025-08-15&check_out_date=2025-08-18&currency=EUR&gl=fr", nil)
    req.Header.Set("x-api-key", "YOUR_API_KEY_HERE")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}
curl -X GET 'https://scrappa.co/api/google-hotels.search?q=Paris%2C+France&check_in_date=2025-08-15&check_out_date=2025-08-18&currency=EUR&gl=fr' \
  -H 'x-api-key: YOUR_API_KEY_HERE'

Response Schema

JSON Response 200 OK
{
    "hotels": []
}

Try It Live

Test this endpoint in our interactive playground with real data.

Open in Playground