Switching from Google Hotels Scraper to Google Hotels Scraper
Google Hotels Scraper (arcadium/google-hotels) reads input written for zerobreak/google-hotels-scraper: 9 of its 10 input fields work as they are. Field list from its public input schema (build 0.0.8, 2026-10-31); prices and run results from the public Apify API, 2026-10-31.
Their fields that work as they are
| Their field | Type | Note |
|---|---|---|
locations | array | As is |
checkInDate | string | As is |
checkOutDate | string | As is |
adults | integer | As is |
currency | string | As is |
languageCode | string | As is |
countryCode | string | As is |
maxResults | integer | As is |
proxyConfiguration | object | As is |
Their fields this actor does not read
requestTimeoutSecs. Leave them out of the input; the actor’s own options are in the guide.
Side by side: their input, our rows
Input written for zerobreak/google-hotels-scraper, pasted unchanged:
{
"locations": [
"New York"
],
"checkInDate": "2027-03-01",
"checkOutDate": "2027-03-03",
"adults": 1,
"currency": "EUR",
"languageCode": "de",
"countryCode": "de",
"maxResults": 40,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": [
"RESIDENTIAL"
]
}
}One row from arcadium/google-hotels (README example; long text shortened):
{
"rowType": "hotel",
"platform": "google-hotels",
"entityId": "ChoI_uTZsvz1i6-bARoNL2cvMTFmZHB6eDEwMxAB",
"name": "The Originals Boutique, Hôtel Maison Montmartre, Paris",
"googleUrl": "https://www.google.com/travel/hotels/entity/ChoI_uTZsvz1i6-bARoNL2cvMTFmZHB6eDEwMxAB",
"propertyType": "hotel",
"hotelClass": 4,
"rating": 4,
"reviewCount": 2133,
"latitude": 48.900537,
"longitude": 2.336269,
"amenities": [
"Free Wi-Fi",
"Air conditioning"
],
"checkIn": "2026-11-10",
"checkOut": "2026-11-12",
"nights": 2,
"adults": 2,
"currency": "USD",
"available": true,
"pricePerNight": 81.75,
"totalPrice": 163.5,
"pricesIncludeTaxes": true,
"priceBeforeTaxes": 136.25,
"taxesAndFees": 27.25,
"deal": "30% less than usual",
"dealPercent": 30,
"searchLocation": "Paris",
"searchRank": 1,
"totalResults": 15000
}Output fields: rowType, platform, entityId, name, hotelName, googleUrl, propertyType, hotelClass, hotelClassLabel, rating, reviewCount, latitude, longitude, address, countryCode, description, thumbnailUrl, website, amenities, amenityCodes, checkInTime, checkOutTime, checkIn, checkOut, nights, adults, children, childrenAges, currency, available, pricePerNight, pricePerNightText, totalPrice, pricesIncludeTaxes, totalPriceWithTaxes, priceBeforeTaxes, taxesAndFees, deal, dealPercent, offerCount, lowestOfferProvider, searchLocation, searchRank, totalResults, input, offerRank, provider, providerId, isOfficialSite, featured, freeCancellation, freeCancellationUntil, freeCancellationUntilTime, roomName, rateCount, cheapestFreeCancellationPrice, scrapedAt, code, message. The rows use these names, not the other actor’s.
Price
| Actor | Pricing model | Charged per | Per 1,000, Free plan | Per 1,000, lowest plan |
|---|---|---|---|---|
| arcadium/google-hotels | Pay per event | Hotel row | $4.49 | $2.69 |
| zerobreak/google-hotels-scraper | Pay per event | result | $4.99 | $2.99 |
Live Apify prices on 2026-10-31, in USD, for each actor’s main charged event. Start fees and platform usage are not included. Units differ: compare what one charged row contains. The Store page of each actor is the current source.
Common issues: failed or timed-out runs
- Google Hotels Scraper timed out: 0.0% of 31,467 runs timed out.
- Google Hotels Scraper failed: 22.9% of 31,467 runs ended as failed.
| Actor | Runs, last 30 days | Failed | Timed out |
|---|---|---|---|
| arcadium/google-hotels | under 50 runs (3 runs) | - | - |
| zerobreak/google-hotels-scraper | 31,467 | 22.9% | 0.0% |
Apify’s public run statistics for each actor, last 30 days to 2026-10-31: FAILED and TIMED-OUT runs as a share of all runs. Shown from 50 runs. A failed run can also come from a bad input. Here an input that cannot be read comes back as a free error row with a code, and the other inputs still arrive.
How to switch
In the Apify Store
- Open arcadium/google-hotels and sign in to Apify.
- On the Input tab, switch the editor to JSON and paste the input you used for zerobreak/google-hotels-scraper, without the fields listed above as not read.
- Start the run. Set a maximum cost per run in the run options if you want a hard cap.
Over the API
Change the actor ID in the URL from zerobreak~google-hotels-scraper to arcadium~google-hotels; the body stays the same apart from the fields this actor does not read.
curl -X POST "https://api.apify.com/v2/acts/arcadium~google-hotels/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"locations":["New York"],"checkInDate":"2027-03-01","checkOutDate":"2027-03-03","adults":1,"currency":"EUR","languageCode":"de","countryCode":"de","maxResults":40,"proxyConfiguration":{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}}'
In n8n
In the Apify node, change the actor to arcadium/google-hotels and keep the input JSON. With an HTTP Request node:
{
"nodes": [
{
"name": "Run arcadium/google-hotels",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4,
"position": [
0,
0
],
"parameters": {
"method": "POST",
"url": "https://api.apify.com/v2/acts/arcadium~google-hotels/run-sync-get-dataset-items",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "{\"locations\":[\"New York\"],\"checkInDate\":\"2027-03-01\",\"checkOutDate\":\"2027-03-03\",\"adults\":1,\"currency\":\"EUR\",\"languageCode\":\"de\",\"countryCode\":\"de\",\"maxResults\":40,\"proxyConfiguration\":{\"useApifyProxy\":true,\"apifyProxyGroups\":[\"RESIDENTIAL\"]}}",
"options": {
"timeout": 300000
}
}
}
],
"connections": {}
}
From an AI assistant (MCP)
Add the actor as a tool on Apify’s MCP server; an agent can pass the same input fields.
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=arcadium/google-hotels",
"headers": {
"Authorization": "Bearer <APIFY_TOKEN>"
}
}
}
}