> For the complete documentation index, see [llms.txt](https://developers.oxylabs.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.oxylabs.io/api-targets/es/search-engines/google/travel-hotels.md).

# Viajes: hoteles

Extrae resultados de Google Travel: Hotels con filtros de número de huéspedes, fechas y clasificación por estrellas. Integración flexible de API con opciones completas de parámetros.

La `google_travel_hotels` la fuente de datos está diseñada para recuperar los resultados de búsqueda de hoteles del servicio Google Travel.

{% hint style="warning" %}
Para asegurar un uso óptimo de este servicio, incluye el `"render": "html"` parámetro en tu solicitud.
{% endhint %}

## Ejemplos de solicitud

En este ejemplo, hacemos una solicitud para recuperar la `2`la página nd de resultados de disponibilidad de hoteles para `2` huéspedes adultos entre `2023-10-01` y `2023-10-10` para `2` a `4`hoteles de - estrellas en París desde `google.com`.

{% tabs %}
{% tab title="cURL" %}

```shell
curl 'https://realtime.oxylabs.io/v1/queries' \\
--user 'USERNAME:PASSWORD' \\
-H 'Content-Type: application/json' \\
-d '{
        "source": "google_travel_hotels",
        "start_page": 2,
        "query": "hoteles en París",
        "render": "html",
        "parse": true,
        "context": [
            {"key": "adults", "value": 2},
            {"key": "hotel_dates", "value": "2023-10-01,2023-10-10"},
            {"key": "hotel_classes", "value": [2, 3, 4]}
        ]
    }'
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from pprint import pprint

# Estructura del payload.
payload = {
  "source": "google_travel_hotels",
  "query": "hoteles en París",
  "start_page": 2,
  "render": "html",
  "parse": True,
  "context": [
    {
      "key": "adults",
      "value": 1
    },
    {
      "key": "hotel_dates",
      "value": "2023-10-01,2023-10-10"
    },
    {
      "key": "hotel_classes",
      "value": [2, 3, 4]
    }
  ]
}

# Obtener respuesta.
response = requests.request(
    'POST',
    'https://realtime.oxylabs.io/v1/queries',
    auth=('USERNAME', 'PASSWORD'),
    json=payload,
)

# Print prettified response to stdout.
pprint(response.json())
```

{% endtab %}

{% tab title="Node.js" %}

```javascript
const https = require("https");

const username = "USERNAME";
const password = "PASSWORD";
const body = {
    source: "google_travel_hotels",
    start_page: 2,
    query: "hoteles en París",
    render: "html",
    parse: true,
    context: [
        { key: "adults", value: 2 },
        { key: "hotel_dates", value: "2023-10-01,2023-10-10" },
        { key: "hotel_classes", value: [2, 3, 4] },
    ],
};

const options = {
    hostname: "realtime.oxylabs.io",
    path: "/v1/queries",
    method: "POST",
    headers: {
        "Content-Type": "application/json",
        Authorization:
            "Basic " + Buffer.from(`${username}:${password}`).toString("base64"),
    },
};

const request = https.request(options, (response) => {
    let data = "";

    response.on("data", (chunk) => {
        data += chunk;
    });

    response.on("end", () => {
        const responseData = JSON.parse(data);
        console.log(JSON.stringify(responseData, null, 2));
    });
});

request.on("error", (error) => {
    console.error("Error:", error);
});

request.write(JSON.stringify(body));
request.end();
```

{% endtab %}

{% tab title="HTTP" %}

```http
https://realtime.oxylabs.io/v1/queries?source=google_travel_hotels&query=hotels+in+Paris&start_page=3&render=html&parse=true&context[0][key]=adults&context[0][value]=1&context[1][key]=hotel_dates&context[1][value]=2023-10-01,2023-10-10&context[2][key]=hotel_classes&context[2][value]=[2,3,4]&access_token=12345abcde
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php

$params = array(
    'source' => 'google_travel_hotels',
    'start_page' => 2,
    'query' => 'hoteles en París',
    'render' => 'html',
    'parse' => true,
    'context' => [
        ['key' => 'adults', 'value' => 2],
        ['key' => 'hotel_dates', 'value' => '2023-10-01,2023-10-10'],
        ['key' => 'hotel_classes', 'value' => [2, 3, 4]]
    ]
);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://realtime.oxylabs.io/v1/queries");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, "USERNAME" . ":" . "PASSWORD");


$headers = array();
$headers[] = "Content-Type: application/json";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
echo $result;

if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);
```

{% endtab %}

{% tab title="Golang" %}

```go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)

func main() {
	const Username = "USERNAME"
	const Password = "PASSWORD"

	payload := map[string]interface{}{
		"source":     "google_travel_hotels",
		"start_page": 2,
		"query":      "hoteles en París",
		"render":     "html",
		"parse":			true,
		"context": []map[string]interface{}{
			{"key": "adults", "value": 2},
			{"key": "hotel_dates", "value": "2023-10-01,2023-10-10"},
			{"key": "hotel_classes", "value": []interface{}{2, 3, 4}},
		},
	}

	jsonValue, _ := json.Marshal(payload)

	client := &http.Client{}
	request, _ := http.NewRequest("POST",
		"https://realtime.oxylabs.io/v1/queries",
		bytes.NewBuffer(jsonValue),
	)

	request.SetBasicAuth(Username, Password)
	response, _ := client.Do(request)

	responseText, _ := ioutil.ReadAll(response.Body)
	fmt.Println(string(responseText))
}
```

{% endtab %}

{% tab title="C#" %}

```csharp
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Json;
using System.Threading.Tasks;

namespace OxyApi
{
    class Program
    {
        static async Task Main()
        {
            const string Username = "USERNAME";
            const string Password = "PASSWORD";

            var parameters = new {
                source = "google_travel_hotels",
                start_page = 2,
                query = "hoteles en París",
                render = "html",
                parse = true,
                context = new dynamic [] {
                    new { key = "adults", value = 2 },
                    new { key = "hotel_dates", value = "2023-10-01,2023-10-10" },
                    new { key = "hotel_classes", value = new int [] {2, 3, 4} }
                }
            };

            var client = new HttpClient();

            Uri baseUri = new Uri("https://realtime.oxylabs.io");
            client.BaseAddress = baseUri;

            var requestMessage = new HttpRequestMessage(HttpMethod.Post, "/v1/queries");
            requestMessage.Content = JsonContent.Create(parameters);

            var authenticationString = $"{Username}:{Password}";
            var base64EncodedAuthenticationString = Convert.ToBase64String(System.Text.ASCIIEncoding.UTF8.GetBytes(authenticationString));
            requestMessage.Headers.Add("Authorization", "Basic " + base64EncodedAuthenticationString);

            var response = await client.SendAsync(requestMessage);
            var contents = await response.Content.ReadAsStringAsync();

            Console.WriteLine(contents);
        }
    }
}
```

{% endtab %}

{% tab title="Java" %}

```java
package org.example;

import okhttp3.*;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.concurrent.TimeUnit;

public class Main implements Runnable {
    private static final String AUTHORIZATION_HEADER = "Authorization";
    public static final String USERNAME = "USERNAME";
    public static final String PASSWORD = "PASSWORD";

    public void run() {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("source", "google_travel_hotels");
        jsonObject.put("start_page", 2);
        jsonObject.put("query", "hoteles en París");
        jsonObject.put("render", "html");
        jsonObject.put("parse", true);
        jsonObject.put("context", new JSONArray()
                .put(new JSONObject().put("key", "adults").put("value", 2))
                .put(new JSONObject().put("key", "hotel_dates").put("value", "2023-10-01,2023-10-10"))
                .put(new JSONObject().put("key", "hotel_classes").put("value", new JSONArray().put(2).put(3).put(4)))
        );

        Authenticator authenticator = (route, response) -> {
            String credential = Credentials.basic(USERNAME, PASSWORD);
            return response
                    .request()
                    .newBuilder()
                    .header(AUTHORIZATION_HEADER, credential)
                    .build();
        };

        var client = new OkHttpClient.Builder()
                .authenticator(authenticator)
                .readTimeout(180, TimeUnit.SECONDS)
                .build();

        var mediaType = MediaType.parse("application/json; charset=utf-8");
        var body = RequestBody.create(jsonObject.toString(), mediaType);
        var request = new Request.Builder()
                .url("https://realtime.oxylabs.io/v1/queries")
                .post(body)
                .build();

        try (var response = client.newCall(request).execute()) {
            if (response.body() != null) {
                try (var responseBody = response.body()) {
                    System.out.println(responseBody.string());
                }
            }
        } catch (Exception exception) {
            System.out.println("Error: " + exception.getMessage());
        }

        System.exit(0);
    }

    public static void main(String[] args) {
        new Thread(new Main()).start();
    }
}
```

{% endtab %}

{% tab title="JSON" %}

```json
{
    "source": "google_travel_hotels",
    "start_page": 2, 
    "query": "hoteles en París",
    "render": "html", 
    "parse": true,
    "context": [
        {
            "key": "adults", 
            "value": 2
        }, 
        {
            "key": "hotel_dates", 
            "value": "2023-10-01,2023-10-10"
        },
        {
            "key": "hotel_classes", 
            "value": [2,3,4]
        }
    ]
}
```

{% endtab %}
{% endtabs %}

Usamos integración síncrona [**Realtime**](/products/es/web-scraper-api/integration-methods/realtime.md) método de integración en nuestros ejemplos. Si deseas usar [**Proxy Endpoint**](/products/es/web-scraper-api/integration-methods/proxy-endpoint.md) o una integración asíncrona [**Push-Pull**](/products/es/web-scraper-api/integration-methods/push-pull.md) integración, consulta la [**métodos de integración**](/products/es/web-scraper-api/integration-methods.md) sección.

## Parámetros de la solicitud

### Genérico

<table><thead><tr><th width="164">Parámetro</th><th width="471.3333333333333">Descripción</th><th width="116">Valor predeterminado</th></tr></thead><tbody><tr><td><mark style="background-color:green;"><strong><code>source</code></strong></mark></td><td>Establece el scraper. Usa <code>google_travel_hotels</code>.</td><td>–</td></tr><tr><td><mark style="background-color:green;"><strong><code>consulta</code></strong></mark></td><td><p>Término de búsqueda para la solicitud. <code>"query": "hoteles"</code> devolverá una lista de hoteles en un <code>geo_location</code>.</p><p><code>"query": "hoteles en &#x3C;Location>"</code> devolverá una lista de hoteles para <code>&#x3C;Location></code>. (p. ej. <code>"query": "hoteles en París"</code> mostrará hoteles en París, independientemente de <code>geo_location</code>)</p></td><td>–</td></tr><tr><td><strong><code>render</code></strong></td><td>Habilita el renderizado de JavaScript cuando se establece en <code>html</code>. <a href="/products/es/web-scraper-api/features/js-rendering-and-browser-control.md#javascript-rendering"><strong>Más información</strong></a><strong>.</strong></td><td>–</td></tr><tr><td><code>parse</code></td><td>Devuelve datos analizados cuando se establece en <code>true</code>. Consulta más en <a href="#output-dictionary"><strong>diccionario de salida</strong></a>.</td><td><code>false</code></td></tr><tr><td><code>callback_url</code></td><td>URL para tu endpoint de callback. <a href="/products/es/web-scraper-api/integration-methods/push-pull.md"><strong>Más información</strong></a><strong>.</strong></td><td>–</td></tr><tr><td><code>user_agent_type</code></td><td>Tipo de dispositivo y navegador. La lista completa se puede encontrar <a href="/products/es/web-scraper-api/features/http-context-and-job-management/user-agent-type.md"><strong>aquí</strong></a>.</td><td><code>desktop</code></td></tr></tbody></table>

\- parámetro obligatorio

### Localización

Adapta los resultados de búsqueda a ubicaciones geográficas y lenguajes específicos.

<table><thead><tr><th width="222">Parámetro</th><th width="350.3333333333333">Descripción</th><th>Valor predeterminado</th></tr></thead><tbody><tr><td><code>geo_location</code></td><td>La ubicación geográfica a la que debe adaptarse el resultado. <strong>Usar este parámetro correctamente es extremadamente importante para obtener los datos correctos.</strong> Ten en cuenta que esta fuente puede aceptar un número limitado de <code>geo_location</code> valores - consulta <a href="/products/es/web-scraper-api/features/localization/serp-localization.md#google-travel-hotels"><strong>esta sección</strong></a> para ver <code>geo_location</code> los valores que <strong>no</strong> producen resultados precisos.</td><td>-</td></tr><tr><td><code>locale</code></td><td><code>Accept-Language</code> valor del encabezado que cambia el idioma de la interfaz web de tu página de búsqueda de Google. <a href="/products/es/web-scraper-api/features/localization/domain-locale.md#locale-1"><strong>Más información</strong></a>.</td><td>-</td></tr></tbody></table>

{% hint style="info" %}
**NOTA:** `"geo_location": "United States"` y otras ubicaciones de amplia zona no son compatibles. Usa ubicaciones a nivel de ciudad `geo_location`, por ejemplo, `Seattle,Washington,United States`
{% endhint %}

### Paginación

<table><thead><tr><th width="222">Parámetro</th><th width="350.3333333333333">Descripción</th><th width="167">Valor predeterminado</th></tr></thead><tbody><tr><td><code>start_page</code></td><td>Número de página inicial.</td><td><code>1</code></td></tr></tbody></table>

### Filtrado

Opciones avanzadas para adaptar y refinar el contexto de búsqueda.

<table><thead><tr><th width="222">Parámetro</th><th width="350.3333333333333">Descripción</th><th>Valor predeterminado</th></tr></thead><tbody><tr><td><code>context:adults</code></td><td>Número de huéspedes adultos</td><td><code>2</code></td></tr><tr><td><code>context:children</code></td><td>Número de huéspedes niños</td><td>-</td></tr><tr><td><code>contexto</code>:<br><code>hotel_classes</code></td><td>Filtra los resultados por número de estrellas del hotel. Puedes especificar uno o más valores entre <code>2</code> y <code>5</code>. Ejemplo: <code>[3,4]</code></td><td>-</td></tr><tr><td><code>contexto</code>:<br><code>hotel_dates</code></td><td>Fechas para alojarse en el hotel, de - a. Ejemplo: <code>2023-07-12,2023-07-13</code></td><td>-</td></tr></tbody></table>

Todos los parámetros de contexto deben usarse en los `contexto` array como objetos con `key` y `valor` pares:

```json
...
"context": [
    {
        "key": "filter",
        "value": "0"
    }
]
...
```

## Datos estructurados

Web Scraper API puede extraer resultados HTML o una respuesta JSON que contiene datos estructurados de varios elementos de la página de resultados.

<details>

<summary>Estructurado <code>google_travel_hotels</code> salida (JSON)</summary>

```json
{
    "results": [
        {
            "content": {
                "url": "https://www.google.com/travel/search?q=hotels+in+Spain&qs=OAA&hl=en&gl=us",
                "page": 1,
                "parse_status_code": 12000,
                "last_visible_page": -1,
                "results": {
                    "offers": [
                        {
                            "pos": 1,
                            "type": "hotel",
                            "name": "El Oceano Beach Hotel & Restaurant",
                            "description": "Alojamiento refinado frente a la playa, con restaurante, piscina al aire libre y 2 bares.",
                            "property_token": "ChcImqqwzb7WqI51GgsvZy8xdGZ2MXhxNBAB",
                            "hotel_class": {
                                "stars": 4,
                                "label": "hotel de 4 estrellas"
                            },
                            "rating": {
                                "overall": 4.6,
                                "reviews": 1303
                            },
                            "deal": {
                                "label": "GRAN OFERTA",
                                "description": "31% menos de lo habitual"
                            },
                            "eco_certified": true,
                            "pricing": {
                                "price": { "amount": 311, "currency": "USD" },
                                "price_with_tax": { "amount": 342, "currency": "USD" },
                                "total_price": { "amount": 311, "currency": "USD" },
                                "total_price_with_tax": { "amount": 342, "currency": "USD" }
                            },
                            "check_in_time": "2:00 PM",
                            "check_out_time": "12:00 PM",
                            "coordinates": {
                                "latitude": 36.4909496,
                                "longitude": -4.6948331
                            },
                            "amenities": [
                                "Desayuno ($)",
                                "Wi-Fi gratis",
                                "Aparcamiento gratis",
                                "Piscinas",
                                "Jacuzzi",
                                "Aire acondicionado",
                                "Gimnasio",
                                "Spa"
                            ],
                            "images": [
                                {
                                    "thumbnail_url": "https://lh3.googleusercontent.com/gps-cs-s/AC9h...=s287-w287-h192-n-k-no-v1",
                                    "original_url": "https://lh3.googleusercontent.com/gps-cs-s/AC9h..."
                                },
                                {
                                    "thumbnail_url": "https://lh3.googleusercontent.com/gps-cs-s/AB7n...=s287-w287-h192-n-k-no-v1",
                                    "original_url": "https://lh3.googleusercontent.com/gps-cs-s/AB7n..."
                                }
                            ],
                            "nearby_places": [
                                {
                                    "category_id": 1,
                                    "name": "Cabopino Beach",
                                    "transport_mode_id": 0,
                                    "travel_time": "9 min"
                                },
                                {
                                    "category_id": 3,
                                    "name": "Málaga-Costa del Sol Airport",
                                    "transport_mode_id": 0,
                                    "travel_time": "29 min"
                                }
                            ],
                            "website_url": "https://www.oceanohotel.com/",
                            "details_url": "https://www.google.com/travel/hotels/entity/ChcImqqwzb7WqI51GgsvZy8xdGZ2MXhxNBAB?q=hotels+in+Spain&hl=en&gl=us",
                            "reviews_url": "https://www.google.com/travel/hotels/entity/ChcImqqwzb7WqI51GgsvZy8xdGZ2MXhxNBAB/reviews?q=hotels+in+Spain&hl=en&gl=us"
                        },
                        {
                            "pos": 2,
                            "type": "hotel",
                            "name": "Apartamentos Vista del Mar",
                            "property_token": "ChkQ5Nm9m7SusuhsGg0vZy8xMXlzNjB6bGtsEAI",
                            "rating": {
                                "overall": 4.2,
                                "reviews": 642
                            },
                            "pricing": {
                                "price": { "amount": 96, "currency": "USD" },
                                "price_with_tax": { "amount": 105, "currency": "USD" },
                                "total_price": { "amount": 96, "currency": "USD" },
                                "total_price_with_tax": { "amount": 105, "currency": "USD" }
                            },
                            "check_in_time": "3:00 PM",
                            "check_out_time": "12:00 PM",
                            "coordinates": {
                                "latitude": 36.4363785,
                                "longitude": -5.1079798
                            },
                            "amenities": [
                                "Apartamento",
                                "Para 10 personas",
                                "19 dormitorios",
                                "10 baños",
                                "Traslado al aeropuerto",
                                "Piscina al aire libre",
                                "Wi-Fi gratis"
                            ],
                            "images": [
                                {
                                    "thumbnail_url": "https://lh6.googleusercontent.com/proxy/Qnw3...=s287-w287-h192-n-k-no-v1",
                                    "original_url": "https://lh6.googleusercontent.com/proxy/Qnw3..."
                                }
                            ],
                            "nearby_places": [
                                {
                                    "category_id": 3,
                                    "name": "Alicante Airport",
                                    "transport_mode_id": 0,
                                    "travel_time": "18 min"
                                }
                            ],
                            "website_url": "http://www.hotellosangelesdenia.com/",
                            "details_url": "https://www.google.com/travel/hotels/entity/ChkQ5Nm9m7SusuhsGg0vZy8xMXlzNjB6bGtsEAI?q=hotels+in+Spain&hl=en&gl=us",
                            "reviews_url": "https://www.google.com/travel/hotels/entity/ChkQ5Nm9m7SusuhsGg0vZy8xMXlzNjB6bGtsEAI/reviews?q=hotels+in+Spain&hl=en&gl=us"
                        }
                        // ... up to 18 more offers
                    ],
                    "overview": {
                        "country": "us",
                        "language": "en",
                        "total_results": 15000
                    },
                    "pagination": {
                        "current_from": 1,
                        "current_to": 20
                    }
                }
            },
            "created_at": "2026-06-17 14:23:22",
            "updated_at": "2026-06-17 14:23:26",
            "page": 1,
            "url": "https://www.google.com/travel/search?q=hotels+in+Spain&qs=OAA&hl=en&gl=us",
            "job_id": "7473017451119126529",
            "status_code": 200
        }
    ]
}
```

</details>

## Diccionario de salida

La tabla siguiente presenta una lista detallada de cada elemento de nivel superior que analizamos, junto con su descripción y tipo de datos.

{% hint style="info" %}
El número de ofertas y ciertos campos puede variar según la consulta de búsqueda y la propiedad.
{% endhint %}

<table data-full-width="false"><thead><tr><th width="199">Clave</th><th width="421">Descripción</th><th width="107">Tipo</th></tr></thead><tbody><tr><td><code>url</code></td><td>URL de la página de búsqueda de hoteles de Google Travel.</td><td>cadena</td></tr><tr><td><code>page</code></td><td>Número de página actual de los resultados de búsqueda.</td><td>entero</td></tr><tr><td><code>last_visible_page</code></td><td>Número máximo de página visible en la página de resultados.</td><td>entero</td></tr><tr><td><code>parse_status_code</code></td><td>El código de estado del trabajo de análisis. Más información <a href="https://developers.oxylabs.io/scraper-apis/web-scraper-api/response-codes#parsers"><strong>aquí</strong></a>.</td><td>entero</td></tr><tr><td><code>results</code></td><td>Objeto que contiene los resultados analizados de la búsqueda de hoteles.</td><td>objeto</td></tr><tr><td><code>results.offers</code></td><td>Lista de ofertas de hoteles devueltas para la consulta. Incluye <code>pos</code>, <code>nombre</code>, <code>description</code>, <code>property_token</code>, <code>hotel_class</code>, <code>rating</code>, <code>deal</code>, <code>eco_certified</code>, <code>pricing</code>, <code>check_in_time</code>, <code>check_out_time</code>, <code>coordinates</code>, <code>amenities</code>, <code>images</code>, <code>nearby_places</code>, <code>website_url</code>, <code>details_url</code>, <code>reviews_url</code>.</td><td>arreglo</td></tr><tr><td><code>results.overview</code></td><td>Detalles generales sobre los resultados de búsqueda. Incluye <code>país</code>, <code>language</code>, <code>total_results</code>.</td><td>objeto</td></tr><tr><td><code>results.pagination</code></td><td>Detalles sobre la página actual de resultados. Incluye <code>current_from</code>, <code>current_to</code>.</td><td>objeto</td></tr><tr><td><code>creado_en</code></td><td>Marca de tiempo en que se creó el trabajo de scraping.</td><td>marca_de_tiempo</td></tr><tr><td><code>actualizado_en</code></td><td>Marca de tiempo en que se terminó el trabajo de scraping.</td><td>marca_de_tiempo</td></tr><tr><td><code>id_del_trabajo</code></td><td>ID del trabajo asociado con el trabajo de scraping.</td><td>cadena</td></tr><tr><td><code>código_de_estado</code></td><td>Código de estado del trabajo de scraping. Más información <a href="/products/es/web-scraper-api/response-codes.md"><strong>aquí</strong></a>.</td><td>entero</td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://developers.oxylabs.io/api-targets/es/search-engines/google/travel-hotels.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
