# Destination discovery with [travel_explore_search](../reference/travel_explore_search.md#serpapi_search_tools.travel_explore_search)

[travel_explore_search](../reference/travel_explore_search.md#serpapi_search_tools.travel_explore_search) uses Google Travel Explore to find possible destinations and fares from a departure location. Only `departure_id` is required, so an agent can start broad and add region, date, cabin, or passenger constraints when the user supplies them.


# When to use it

Use it for questions such as "Where can I fly from JFK for a long weekend?" or "Which European cities fit this budget?" Choose [`flights_search`](flights_search.md) once both origin and destination are known, and [`hotels_search`](hotels_search.md) after a destination and stay window are selected.


# Quick example

``` python
from serpapi_search_tools import travel_explore_search

destination_tool = travel_explore_search(
    default_params={"currency": "USD", "gl": "us"},
)
agent_tools = [destination_tool]
```

Example broad invocation:

``` json
{"departure_id": "JFK", "adults": 1, "travel_class": "economy"}
```


# Inputs the agent can provide

| Field | Type | Required | Default and constraints |
|----|----|----|----|
| `departure_id` | string | yes | Airport IATA code such as `JFK`, or an exact city Google Knowledge Graph location ID (KGMID) beginning with `/m/` or `/g/`, such as `/m/04jpl` for London; metropolitan codes such as `LON` are unsupported; see the [Google Travel Explore API](https://serpapi.com/google-travel-explore-api); comma-separated values are supported |
| `arrival_id` | string | no | Specific arrival airport IATA code or city KGMID beginning with `/m/` or `/g/`, such as `/m/05qtj` for Paris; use `arrival_area_id` for a region or country; mutually exclusive with it |
| `arrival_area_id` | string | no | Region or country KGMID beginning with `/m/` or `/g/`, such as `/m/02j9z` for Europe; use `arrival_id` for an airport or city; mutually exclusive with it |
| `outbound_date` | date string | no | Future date in `YYYY-MM-DD` format; omit for flexible-date exploration |
| `return_date` | date string | no | Requires outbound, cannot be earlier, and should be omitted for one-way or flexible-date exploration |
| `travel_class` | enum | no | `economy`; also `premium_economy`, `business`, or `first` |
| `adults` | integer | no | `1`; at least `1` |
| `children` | integer | no | `0`; cannot be negative |
| `infants_in_seat` | integer | no | `0`; cannot be negative |
| `infants_on_lap` | integer | no | `0`; cannot be negative |


# Configure the tool

| Constructor option | Default | Use it for |
|----|----|----|
| `provider` | `"auto"` | Detect one installed SDK or select one explicitly |
| `default_params` | `None` | Fix currency, locale, price, stops, duration, or supported interest filters |
| `mode` | `compact` | Return the main destination result section; use [SearchResultMode.FULL](../reference/SearchResultMode.md#serpapi_search_tools.SearchResultMode.FULL) to keep supporting sections and all fields on retained results |
| `response_format` | `markdown` | Return Markdown by default, or use [SearchResultFormat.JSON](../reference/SearchResultFormat.md#serpapi_search_tools.SearchResultFormat.JSON) for structured fields |
| `result_limit` | `50` | Maximum `destinations` retained in either mode |
| `api_key` | `None` | Override environment key lookup |
| `timeout` | `None` | Set the built-in client timeout |
| `client` | `None` | Add caching, logging, testing, or response reduction |
| `include_examples` | `True` | Add a destination-discovery hint to the description |
| `name` | `"travel_explore_search"` | Rename a configured discovery capability |


# Useful SerpApi parameters

Currency and market are common application defaults:

``` python
from serpapi_search_tools import travel_explore_search

us_destination_ideas = travel_explore_search(
    default_params={"currency": "USD", "gl": "us", "hl": "en"},
    name="us_destination_ideas",
)
```

SerpApi supports more discovery constraints, including price, stops, duration, travel mode, and interest settings. Use the official reference for exact values. The package rejects `travel_mode` combined with `interest` because those modes are incompatible.


# What comes back

Both modes return up to `result_limit` `destinations` (50 by default). Destination entries may include place names, countries, airports, flight prices, durations, stops, dates, images, and location data. Use full mode when application code needs supporting response sections or additional result fields. Add `result_limit=None` to keep every returned destination.


# Common mistakes

- Travel Explore starts from `departure_id` and has no text-query input.
- Using a metropolitan code such as `LON` instead of an airport IATA code or city KGMID.
- Supplying `return_date` without `outbound_date`.
- `arrival_area_id` accepts a region or country Google Knowledge Graph location ID beginning with `/m/` or `/g/`.
- Combining `travel_mode` and `interest` in `default_params`.
- Using Explore for a route that is already known; use [flights_search](../reference/flights_search.md#serpapi_search_tools.flights_search) for a tighter schema.


# Official SerpApi documentation

- [Google Travel Explore API](https://serpapi.com/google-travel-explore-api)

See the [destination ideas recipe](recipes.md), the [direct travel example](examples.md), and the [OpenAI Agents travel planner](../docs/sdk-examples/openai_agents.md).
