Switching from Google Travel Hotel Prices to Google Hotels Scraper
Google Hotels Scraper (arcadium/google-hotels) reads input written for vittuhy/google-travel-hotel-prices: 6 of its 7 input fields work as they are. Field list from its public input schema (build 0.0.58, 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 |
|---|---|---|
checkInDate | string | As is |
days | integer | As is |
adults | integer | As is |
currency | string | As is |
entity | string | As is |
proxyConfig | object | As is |
Their fields this actor does not read
device. 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 vittuhy/google-travel-hotel-prices, pasted unchanged:
{
"entity": "Hotel Adlon Kempinski Berlin",
"checkInDate": "2027-03-01",
"days": 3,
"adults": 1,
"currency": "EUR",
"proxyConfig": {
"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 |
| vittuhy/google-travel-hotel-prices | Pay per event | result | $1.00 | $1.00 |
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 Travel Hotel Prices timed out: 0.9% of 11,944 runs timed out.
- Google Travel Hotel Prices failed: 5.1% of 11,944 runs ended as failed.
| Actor | Runs, last 30 days | Failed | Timed out |
|---|---|---|---|
| arcadium/google-hotels | under 50 runs (3 runs) | - | - |
| vittuhy/google-travel-hotel-prices | 11,944 | 5.1% | 0.9% |
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 vittuhy/google-travel-hotel-prices, 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 vittuhy~google-travel-hotel-prices 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 '{"entity":"Hotel Adlon Kempinski Berlin","checkInDate":"2027-03-01","days":3,"adults":1,"currency":"EUR","proxyConfig":{"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": "{\"entity\":\"Hotel Adlon Kempinski Berlin\",\"checkInDate\":\"2027-03-01\",\"days\":3,\"adults\":1,\"currency\":\"EUR\",\"proxyConfig\":{\"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>"
}
}
}
}