travel.hotel.search
Search hotels around a coordinate for given dates and guests. Returns a normalized Hotel page.
curl --request POST \
--url https://api.agentkey.app/v2/ops/travel.hotel.search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"checkin": "<string>",
"checkout": "<string>",
"lat": 0,
"lon": 0,
"adults": 2,
"currency": "USD",
"cursor": "<string>",
"fields": [
"<string>"
],
"include_raw": false,
"lang": "<string>",
"limit": 10,
"price_max": 123,
"price_min": 123,
"provider": "<string>",
"radius_km": 123,
"rooms": 1,
"routing": {
"allow_fallbacks": true,
"only": [
"<string>"
],
"order": [
"<string>"
],
"strategy": "auto"
}
}
'import requests
url = "https://api.agentkey.app/v2/ops/travel.hotel.search"
payload = {
"checkin": "<string>",
"checkout": "<string>",
"lat": 0,
"lon": 0,
"adults": 2,
"currency": "USD",
"cursor": "<string>",
"fields": ["<string>"],
"include_raw": False,
"lang": "<string>",
"limit": 10,
"price_max": 123,
"price_min": 123,
"provider": "<string>",
"radius_km": 123,
"rooms": 1,
"routing": {
"allow_fallbacks": True,
"only": ["<string>"],
"order": ["<string>"],
"strategy": "auto"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
checkin: '<string>',
checkout: '<string>',
lat: 0,
lon: 0,
adults: 2,
currency: 'USD',
cursor: '<string>',
fields: ['<string>'],
include_raw: false,
lang: '<string>',
limit: 10,
price_max: 123,
price_min: 123,
provider: '<string>',
radius_km: 123,
rooms: 1,
routing: {
allow_fallbacks: true,
only: ['<string>'],
order: ['<string>'],
strategy: 'auto'
}
})
};
fetch('https://api.agentkey.app/v2/ops/travel.hotel.search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.agentkey.app/v2/ops/travel.hotel.search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'checkin' => '<string>',
'checkout' => '<string>',
'lat' => 0,
'lon' => 0,
'adults' => 2,
'currency' => 'USD',
'cursor' => '<string>',
'fields' => [
'<string>'
],
'include_raw' => false,
'lang' => '<string>',
'limit' => 10,
'price_max' => 123,
'price_min' => 123,
'provider' => '<string>',
'radius_km' => 123,
'rooms' => 1,
'routing' => [
'allow_fallbacks' => true,
'only' => [
'<string>'
],
'order' => [
'<string>'
],
'strategy' => 'auto'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.agentkey.app/v2/ops/travel.hotel.search"
payload := strings.NewReader("{\n \"checkin\": \"<string>\",\n \"checkout\": \"<string>\",\n \"lat\": 0,\n \"lon\": 0,\n \"adults\": 2,\n \"currency\": \"USD\",\n \"cursor\": \"<string>\",\n \"fields\": [\n \"<string>\"\n ],\n \"include_raw\": false,\n \"lang\": \"<string>\",\n \"limit\": 10,\n \"price_max\": 123,\n \"price_min\": 123,\n \"provider\": \"<string>\",\n \"radius_km\": 123,\n \"rooms\": 1,\n \"routing\": {\n \"allow_fallbacks\": true,\n \"only\": [\n \"<string>\"\n ],\n \"order\": [\n \"<string>\"\n ],\n \"strategy\": \"auto\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.agentkey.app/v2/ops/travel.hotel.search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"checkin\": \"<string>\",\n \"checkout\": \"<string>\",\n \"lat\": 0,\n \"lon\": 0,\n \"adults\": 2,\n \"currency\": \"USD\",\n \"cursor\": \"<string>\",\n \"fields\": [\n \"<string>\"\n ],\n \"include_raw\": false,\n \"lang\": \"<string>\",\n \"limit\": 10,\n \"price_max\": 123,\n \"price_min\": 123,\n \"provider\": \"<string>\",\n \"radius_km\": 123,\n \"rooms\": 1,\n \"routing\": {\n \"allow_fallbacks\": true,\n \"only\": [\n \"<string>\"\n ],\n \"order\": [\n \"<string>\"\n ],\n \"strategy\": \"auto\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agentkey.app/v2/ops/travel.hotel.search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"checkin\": \"<string>\",\n \"checkout\": \"<string>\",\n \"lat\": 0,\n \"lon\": 0,\n \"adults\": 2,\n \"currency\": \"USD\",\n \"cursor\": \"<string>\",\n \"fields\": [\n \"<string>\"\n ],\n \"include_raw\": false,\n \"lang\": \"<string>\",\n \"limit\": 10,\n \"price_max\": 123,\n \"price_min\": 123,\n \"provider\": \"<string>\",\n \"radius_km\": 123,\n \"rooms\": 1,\n \"routing\": {\n \"allow_fallbacks\": true,\n \"only\": [\n \"<string>\"\n ],\n \"order\": [\n \"<string>\"\n ],\n \"strategy\": \"auto\"\n }\n}"
response = http.request(request)
puts response.read_body{
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"credits_charged": 123,
"data": {
"items": [
{
"address": "<string>",
"checkin": "<string>",
"checkout": "<string>",
"city": "<string>",
"country": "<string>",
"id": "<string>",
"lat": 123,
"lon": 123,
"name": "<string>",
"photo_url": "<string>",
"price": {
"amount": 123,
"currency": "<string>"
},
"rating": {
"count": 123,
"score": 123
},
"stars": 123,
"url": "<string>"
}
],
"next_cursor": "<string>"
},
"op": "<string>",
"op_version": 123,
"provider": "<string>",
"request_id": "<string>",
"took_ms": 123,
"unsupported_fields": [
"<string>"
],
"raw": "<unknown>",
"raw_truncated": true
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}Authorizations
AgentKey API key (ak_…).
Body
Check-in date, YYYY-MM-DD.
Check-out date, YYYY-MM-DD.
Latitude of the search centre, decimal degrees.
-90 <= x <= 90Longitude of the search centre, decimal degrees.
-180 <= x <= 180Number of adult guests.
1 <= x <= 30ISO 4217 currency for prices.
Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.
Projection: keep only these dotted paths of data, e.g. ["items.id", "items.text"].
Attach the raw upstream payload as raw (not a stable contract; truncated above 256 KB).
Booking language code for names, e.g. en-us, zh-cn.
Maximum number of hotels to return.
1 <= x <= 20Maximum total price filter, in the requested currency.
Minimum total price filter, in the requested currency.
Shorthand for routing.only = [provider].
Search radius around the point, km (the provider default is very wide).
Number of rooms.
1 <= x <= 30Provider routing override. order: try these providers first; only: restrict to these (equivalent to pinning); allow_fallbacks: false tries only the first eligible provider.
Show child attributes
Show child attributes
Response
Success envelope
Success envelope whose data is a HotelPage.
Show child attributes
Show child attributes
Credits charged for this call (the method's fixed price).
One page of hotel offers.
Show child attributes
Show child attributes
Method name.
Method version that served the call.
Provider that actually served the call.
Correlation id; quote it in support requests.
Output paths this provider structurally does not supply; such fields are null for a different reason than 'missing on this record'.
Upstream payload, only with include_raw=true. Not a stable contract.
curl --request POST \
--url https://api.agentkey.app/v2/ops/travel.hotel.search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"checkin": "<string>",
"checkout": "<string>",
"lat": 0,
"lon": 0,
"adults": 2,
"currency": "USD",
"cursor": "<string>",
"fields": [
"<string>"
],
"include_raw": false,
"lang": "<string>",
"limit": 10,
"price_max": 123,
"price_min": 123,
"provider": "<string>",
"radius_km": 123,
"rooms": 1,
"routing": {
"allow_fallbacks": true,
"only": [
"<string>"
],
"order": [
"<string>"
],
"strategy": "auto"
}
}
'import requests
url = "https://api.agentkey.app/v2/ops/travel.hotel.search"
payload = {
"checkin": "<string>",
"checkout": "<string>",
"lat": 0,
"lon": 0,
"adults": 2,
"currency": "USD",
"cursor": "<string>",
"fields": ["<string>"],
"include_raw": False,
"lang": "<string>",
"limit": 10,
"price_max": 123,
"price_min": 123,
"provider": "<string>",
"radius_km": 123,
"rooms": 1,
"routing": {
"allow_fallbacks": True,
"only": ["<string>"],
"order": ["<string>"],
"strategy": "auto"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
checkin: '<string>',
checkout: '<string>',
lat: 0,
lon: 0,
adults: 2,
currency: 'USD',
cursor: '<string>',
fields: ['<string>'],
include_raw: false,
lang: '<string>',
limit: 10,
price_max: 123,
price_min: 123,
provider: '<string>',
radius_km: 123,
rooms: 1,
routing: {
allow_fallbacks: true,
only: ['<string>'],
order: ['<string>'],
strategy: 'auto'
}
})
};
fetch('https://api.agentkey.app/v2/ops/travel.hotel.search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.agentkey.app/v2/ops/travel.hotel.search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'checkin' => '<string>',
'checkout' => '<string>',
'lat' => 0,
'lon' => 0,
'adults' => 2,
'currency' => 'USD',
'cursor' => '<string>',
'fields' => [
'<string>'
],
'include_raw' => false,
'lang' => '<string>',
'limit' => 10,
'price_max' => 123,
'price_min' => 123,
'provider' => '<string>',
'radius_km' => 123,
'rooms' => 1,
'routing' => [
'allow_fallbacks' => true,
'only' => [
'<string>'
],
'order' => [
'<string>'
],
'strategy' => 'auto'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.agentkey.app/v2/ops/travel.hotel.search"
payload := strings.NewReader("{\n \"checkin\": \"<string>\",\n \"checkout\": \"<string>\",\n \"lat\": 0,\n \"lon\": 0,\n \"adults\": 2,\n \"currency\": \"USD\",\n \"cursor\": \"<string>\",\n \"fields\": [\n \"<string>\"\n ],\n \"include_raw\": false,\n \"lang\": \"<string>\",\n \"limit\": 10,\n \"price_max\": 123,\n \"price_min\": 123,\n \"provider\": \"<string>\",\n \"radius_km\": 123,\n \"rooms\": 1,\n \"routing\": {\n \"allow_fallbacks\": true,\n \"only\": [\n \"<string>\"\n ],\n \"order\": [\n \"<string>\"\n ],\n \"strategy\": \"auto\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.agentkey.app/v2/ops/travel.hotel.search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"checkin\": \"<string>\",\n \"checkout\": \"<string>\",\n \"lat\": 0,\n \"lon\": 0,\n \"adults\": 2,\n \"currency\": \"USD\",\n \"cursor\": \"<string>\",\n \"fields\": [\n \"<string>\"\n ],\n \"include_raw\": false,\n \"lang\": \"<string>\",\n \"limit\": 10,\n \"price_max\": 123,\n \"price_min\": 123,\n \"provider\": \"<string>\",\n \"radius_km\": 123,\n \"rooms\": 1,\n \"routing\": {\n \"allow_fallbacks\": true,\n \"only\": [\n \"<string>\"\n ],\n \"order\": [\n \"<string>\"\n ],\n \"strategy\": \"auto\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agentkey.app/v2/ops/travel.hotel.search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"checkin\": \"<string>\",\n \"checkout\": \"<string>\",\n \"lat\": 0,\n \"lon\": 0,\n \"adults\": 2,\n \"currency\": \"USD\",\n \"cursor\": \"<string>\",\n \"fields\": [\n \"<string>\"\n ],\n \"include_raw\": false,\n \"lang\": \"<string>\",\n \"limit\": 10,\n \"price_max\": 123,\n \"price_min\": 123,\n \"provider\": \"<string>\",\n \"radius_km\": 123,\n \"rooms\": 1,\n \"routing\": {\n \"allow_fallbacks\": true,\n \"only\": [\n \"<string>\"\n ],\n \"order\": [\n \"<string>\"\n ],\n \"strategy\": \"auto\"\n }\n}"
response = http.request(request)
puts response.read_body{
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"credits_charged": 123,
"data": {
"items": [
{
"address": "<string>",
"checkin": "<string>",
"checkout": "<string>",
"city": "<string>",
"country": "<string>",
"id": "<string>",
"lat": 123,
"lon": 123,
"name": "<string>",
"photo_url": "<string>",
"price": {
"amount": 123,
"currency": "<string>"
},
"rating": {
"count": 123,
"score": 123
},
"stars": 123,
"url": "<string>"
}
],
"next_cursor": "<string>"
},
"op": "<string>",
"op_version": 123,
"provider": "<string>",
"request_id": "<string>",
"took_ms": 123,
"unsupported_fields": [
"<string>"
],
"raw": "<unknown>",
"raw_truncated": true
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}