Search API

Introduction

In late 2021, we introduced the Search API in JSON format to a select group of partners. Starting from Q1 2022, we plan to make it available to all API partners. This new format offers faster API responses with less verbose input and greater flexibility in customizing your requests and responses using extra parameters.

Availability Search API

The Availability Search API provides rates and availability for all room types at specified hotels based on your search criteria and any additional parameters you may need (e.g., period of stay, number of passengers, currency).

Authorization / Header

Every request must include an Authorization Header containing your siteid and apikey separated by a colon. This header is mandatory for all API requests.

By adopting this new format, you can enjoy quicker responses and more tailored search results, enhancing your overall experience.

Authorization: 1234567: 00000000-0000-0000-0000-000000000000  

Key: VALUE
Content-Type: application/json
Authorization: siteId:apikey

Search API - Request Example

{
    "waitTime": 60,
    "criteria": {
        "propertyIds": [
            12157
        ],
        "checkIn": "2022-12-23",
        "checkOut": "2022-12-24",
        "rooms": 1,
        "adults": 2,
        "children": 2,
        "childrenAges": [5,6],
        "language": "en-us",
        "currency": "USD",
        "userCountry": "US"
    },
    "features": {
        "ratesPerProperty": 25,
        "extra": [
            "content",
            "surchargeDetail",
            "CancellationDetail",
            "BenefitDetail",
            "dailyRate",
            "taxDetail",
            "rateDetail",
            "promotionDetail"
        ]
    }
}

Parameter for Search API - Request Schema (* = Require)

Element Attribute Description
waitTime
Integer

Partners can inform Agoda of the maximum wait time for a search response (in seconds). If partners are able to wait longer, Agoda will provide more availability options.

criteria* propertyIds*
array[Integer]
Agoda Hotel IDs. Supports maximum 100 hotels per request. Please refer to “ratesPerProperty” for details.

checkIn*
Date
YYYY-MM-DD  checkIn date must be hotel local timezone. It needs to be greater than, equal to or less than one day from today's date (to cover property time zone difference)

checkOut*
Date
YYYY-MM-DD  checkOut date must be greater than checkIn date

rooms*
Integer
Number of Rooms

adults*
Integer
Number of Adults

children *
Integer
Number of children

childrenAges
array[Integer]

The age list of children(minimum: 0, maximum: 17).

To be passed only when no. of children > 0 and It is required to pass the same “childrenAges” throughout Searchrequest, PrecheckRequest & BookRequest

 If 2 children with ages of 5 and 6, then “childrenAges”:[5,6] Empty array like "childrenAges": [] is not allowed.   Extra beds and meals are not guaranteed for stay for free children.


language*
String
Please refer to Appendix Language part for language codes

currency*
String
Please refer to Appendix Currency part for currency codes

userCountry
String

Guest's nationality should be provided using the ISO code. Implementing this is recommended to ensure you receive accurate rates. You can find more details in the Country section of the Appendix document. The code should be two characters long, containing only letters (a-z or A-Z).


Note: It is required to pass on the same userCountry throughout Searchrequest, PrecheckRequest & BookRequest
features ratesPerProperty
Integer

Number of best rate(s) available for a property. If ratesPerProperty is not provided, you will get the same result as sending 'ratesPerProperty' = 1 or 25 depending on the partnership type

Number of hotels ratesPerProperty
For Single hotel search 1-100(max)
2-30 HIDs in one search 1-25(max)
31-100 HIDs  in one search 1(max)



extra
array[String]

Optional parameters can be added to request additional details in the search response. For partners using the fulfillment model, please do not include "metaSearch" as it is not designed for this mode.


enum[
"content",
"dailyRate",
"metaSearch",
"benefitDetail",
"cancellationDetail",
"promotionDetail",
"rateDetail",
"surchargeDetail",
"taxDetail"
]

Parameter for Search API – Response Sample

