
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape Google Hotels: search hotels by location and dates, with prices from every booking site, ratings, reviews summary, amenities, address and phone. No login needed.
Scrape Google Hotels for any city, area or hotel. Get hotel lists with nightly prices, star class, guest ratings, amenities and photos, plus the full price comparison from every booking site (Booking.com, Expedia, Hotels.com, Agoda, the official site and more) for the dates and guests you choose. No login, no browser, results in seconds.
hotels in Paris), or paste hotels as Google Hotels links, ids or names.| Field | What it does |
|---|---|
queries | Locations to search, as typed on Google Hotels. |
hotels | Hotels to price: Google Hotels link, entity id (Ch...) or name with city. |
maxResults | Hotels to save per search (20 per Google page). |
checkInDate, checkOutDate / nights | The stay. Empty check-in means 14 days from today. |
numberOfDates | Consecutive check-in dates to price for each hotel. |
adults, childrenAges | Guests. |
currency, language, country | Price currency and Google locale. |
minPrice, maxPrice, minRating, hotelClass, propertyType | Filters for search results. |
includeOffers | Add every booking site's price, address, phone and all amenities to each search result. |
outputFormat | hotels (one row per hotel) or offers (one flat row per booking site). |
{
"queries": ["hotels in New York"],
"maxResults": 20,
"checkInDate": "2026-12-10",
"nights": 2,
"adults": 2,
"currency": "USD",
"minRating": "4",
"includeOffers": false
}
Price one hotel on a week of dates, one row per booking site:
{
"hotels": ["https://www.google.com/travel/hotels/entity/ChUIneeg3YDGqvthGgkvbS8wNDJ5N2oQAQ"],
"checkInDate": "2026-12-10",
"numberOfDates": 7,
"outputFormat": "offers"
}
Hotel rows (search results, and hotel price pages when booking-site prices are on):
| Field | Description |
|---|---|
name, entityId, url | Hotel name, Google Hotels id and a link that opens the same stay. |
hotelClass, stars, propertyType | Star class and hotel or vacation rental. |
rating, reviewsCount, ratingBreakdown, reviewTopics | Google rating, count, stars histogram and topic mentions. |
price, totalPrice, taxesAndFees, currency, dealText | Lowest nightly price, stay total, taxes and Google's deal note. |
amenities, amenitiesNotAvailable, amenitiesByCategory, popularAmenities | Amenities (all categories on price pages). |
address, phone, website, checkInTime, checkOutTime | Contact and policy details (price pages). |
latitude, longitude, nearbyPlaces, googleMapsUrl | Location and travel times. |
images, thumbnail, description, descriptionLong | Photos and descriptions. |
offers, offersCount, lowestOfferPrice | Every booking site's offer (price pages). |
checkInDate, checkOutDate, nights, adults, children, query, position | The stay and the search rank. |
Offer rows (outputFormat: offers, or inside offers): provider, isOfficial, price (per night), totalPrice, freeCancellationUntil, perks, otaUrl, providerLogo, position, plus the hotel and stay fields.
{
"entityId": "ChoIsN2_nJbq8cjbARoNL2cvMTFxZnpka3N0NBAB",
"name": "Dutch Hotel Long Island City New York",
"hotelClass": "4-star hotel",
"stars": 4,
"rating": 3.7,
"reviewsCount": 632,
"price": 46.0,
"totalPrice": 46.0,
"taxesAndFees": 9.0,
"currency": "USD",
"latitude": 40.7534159,
"longitude": -73.9366115,
"amenities": ["Free Wi-Fi", "Air conditioning", "Smoke-free property"],
"amenitiesNotAvailable": ["No breakfast", "No parking"],
"checkInTime": "4:00 PM",
"checkOutTime": "11:00 AM",
"ratingBreakdown": {"5": 359, "4": 72, "3": 26, "2": 28, "1": 147},
"checkInDate": "2026-10-29",
"checkOutDate": "2026-10-30",
"query": "hotels in New York",
"position": 1,
"url": "https://www.google.com/travel/hotels/entity/ChoIsN2_nJbq8cjbARoNL2cvMTFxZnpka3N0NBAB?hl=en&gl=us&curr=USD&ts=..."
}
{
"hotelName": "The Plaza",
"entityId": "ChUIneeg3YDGqvthGgkvbS8wNDJ5N2oQAQ",
"provider": "Booking.com",
"isOfficial": false,
"price": 1679.0,
"totalPrice": 1679.0,
"currency": "USD",
"freeCancellationUntil": "Dec 8 11:59 PM",
"otaUrl": "https://www.google.com/travel/lodging/clk?...",
"checkInDate": "2026-10-29",
"checkOutDate": "2026-10-30",
"adults": 2
}
Pay per result, no start fee:
outputFormat: offers): $0.90 per 1,000.Examples: 1,000 hotels from city searches cost about $1.00; one hotel priced on 3 dates with about 30 booking sites each (90 offer rows) costs about $0.08. Platform usage (compute and datacenter proxy traffic) is billed on top and is small: Google Hotels answers are about 50 KB per page.
Is it legal to scrape Google Hotels? The scraper reads public prices and hotel facts that anyone can see without logging in. Check the rules that apply to your use of the data.
Do I need a Google account or a proxy? No account. The default datacenter proxy works; the booking sites Google lists can depend on the proxy's country.
How many hotels can I get? Google Hotels lists thousands of hotels for large cities, 20 per page. Set Max results per search as high as you need; the run stops when Google has no more pages.
Why is a field empty? Google does not show every field for every property (for example star class for vacation rentals, or prices when nothing is bookable on those dates). Empty fields are null.
Can I schedule runs or use the API? Yes. Schedule the actor for daily rate tracking, and start runs or read results through the API.
A hotel name was not found. What now? Paste the hotel's Google Hotels link instead, or add the city to the name.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
queriesarrayOptionalSearch locations
Where to look for hotels, as you would type it on Google Hotels: a city, an area or a landmark, for example "hotels in Paris", "Barcelona" or "hotels near Times Square". Each search returns up to Max results hotels.
hotelsarrayOptionalHotels (prices per booking site)
Specific hotels to price: a Google Hotels link (google.com/travel/hotels/entity/...), the hotel's entity id (starts with Ch...) or the hotel's name with its city, for example "Ritz Paris". Each hotel returns its prices from every booking site for each date.
maxResultsintegerOptionaldefault 20Max results per search
How many hotels to save for each search location. Google Hotels lists 20 per page; the scraper pages on until it has this many.
Dates, guests and currency. Prices are for this stay.
checkInDatestringOptionalCheck-in date
First night of the stay, YYYY-MM-DD. Empty means 14 days from today.
checkOutDatestringOptionalCheck-out date
Last day of the stay, YYYY-MM-DD. Leave empty to use Nights instead.
nightsintegerOptionaldefault 1Nights
Length of the stay when no check-out date is set.
numberOfDatesintegerOptionaldefault 1Number of check-in dates
Price each hotel on this many consecutive check-in dates, starting at the check-in date (for example 7 gives a week of nightly prices). Applies to hotel price pages and booking-site offers.
adultsintegerOptionaldefault 2Adults
childrenAgesarrayOptionalChildren's ages
One age (0 to 17) per child, for example 5 and 9 for two children.
currencystringOptionaldefault "USD"Currency
Three-letter currency code for all prices, for example USD, EUR, GBP or JPY.
Applied to search results before they are saved.
minPriceintegerOptionalMin price per night
Skip hotels whose lowest nightly price is below this.
maxPriceintegerOptionalMax price per night
Skip hotels whose lowest nightly price is above this.
minRatingenumOptionalMin guest rating
Keep hotels rated at least this on Google (out of 5).
hotelClassarrayOptionalHotel class (stars)
Keep only these star classes. Empty keeps all.
propertyTypeenumOptionaldefault "all"Property type
What each row contains.
includeOffersbooleanOptionaldefault falseAdd prices from every booking site
Open each search result's hotel page and add the full price list (Booking.com, Expedia, the official site and others), address, phone and all amenities. Saves one hotel price page per hotel and date instead of a plain search row.
outputFormatenumOptionaldefault "hotels"Output format
Hotels: one row per hotel (search rows, or hotel price pages with a nested price list). Booking-site offers: one flat row per booking site per hotel and date, like a price comparison table.
languagestringOptionaldefault "en"Language
Google interface language for names and descriptions, for example en, de, fr. Amenity names are in English.
countrystringOptionaldefault "us"Country
Two-letter Google country code, for example us, gb, de.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy
Datacenter proxies work well for Google Hotels. The booking sites Google lists can depend on the proxy country.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| entityId | string | Hotel id |
| name | string | null | Hotel |
| hotelName | string | null | Hotel |
| provider | string | null | Booking site |
| price | number | null | Price per night |
| totalPrice | number | null | Total price |
| currency | string | null | Currency |
| rating | number | null | Rating |
| checkInDate | string | null | Check-in |
| checkOutDate | string | null | Check-out |
| url | string | null | Google Hotels link |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Hotel | One hotel from a location search: lowest nightly price, stars, rating, amenities, location and photos. | $0.001 |
| Hotel price page | One hotel and check-in date with every booking site's price, address, phone and all amenities. | $0.01 |
| Booking-site offer | One booking site's price for one hotel and check-in date (flat offers output). | $0.0009 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('roamandroof/google-hotels-scraper').call({
"queries": [
"hotels in New York"
],
"maxResults": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run roamandroof/google-hotels-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=roamandroof/google-hotels-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Hotels with prices from booking sites and a rating filter.
Compare one hotel's prices across booking sites.
Upscale Paris hotels with prices in euros.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.