# Hotel Prices API – Google Hotels Rates incl. Taxes & Fees (`agentutilitylabs/google-hotels-stay-totals`) Actor

Hotel prices and rates from Google Hotels with the full stay total including taxes & fees. Numeric fields for bots, n8n and Google Sheets. USD/EUR/GBP, up to 5 cities per run. $4 per 1,000 hotels.

- **URL**: https://apify.com/agentutilitylabs/google-hotels-stay-totals.md
- **Developed by:** [Juan Carlos Morales](https://apify.com/agentutilitylabs) (community)
- **Categories:** Travel
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$4.00 / 1,000 usable hotel stay prices

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Hotel Prices API – Google Hotels Rates incl. Taxes & Fees

Get Google Hotels prices for your dates, including the displayed stay total and tax/fee wording, as JSON or CSV.

A recorded Miami result showed **$142 nightly and $486 for three nights including taxes and fees**. Multiplying the nightly price gives $426. This Actor returns the source's displayed $486 total and the supporting text, rather than inventing the missing $60 breakdown. This is a historical example, not a current offer.

**Use it for**

- AI travel agents that need the real total for a stay, not the nightly teaser price
- Daily hotel rate monitoring into Google Sheets with n8n or Make
- Comparing hotel prices across up to 5 cities in one run, in USD, EUR or GBP

You pay only for hotels returned with a confirmed displayed stay total: $0.004 each, so a 10-hotel check costs $0.04. The free demo costs nothing.

### Run a search

```json
{"destination":"Cartagena Colombia","check_in":"2026-11-12","check_out":"2026-11-15","adults":2,"currency":"USD","max_results":10}
```

Use future dates. Supported: USD, EUR, GBP; 1-14 nights; 1-4 adults; no children or room-count selection. Maximum 20 hotels per destination. Nearby properties may appear.

### Compare destinations in one run

```json
{"destinations":["Paris France","London UK"],"check_in":"2026-11-12","check_out":"2026-11-15","adults":2,"currency":"EUR","max_results":10}
```

Use destination OR destinations. Batches accept 1-5 distinct destinations sharing dates, guests and currency. All inputs are validated before retrieval. A run spending limit applies across the entire batch. A failed destination has diagnostic output; other destinations may succeed. An explicit source access block stops the batch.

### Free sample

Submit only `{"demo":true}` for up to three real Miami results with rolling future dates. The demo has no result fee. Do not combine demo with search fields.

### Price and budget

$0.004 per usable delivered hotel ($4 per 1,000). No start fee, separate dataset fee, or platform-usage surcharge. Rows without a confirmed displayed stay total are excluded and not charged. Invalid input has no result fee. In a partially successful batch, delivered usable rows remain billable. No automatic retry follows an uncertain delivery or billing outcome.

### Output for bots and spreadsheets

Each result includes hotel name, Google Hotels entity ID, link, dates, adult count, currency, observation time and source wording. `price_amount`, `nightly_amount` and `stay_total_amount` are numeric convenience fields. The matching `displayed_price`, `displayed_nightly_price` and `displayed_stay_total` fields retain decimal strings. Missing facts are null. Do not compare amounts across currencies without explicit conversion.

`nightly_amount` is populated only when the source labels the price nightly. `taxes_fees_included` reflects Google's explicit wording, not an independent checkout verification. Entity IDs are Google Hotels identifiers, not Google Places IDs. Ratings and hotel class are included when observed.

The OUTPUT key-value record holds search diagnostics, delivered counts and batch summaries. A mismatched currency, date or occupancy produces no priced rows for that search.

### API integration

Start a run with an Apify bearer token:

```bash
curl -X POST 'https://api.apify.com/v2/acts/agentutilitylabs~google-hotels-stay-totals/runs?maxTotalChargeUsd=0.08' \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"destination":"Miami United States","check_in":"2026-11-12","check_out":"2026-11-15","currency":"USD","max_results":20}'
```

Poll `/v2/actor-runs/{id}` using the returned run ID. When finished, fetch `/v2/datasets/{defaultDatasetId}/items?clean=true`. Keep the run ID: do not submit a duplicate paid job just because your client timed out. Replace example dates with future dates.

Agents can use the Actor through Apify's API or MCP integration. Account-free x402 availability depends on Apify eligibility; it is not claimed as verified for this listing.

### Limits

These are Google-displayed observations, not guaranteed availability or bookable checkout quotes. No booking, payment authorization, provider offer comparison, cancellation terms, room-count guarantees or point-of-sale guarantees. Retrieval can fail when the source changes or blocks access. No login, proxy requirement or customer credentials are needed beyond your Apify API authentication.

# Actor input Schema

## `demo` (type: `boolean`):

Use Miami, two adults and a three-night stay starting 14 days from today. Returns up to three real observations. Leave other fields unset.

## `destination` (type: `string`):

City and country, for example Cartagena Colombia. Search results may include nearby areas.

## `check_in` (type: `string`):

YYYY-MM-DD, within the next 365 days.

## `check_out` (type: `string`):

YYYY-MM-DD, 1-14 nights after check-in.

## `adults` (type: `integer`):

1-4 adults. Defaults to 2 when omitted.

## `max_results` (type: `integer`):

1-20 results. Missing prices can reduce the number delivered.

## `currency` (type: `string`):

USD, EUR or GBP. Returned page currency must match the request.

## `children` (type: `array`):

Only an empty array is supported.

## `destinations` (type: `array`):

Optional list of 1-5 distinct destinations sharing dates, adults and currency. Use instead of destination. max\_results applies to each destination; run spending cap applies across the batch.

## Actor input object example

```json
{
  "demo": true
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "demo": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("agentutilitylabs/google-hotels-stay-totals").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "demo": True }

# Run the Actor and wait for it to finish
run = client.actor("agentutilitylabs/google-hotels-stay-totals").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "demo": true
}' |
apify call agentutilitylabs/google-hotels-stay-totals --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,agentutilitylabs/google-hotels-stay-totals"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Efete5efGNCAI2h5I/builds/A8TbCOUwQ03AOHLNn/openapi.json