{
    "searchId": 633141408144250000,
    "properties": [
        {
            "propertyId": 12157,
            "propertyName": "Medhufushi Island Resort",
            "translatedPropertyName": "Medhufushi Island Resort",
            "propertyUtcOffset": "+05:00",
            "rooms": [
                {
                    "roomId": 3134583,
                    "blockId": "MDZlNDc0NTUtMTU2My05MmY3LWQwNjUtYzM3MWY3YjkyZDBjOjMzMg==",
                    "roomName": "Beach Villa",
                    "parentRoomName": "Beach Villa",
                    "translatedRoomName": "Beach Villa",
                    "blockIdBackup": "06e47455-1563-92f7-d065-c371f7b92d0c",
                    "parentRoomId": 3134583,
                    "ratePlanId": 617128,
                    "freeWifi": false,
                    "remainingRooms": 38,
                    "normalBedding": 2,
                    "extraBeds": 0,
                    "freeBreakfast": true,
                    "freeCancellation": true,
                    "totalPayment": {
                        "exclusive": 83.96,
                        "inclusive": 107.14,
                        "tax": 15.46,
                        "fees": 7.72,
                        "taxDueSupplier": 0
                    },
                    "roomTypeNotGuaranteed": false,
                    "paymentModel": "Merchant",
                    "rate": {
                        "currency": "USD",
                        "exclusive": 74.56,
                        "inclusive": 95.14,
                        "tax": 13.8,
                        "fees": 6.78,
                        "method": "PRPN"
                    },
                    "perRoomPerNightRate": {
                        "currency": "USD",
                        "exclusive": 74.56,
                        "inclusive": 95.14,
                        "tax": 13.8,
                        "fees": 6.78
                    },
                    "dailyRate": [
                        {
                            "date": "2024-05-30",
                            "exclusive": 74.56,
                            "inclusive": 95.14,
                            "tax": 13.8,
                            "fees": 6.78,
                            "method": "PN"
                        }
                    ],
                    "promotionDetail": {
                        "promotionId": 196413638,
                        "codeEligible": false,
                        "description": "Limited Time Offer. Price includes 40% discount!",
                        "savingAmount": 108.2
                    },
                    "surcharges": [
                        {
                            "id": 255,
                            "method": "PB",
                            "charge": "Excluded",
                            "margin": "n",
                            "name": "Roundtrip Speed Boat Transfer Fee",
                            "rate": {
                                "currency": "USD",
                                "exclusive": 420,
                                "inclusive": 420,
                                "tax": 0,
                                "fees": 0
                            }
                        },
                        {
                            "id": 278,
                            "method": "PB",
                            "charge": "Mandatory",
                            "margin": "n",
                            "name": "Green Tax",
                            "rate": {
                                "currency": "USD",
                                "exclusive": 9.4,
                                "inclusive": 12,
                                "tax": 1.66,
                                "fees": 0.94
                            }
                        }
                    ],
                    "taxBreakdown": [
                        {
                            "id": "1",
                            "typeValue": "Tax",
                            "taxDescription": "Sales tax",
                            "translatedTaxDescription": "Sales tax",
                            "method": "PRPN",
                            "currency": "USD",
                            "base": "N",
                            "taxable": "N",
                            "percent": 16,
                            "amount": 13.8
                        },
                        {
                            "id": "2",
                            "typeValue": "Fee",
                            "taxDescription": "Service charge (taxable)",
                            "translatedTaxDescription": "Service charge (taxable)",
                            "method": "PRPN",
                            "currency": "USD",
                            "base": "N",
                            "taxable": "Y",
                            "percent": 10,
                            "amount": 6.78
                        }
                    ],
                    "cancellationPolicy": {
                        "code": "1D1N_1N",
                        "cancellationText": "Risk-free booking! Cancel before 2024-05-29 and you'll pay nothing! Any cancellation received within 1 day prior to the arrival date will incur the first night's charge. Failure to arrive at your hotel or property will be treated as a No-Show and will incur the first night's charge (Hotel policy).",
                        "translatedCancellationText": "Risk-free booking! Cancel before 2024-05-29 and you'll pay nothing! Any cancellation received within 1 day prior to the arrival date will incur the first night's charge. Failure to arrive at your hotel or property will be treated as a No-Show and will incur the first night's charge (Hotel policy).",
                        "parameter": [
                            {
                                "days": 2,
                                "charge": "N",
                                "value": 0
                            },
                            {
                                "days": 1,
                                "charge": "N",
                                "value": 1
                            },
                            {
                                "days": 0,
                                "charge": "N",
                                "value": 1
                            }
                        ],
                        "date": [
                            {
                                "before": "2024-05-29T00:00:00",
                                "rate": {
                                    "exclusive": 0,
                                    "inclusive": 0,
                                    "tax": 0,
                                    "fees": 0
                                }
                            },
                            {
                                "before": "2024-05-30T00:00:00",
                                "rate": {
                                    "exclusive": 74.56,
                                    "inclusive": 95.14,
                                    "tax": 13.8,
                                    "fees": 6.78
                                }
                            },
                            {
                                "onward": "2024-05-30T00:00:00",
                                "rate": {
                                    "exclusive": 74.56,
                                    "inclusive": 95.14,
                                    "tax": 13.8,
                                    "fees": 6.78
                                }
                            }
                        ]
                    },
                    "benefits": [
                        {
                            "id": 1,
                            "benefitName": "Breakfast",
                            "translatedBenefitName": "Breakfast"
                        },
                        {
                            "id": 10,
                            "benefitName": "Welcome drink",
                            "translatedBenefitName": "Welcome drink"
                        },
                        {
                            "id": 34,
                            "benefitName": "Express check-in",
                            "translatedBenefitName": "Express check-in"
                        },
                        {
                            "id": 95,
                            "benefitName": "Free WiFi",
                            "translatedBenefitName": "Free WiFi"
                        },
                        {
                            "id": 230,
                            "benefitName": "Drinking water",
                            "translatedBenefitName": "Drinking water"
                        },
                        {
                            "id": 115,
                            "benefitName": "Free fitness center access",
                            "translatedBenefitName": "Free fitness center access"
                        }
                    ]
                }
            ]
        }
    ]
}

