---
title: "Search Results"
method: GET
path: "/agent-hotels/searches/{token}"
tags: ["agent-hotels"]
---

# Search Results

`GET /agent-hotels/searches/{token}`

## Request

- Base URL: `https://api.helloaxel.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.helloaxel.com/agent-hotels/searches/{token}`
- Auth: none declared

## Path parameters

- `token` string, uuid, required

## Response `200`

Successful Response

- AgentHotelSearchResults
  - `token` string, uuid, required
  - `search` AgentHotelSearch, required
    - `destination` string, required
    - `stay` AgentHotelStay, required
      - `check_in` string, date, required
      - `check_out` string, date, required
      - `rooms` GuestRoomOutput[], required
        - `adults` integer, required: Number of adults
        - `children` object[]: List of children with ages
    - `intent` AgentHotelIntent
      - `sort_by` 'recommended' | 'price-asc' | 'price-desc' | 'rating' | 'rating-asc' | 'deal' | 'distance'
      - `min_stars` number, nullable
      - `min_rating` number, nullable
      - `min_price` number, nullable
      - `max_price` number, nullable
      - `price_basis` 'standard' | 'member'
      - `breakfast_only` boolean
      - `refundable_only` boolean
      - `budget` HotelBrowseBudget
        - `amount` integer, required: Minor currency units
        - `currency` 'USD' | 'EUR' | 'GBP', required
        - `kind` 'target' | 'maximum', required
        - `unit` 'room_night' | 'stay'
      - `area` string, nullable
      - `area_kind` 'prefer' | 'require'
      - `central` boolean
    - `previous` string, uuid, nullable
    - `page` integer
  - `status` 'pending' | 'pricing' | 'judging' | 'paused' | 'failed', required
  - `hotels` HotelSearchResult[]
    - `hotel_id` integer, required
    - `name` string, required
    - `latitude` number, required
    - `longitude` number, required
    - `star_rating` number, nullable
    - `review_rating` number, nullable
    - `review_rating_source` string, nullable
    - `expedia_rating` number, nullable
    - `google_rating` number, nullable
    - `google_review_count` integer, nullable
    - `comparison_property_key` string, nullable
    - `hotel_chain` string, nullable
    - `address` string, required
    - `city` string, nullable
    - `country_code` string, nullable
    - `amenities` string[]
    - `image_url` string, nullable
    - `image_urls` string[]
    - `price` HotelPrice: Best known price for a hotel. Starts approximate (from cache), then gets replaced with live data from the provider once pricing resolves. Phase 1 (cached): is_approximate=True, only nightly_rate + total populated. Phase 2 (live): is_approximate=False, all fields populated from provider. Client rendering: always read price.nightly_rate. If is_approximate, show with "~" prefix. No field branching needed.
      - `nightly_rate` Money, required: Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
        - `amount` integer, required
        - `currency` string, required
      - `total` Money, required: Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
        - `amount` integer, required
        - `currency` string, required
      - `member_nightly_rate` Money: Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
        - `amount` integer, required
        - `currency` string, required
      - `member_total` Money: Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
        - `amount` integer, required
        - `currency` string, required
      - `flight_discount` Money: Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
        - `amount` integer, required
        - `currency` string, required
      - `is_approximate` boolean, required
      - `cached_at` string, date-time, required
      - `room_name` string, nullable
      - `provider` string, nullable
      - `breakfast_included` boolean, nullable
      - `is_refundable` boolean, nullable
      - `free_cancellation_until` string, date-time, nullable
      - `meal_plan` string, nullable
      - `bed_type` string, nullable
      - `mandatory_fees` MandatoryFee[]
        - `name` string, required
        - `fee_type` string, nullable
        - `unit_amount` Money: Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
          - `amount` integer, required
          - `currency` string, required
        - `pricing_unit` string, nullable
        - `total` Money: Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
          - `amount` integer, required
          - `currency` string, required
        - `source` string, nullable
      - `retail_comparison_total` Money: Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
        - `amount` integer, required
        - `currency` string, required
      - `retail_comparison_nightly` Money: Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
        - `amount` integer, required
        - `currency` string, required
      - `exact_public_rate_comparison` ExactPublicRateComparison: Fee-normalized proof for the exact public version of this stay.
        - `source` string, required
        - `public_total` Money, required: Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
          - `amount` integer, required
          - `currency` string, required
        - `customer_total` Money, required: Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
          - `amount` integer, required
          - `currency` string, required
        - `savings_bucket_percent` integer, required
      - `all_in_total` Money: Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
        - `amount` integer, required
        - `currency` string, required
      - `all_in_nightly` Money: Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
        - `amount` integer, required
        - `currency` string, required
      - `member_all_in_total` Money: Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
        - `amount` integer, required
        - `currency` string, required
      - `member_all_in_nightly` Money: Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
        - `amount` integer, required
        - `currency` string, required
    - `compare_price` ComparePrice: Expedia retail benchmark price for comparison display. Display-only — not bookable. Used to show "Save X% vs Expedia".
      - `nightly_rate` Money, required: Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
        - `amount` integer, required
        - `currency` string, required
      - `total` Money, required: Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
        - `amount` integer, required
        - `currency` string, required
      - `savings_percent` number, required: Fraction saved vs Expedia, e.g. 0.22 = 22%. Negative means ETG is more expensive.
      - `confidence` 'estimated' | 'cached' | 'live' | 'detail', required: Quality tier of compare price data.
      - `source` string
      - `provider` string, nullable: Displayed retail provider from the compare source, e.g. Expedia.com.
      - `fetched_at` string, date-time, nullable
    - `price_proof` HotelPriceProof: Completed fresh price check; claims remain optional and independent.
      - `checked_at` string, date-time, required
      - `expires_at` string, date-time, required
      - `breakfast_only` boolean: Comparison uses only explicitly breakfast-inclusive rates.
      - `public` HotelPriceProofPublic: A fresh, checkable public-OTA comparison that Axel wins.
        - `provider` 'Expedia' | 'Booking.com', required
        - `axel_total` Money, required: Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
          - `amount` integer, required
          - `currency` string, required
        - `public_total` Money, required: Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
          - `amount` integer, required
          - `currency` string, required
        - `savings_percent` integer, required
        - `link` string, nullable
      - `timing` HotelPriceProofTiming: Google's independent historical booking-time signal.
        - `percent_below_usual` integer, required
      - `comparison` HotelPriceProofComparison: Single-room comparison bound to the checked stay and Axel total.
        - `axel_total` Money, required: Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
          - `amount` integer, required
          - `currency` string, required
        - `check_in` string, date, required
        - `check_out` string, date, required
        - `adults` integer, required
        - `children_ages` integer[], required
        - `providers` HotelPriceProofProvider[], required
          - `provider` 'hotel_website' | 'expedia' | 'booking.com', required
          - `total` Money, required: Immutable money value stored as integer minor units. Amount is always stored in the smallest currency unit (cents, yen, pesos, etc). This avoids floating-point precision issues and matches payment processor standards. Examples: $19.99 USD -> Money(amount=1999, currency="USD") ¥1000 JPY -> Money(amount=1000, currency="JPY") $1000.00 CLP -> Money(amount=1000, currency="CLP") Serializes to {"amount": 1999, "currency": "USD"}. IMPORTANT: Use Money.from_decimal() for user-facing amounts like "$19.99". The constructor expects integer minor units (cents).
            - `amount` integer, required
            - `currency` string, required
    - `score` number, nullable
    - `distance_km` number, nullable
    - `cluster_id` string, nullable
    - `cluster_below_zoom` integer, nullable
    - `debug` object, nullable
  - `picks` HotelCurationPick[]
    - `hotel_id` integer, required
    - `fit` 'great' | 'good' | 'fine', required
    - `map_tag` string, nullable
    - `verdict` string, required
    - `reasons` HotelCurationReason[]
      - `stance` 'for' | 'tradeoff' | 'against', required
      - `text` string, required
  - `take` string, nullable
  - `checked_hotels` integer
  - `candidate_count` integer
  - `retry_after_seconds` integer, nullable
  - `checked_at` string, date-time, nullable

## Other responses

- `422`: Validation Error

## Changes

> 68 revisions in range; 1 not diffed.

- **2026-10-19** `aeb2b2024b68`: 1 info
  - added the optional property `search/page` to the response with the `200` status
- **2026-10-16** `0c493e7eb35c`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/helloaxel/apis/client-api-gateway/changes/agent-hotels/searches/:token/get.md)

---

[API](https://skmtc.dev/helloaxel/apis/client-api-gateway.md) · [All operations](https://skmtc.dev/helloaxel/apis/client-api-gateway/llms.txt) · [OpenAPI document](https://skmtc.dev/helloaxel/apis/client-api-gateway/revisions/8824999a7a0a?raw)