Parameter for Search API - Response Schema (* = Require)

Element Attribute Description
searchId*
The unique ID that this search received in our system
properties

propertyId*

integer

Agoda's hotel ID

propertyName

string

Hotel name, This field can only be returned when sending "content" in "extra"

translatedPropertyName

string

Translated hotel name, This field can only be returned when sending "content" in "extra"

propertyUtcOffset

string

Utc Timezone of the Property
properties->rooms

roomId*

long

The ID of the room type

blockId*

string(max 500 bytes)

New unique identifier for each room, provide as a unique key for partner’s caching. Please use this one instead of blockIdBackup.Possible characters for blockID includes: • Uppercase letters: A-Z • Lowercase letters: a-z • Digits: 0-9 • Plus (+) • Slash (/) • Underscore (_) • Equals sign (=) • Dash (-)

roomName

string

Room Name, This field can only be returned when sending "content" in "extra"

parentRoomName

string

Parent room name, This field can only be returned when sending "content" in "extra"

translatedRoomName

string

Room name translated (As per language you perform in the request), This field can only be returned when sending "content" in "extra"

blockIdBackup

string

Old version of blockId, in XML format response.

parentRoomId*

long

The ID of the parent room type

ratePlanId*

long

Used to identify the Agoda rate plan

freeWifi

boolean

True if Free Wifi available, This field can only be returned when sending "content" in "extra"

remainingRooms

integer

The rooms (allotment) remaining under same Room ID. This field can only be returned when sending "rateDetail" in 'extra'

normalBedding

integer

Number of occupancies with normal bedding. This field can only be returned when sending 'rateDetail' in 'extra'

extraBeds

integer

Number of extra beds. This field can only be returned when sending 'rateDetail' in 'extra'

freeBreakfast*

boolean

True if breakfast included for this rate

freeCancellation*

boolean

True if there is Free cancellation for booking in this room

freeCancellationDate

DateTime

Free cancellation date in the format YYYY-MM- DD. This field can only be returned when sending "metaSearch" in "extra"

landingUrl

string

The landing page URL that you use if the customer clicks through. This field can only be returned when sending "metaSearch" in "extra"

roomTypeNotGuaranteed

boolean

True if it is Run of House room type. This field can only be returned when sending ‘rateDetail’ in 'extra'

payAtHotel

Boolean

True if there is the pay at hotel is available for this booking in this room.This field can only be returned when sending "metaSearch" in "extra"

paymentModel

string

Possible values for paymentModel field are: - Agency: Booking will be charged at hotel, - Merchant: Pre-paid, - MerchantCommission: Pre-paid
This field can only be returned when sending "rateDetail" in "extra"
bookNowPayLaterDate
string
Later date on which the payment is to be made in BNPL

properties -> rooms ->totalPayment









exclusive

Number

Exclusive rate breakdown per booking, excluding taxes but includes room charge and mandatory surcharges

inclusive

Number

Rate breakdown per booking, including room charge and mandatory surcharge

tax

Number

Tax breakdown per booking

fees

Number

Fees breakdown per booking

estimatedCommission

Number

Estimated commission that partner may get. Please contact technical team to get this column.

taxDueSupplier

Number

Agoda owes supplier as tax 

properties->rooms->rate*

currency

string

Requested currency. Details are on Currency Part (Appendix)

exclusive*

number

The cost per room per night exclusive of tax and service fees

inclusive*

number

The cost per room service charge inclusive of tax and service fees

tax*

number

Tax amount of room value

fees*

number

Fees of room value

method

string

“PRPN”, "PB", "PN" or "PR"

stayPackageType

integer

Used to signifiy special offer. Not applicable for all partners.
properties->rooms->perRoomPerNightRate

currency

string

Requested currency. Details are on Currency Part (Appendix)

exclusive*

number

The cost per room per night exclusive of tax and service fees

inclusive*

number

The cost per room service charge inclusive of tax and service fees

tax*

number

Tax amount of room value

fees*

number

Fees of room value

stayPackageType

integer

Used to signify special offer. Not applicable for all partners.
properties->rooms->rate->ratePlan (Not applicable for all partners.)

name

string

Name of the special rate channel

description

string

Description of the special rate channel, max character length is 2000

inclusions

string

Inclusions that are applicable for the special rate channel, max character length is 2000

exclusions

string

Exclusions that are applicable for the special rate channel, max character length is 2000

checkInTime

string

Check-In time at hotel that are applicable for the special rate channel

checkoutTime

string

Check-out time at hotel that are applicable for the special rate channel
properties->rooms->rate->ratePlan->checkInTime(Not applicable for all partners.)

startTime

string

Start time of check-in for the special rate channel. Returned only if applicable.

endTime

string

End time of check-in for the special rate channel. Returned only if applicable.
properties->rooms->rate->ratePlan->checkoutTime(Not applicable for all partners.)

startTime

string

Start time of check-out for the special rate channel. Returned only if applicable.

endTime

string

Start time of check-out for the special rate channel. Returned only if applicable.
properties->rooms->dailyRate

date*

DateTime

YYYY-MM-DD

exclusive*

number

Rate breakdown per night without discount

tax*

number

Tax breakdown per night without discount

fee*

number

Fees breakdown per night without discount

inclusive

number

Rate breakdown per night without discount

method

string

Always "PN"
properties -> rooms -> promotionDetail

promotionId

Integer

Promotion ID 

codeEligible

Boolean

True if special promotion campaign applied to this room/rate

description

String

Promotion description

savingAmount

Number

Promotion saved amount
properties -> rooms -> surcharges







id

Integer

Surcharge ID

method

String

Always "PB"

charge

String

Possible charge values as follows:
- Mandatory – Surcharges will be charged in addition to room price at time of booking creation
- Excluded – Surcharges are not charged at time of booking creation; customers will pay the surcharges at a hotel directly

margin

Number

There are two possible values for "margin" as follows: y=Margin applied n=No surcharge margin

name

String

Surcharge name

rate-> currency

String

Surcharge currency (As per search request)

rate-> exclusive

Number

Surcharge exclusive amount

rate-> inclusive

Number

Surcharge inclusive amount

rate-> tax

Number

Surcharge tax amount

rate-> fees

Number

Surcharge fees amount
properties->rooms[]->room->taxBreakdown

id*

string

Tax ID

typeValue*

string

Possible types are: “Tax” or “Fee”

taxDescription*

string

Tax or Fee description

translatedTaxDescription*

string

Translated tax description

method*

string

Possible method values as follows: PAPB=Per Adult Per Booking PAPD=Per Adult Per Day PAPN=Per Adult Per Night PB=Per Booking PCPB=Per Child Per Booking PCPD=Per Child Per Day PCPN=Per Child Per Night PGPB=Per Guest Per Booking PGPD=Per Guest Per Day PGPN=Per Guest Per Night PN=Per Night PRPB=Per Room Per Booking PRPN=Per Room Per Night

base*

string

There are possible values for ‘base’ as follows:
M=Tax over Margin
N=Tax over Net

taxable*

string

Possible taxable values are Y=Tax apply over fee N=Tax doesn’t apply over fee

percent*

number

Tax or fee percentage

currency*

string

Tax or fee amount of its currency

amount*

number

Tax or fee amount of its currency
properties ->rooms -> cancellationPolicy

code

String

Cancellation policy in code format. E.g. 1D1N_100P

cancellationText

String

Cancellation policy in text format

translatedCancellationText

String

Cancellation policy in translated text format Note: If it is an external provider, this Policy translated will not be able to offer.
properties ->rooms -> cancellationPolicy -> parameter

days

Integer

Number of days prior to check-in date that cancellation fee will be applied. Except for: 365 Days with 100 Percent=the booking is non-refundable.

charge

String

There are two possible values for "charge" as follows: N=Night P=Percent

value

Integer

Charge value
properties ->rooms cancellationPolicy -> date

before

timestamp

Datetime in hotel local time, YYYY-MM-DDTHH:MM:SS

onward

timestamp

Datetime in hotel local time, YYYY-MM-DDTHH:MM:SS
properties -> cancellationPolicy -> date -> rate

exclusive

Number

Exclusive cancellation fee

inclusive

Number

Total amount of cancellation fee

tax

Number

Cancellation tax amount

fees

Number

Cancellation fees amount

properties->rooms->benefits

id*

long

Benefit ID

benefitName*

string

Benefit name

Please check how to identify benefit quantity in our best practice page.

translatedBenefitName*

string

Benefit name translated

properties->rooms->feeWaivers(For CA hotels only)

feeWaivers

string

Total amount of fee waiver in percentage, 100P, 0P etc.

expiry

string

Expiry time in hours format, 24H, 48H etc.

leadTime

string

Total lead time in hours format, 24H, 48H etc.

Below are "extra" parameter(s) in search request and additional data we get from response.

{
   "features":{
      "extra":[
         "metaSearch"
      ]
   }
}
Element Attribute Description
properties -> rooms ->

landingUrl

String

The landing page URL that you use if the customer clicks through

payAtHotel

Boolean

True if there is the pay at hotel is available for this booking in this room

freeCancellationDate

Date

Free cancellation date in the format YYYY-MM-DD. Free cancellation BEFORE 'freecancelationdate' (i.e. the day before until 23:59:59)
{
  "features":{
    "extra":[
      "rateDetail"
    ]
  }
}
Element Attribute Description
properties -> rooms ->

remainingRooms

Integer

The rooms (allotment) remaining under same Room ID.

normalBedding

Integer

Number of occupancies with normal bedding

extraBeds

Integer

Number of extra beds

roomTypeNotGuaranteed

Boolean

True if it is Run of House room type

paymentModel

String

Possible values for paymentModel field are: - agency: Booking will be charged at hotel, - merchant, - merchantcommission

properties -> rooms ->totalPayment


exclusive

Number

Exclusive rate breakdown per booking, excluding taxes but includes room charge and mandatory surcharges

inclusive

Number

Rate breakdown per booking, including room charge and mandatory surcharge

tax

Number

Tax breakdown per booking

fees

Number

Fees breakdown per booking

estimatedCommission

Number

Estimated commission that partner may get. Please contact technical team to get this column.
properties->rooms[]->room->perRoomPerNightRate

currency

string

Requested currency. Details are on Currency Part (Appendix)

exclusive*

number

The cost per room per night exclusive of tax and service fees

inclusive*

number

The cost per room service charge inclusive of tax and service fees

tax*

number

Tax amount of room value

fees*

number

Fees of room value
{
  "features":{
    "extra":[
      "benefitDetail"
    ]
  }
} 
Element Attribute Description
properties -> rooms -> benefits

id

Integer

Benefit ID

benefitName

String

Benefit name

translatedBenefitName

String

Benefit name translated
{
  "features":{
    "extra":[
      "dailyRate"
    ]
  }
} 
Element Attribute Description
dailyRate

date

String

YYYY-MM-DD

exclusive

Number

Rate breakdown per night without discount

inclusive

Number

Rate breakdown per night without discount

tax

Number

Rate breakdown per night without discount

fees

Number

Rate breakdown per night without discount

method

string

Always "PN"
{
  "features":{
    "extra":[
      "cancellationDetail"
    ]
  }
}
Element Attribute Description
properties ->rooms -> cancellationPolicy

code

String

Cancellation policy in code format. E.g. 1D1N_100P

cancellationText

String

Cancellation policy in text format

translatedCancellationText

String

Cancellation policy in translated text format Note: If it is an external provider, this Policy translated will not be able to offer.
properties ->rooms -> cancellationPolicy -> parameter

days

Integer

Number of days prior to check-in date that cancellation fee will be applied. Except for: 365 Days with 100 Percent=the booking is non-refundable.

charge

String

There are two possible values for 'charge' as follows: N=Night P=Percent

value

Integer

Charge value
properties ->rooms -> cancellationPolicy -> date

before

t imestamp

Datetime in hotel local time, YYYY-MM-DDTHH:MM:SS

onward

timestamp

Datetime in hotel local time, YYYY-MM-DDTHH:MM:SS
properties > rooms ->cancellationPolicy -> date -> rate

exclusive

Number

Exclusive cancellation fee

inclusive

Number

Total amount of cancellation fee

tax

Number

Cancellation tax amount

fees

Number

Cancellation fees amount
{
  "features":{
    "extra":[
      "content"
    ]
  }
}
Element Attribute Description
properties ->

propertyName

String

Hotel name

translatedPropertyName

String

Translated hotel name
properties -> rooms ->

roomName

String

Room name

parentRoomName

String

Parent room name

translatedRoomName

String

Room name translated (as per language you perform in the request)

freeWifi

Boolean

True if Free Wifi available
{
  "features":{
    "extra":[
      "surchargeDetail"
    ]
  }
}
Element Attribute Description
properties -> rooms -> surcharges

id

Integer

Surcharge ID

method

String

Always "PB"

charge

String

Possible charge values as follows:
- Mandatory – Surcharges will be charged in addition to room price at time of booking creation
- Excluded – Surcharges are not charged at time of booking creation; customers will pay the surcharges at a hotel directly

margin

Number

There are two possible values for "margin" as follows: y=Margin applied n=No surcharge margin

name

String

Surcharge name

rate-> currency

String

Surcharge currency (As per search request)

rate-> exclusive

Number

Surcharge exclusive amount

rate-> inclusive

Number

Surcharge inclusive amount

rate-> tax

Number

Surcharge tax amount

rate-> fees

Number

Surcharge fees amount
{
  "features":{
    "extra":[
      "taxDetail"
    ]
  }
}
Element Attribute Description
properties -> rooms -> taxBreakdown

id

Integer

Tax ID

typeValue

String

Possible types are: "Tax" or "Fee"

taxDescription

String

Tax or Fee description

translatedTaxDescription

String

Translated tax description

method

String

Possible method values as follows: PAPB=Per Adult Per Booking PAPD=Per Adult Per Day PAPN=Per Adult Per Night PB=Per Booking PCPB=Per Child Per Booking PCPD=Per Child Per Day PCPN=Per Child Per Night PGPB=Per Guest Per Booking PGPD=Per Guest Per Day PGPN=Per Guest Per Night PN=Per Night PRPB=Per Room Per Booking PRPN=Per Room Per Night

currency

String

Tax or fee amount of its currency

base

String

There are possible values for ‘base’ as follows:
M=Tax over Margin
N=Tax over Net

taxable

String

Possible taxable values are Y=Tax apply over fee N=Tax doesn't apply over fee

percent

Number

Tax or fee percentage

amount

Number

Tax or fee amount of its currency

taxProtoTypeId

Integer

taxTypeId refers to the nature of the tax, whether it is paid to the state government etc. Mainly used by US properties.

taxDueSupplier

Number

Agoda owes supplier as tax 
{
  "features":{
    "extra":[
      "promotionDetail"
    ]
  }
}
Element Attribute Description
properties -> rooms -> promotionDetail

promotionId

Integer

Promotion ID

codeEligible

Boolean

True if special promotion campaign applied to this room/rate

description

String

Promotion description

savingAmount

Number

Promotion saved amount