The Rooms.aero API is built around a small set of objects that every endpoint shares. An id returned by one endpoint can always be passed to another.
Sources
A source is one hotel loyalty program. Every hotel, availability and alert carries its source. Use the key in the first column as the value of any source parameter.
| Source | Program | Award categories | Notes |
|---|---|---|---|
hilton | Hilton Honors | No, dynamic pricing | |
hyatt | World of Hyatt | Yes (1 to 8, A to F) | Category is on Hotel.award_category. |
ihg | IHG Rewards | No, dynamic pricing | |
marriott | Marriott Bonvoy | No, dynamic pricing | |
choice | Choice Privileges | Yes (1 to 10) | |
wyndham | Wyndham Rewards | Yes (points tiers) | Categories are the fixed nightly point costs. |
iprefer | I Prefer Hotel Rewards | No | Only hotels that accept points are tracked. |
Cash rates are recorded for every program when the program publishes them alongside the award rate. Countries are display names as shown on rooms.aero, such as "United States" or "Japan".
Reference Data
Hotel.brand and Hotel.award_category are the programs' own codes. The tables below map them to names; they are the same lists the rooms.aero filters use.
Hilton Honors (hilton)
hilton)Brand codes for Hotel.brand:
| Code | Brand |
|---|---|
PY | Canopy |
CH | Conrad |
QQ | Curio |
DT | DoubleTree |
ES | Embassy Suites |
GI | Garden Inn |
GV | Grand Vacations |
HP | Hampton Inn |
HI | Hilton |
HT | Home2 Suites |
HW | Homewood Suites |
LX | SLH |
UP | Tapestry |
RU | Tru |
WA | Waldorf Astoria |
World of Hyatt (hyatt)
hyatt)Brand codes for Hotel.brand:
| Code | Brand |
|---|---|
alila | Alila |
alua | Alua |
andaz | Andaz |
caption | Caption |
destination | Destination by Hyatt |
dream | Dream |
dreams | Dreams |
grand | Grand Hyatt |
house | Hyatt House |
place | Hyatt Place |
regency | Hyatt Regency |
studios | Hyatt Studios |
vacation | Hyatt Vacation Club |
jdv | JdV by Hyatt |
mr_mrs_smith | Mr & Mrs Smith |
partners | Other Partners |
park | Park Hyatt |
secrets | Secrets |
sunscape | Sunscape |
standard | The Standard |
thompson | Thompson |
unbound | Unbound Collection |
urcove | UrCove |
zilara | Zilara |
ziva | Ziva |
zoetry | Zoetry |
Award categories for Hotel.award_category:
| Code | Category |
|---|---|
1 | Cat 1 |
2 | Cat 2 |
3 | Cat 3 |
4 | Cat 4 |
5 | Cat 5 |
6 | Cat 6 |
7 | Cat 7 |
8 | Cat 8 |
A | Cat A |
B | Cat B |
C | Cat C |
D | Cat D |
E | Cat E |
F | Cat F |
IHG Rewards (ihg)
ihg)Brand codes for Hotel.brand:
| Code | Brand |
|---|---|
CPAN | ANA Crowne Plaza |
HIAN | ANA Holiday Inn |
ICAN | ANA InterContinental |
ATWL | Atwell Suites |
AVID | avid hotels |
CDLW | Candlewood Suites |
HICP | Crowne Plaza |
EVEN | EVEN Hotels |
RNHR | Garner |
HOLI | Holiday Inn |
HIIS | Holiday Inn & Suites |
HINU | Holiday Inn - the niu |
HICV | Holiday Inn Club Vacations |
HIEX | Holiday Inn Express |
HEXS | Holiday Inn Express & Suites |
HIRT | Holiday Inn Resort |
INDG | Hotel Indigo |
HLUX | HUALUXE |
VEVE | Iberostar Selection |
CSCS | Iberostar Selection |
TNTN | Iberostar Waves |
ICAR | IC Alliance Resorts |
MAMI | IHG Army Hotels |
ICON | InterContinental |
ICRT | InterContinental |
SNSN | JOIA by Iberostar |
KIKI | Kimpton |
RGNT | Regent |
GEMS | Ruby |
SIXS | Six Senses |
STAY | Staybridge Suites |
VXVX | voco |
Marriott Bonvoy (marriott)
marriott)Brand codes for Hotel.brand:
| Code | Brand |
|---|---|
AR | AC Hotel |
AL | Aloft |
AK | Autograph Collection |
CY | Courtyard |
DS | Design Hotels |
EB | EDITION |
FI | Fairfield |
JW | JW Marriott |
MD | Le Méridien |
LC | Luxury Collection |
MC | Marriott |
MV | Marriott Vacation Club |
MG | MGM Collection |
RI | Residence Inn |
RZ | Ritz-Carlton |
SI | Sheraton |
XR | St. Regis |
TS | TownePlace Suites |
WH | W Hotels |
WI | Westin |
Choice Privileges (choice)
choice)Brand codes for Hotel.brand:
| Code | Brand |
|---|---|
CI | Comfort Inn |
Award categories for Hotel.award_category:
| Code | Category |
|---|---|
1 | Cat 1 |
2 | Cat 2 |
3 | Cat 3 |
4 | Cat 4 |
5 | Cat 5 |
6 | Cat 6 |
7 | Cat 7 |
8 | Cat 8 |
9 | Cat 9 |
10 | Cat 10 |
Wyndham Rewards (wyndham)
wyndham)Brand codes for Hotel.brand:
| Code | Brand |
|---|---|
AA | AmericInn |
BU | Baymont |
CE | Caesars Rewards |
VO | Club Wyndham / WorldMark |
DI | Days Inn |
FE | Dazzler / Esplendor |
DX | Dolce Hotels & Resorts |
LT | ECHO Suites Extended Stay |
BH | Hawthorn Extended Stay |
HJ | Howard Johnson |
LQ | La Quinta |
MT | Microtel |
RA | Ramada |
RE | Registry Collection Hotels |
SE | Super 8 |
TQ | Trademark Collection |
TL | Travelodge |
WT | TRYP |
VI | Vienna House |
WW | WaterWalk Extended Stay |
WG | Wingate |
WR | Wyndham |
LV | Wyndham Alltra |
WY | Wyndham Garden |
WHG | Wyndham Grand |
Award categories for Hotel.award_category:
| Code | Category |
|---|---|
5000 | 5,000 points |
7500 | 7,500 points |
15000 | 15,000 points |
30000 | 30,000 points |
45000 | 45,000 points |
I Prefer Hotel Rewards (iprefer)
iprefer)Brand codes for Hotel.brand:
| Code | Brand |
|---|---|
Beyond Green | Beyond Green |
Historic Hotels of America | Historic Hotels of America |
Historic Hotels Worldwide | Historic Hotels Worldwide |
L.V.X. | L.V.X. |
Legend | Legend |
Lifestyle | Lifestyle |
Preferred Residences | Preferred Residences |
Travel Partner | Travel Partner |
Objects
Hotel
A Hotel is one property in one program. Its id is the value you pass as hotel_id elsewhere; internal_id is the program's own property code. brand and award_category are program codes mapped to names in the reference data above. Get Hotels and Search also return lowest_award, the cheapest award seen on any upcoming date in the last two weeks. To fetch one hotel, filter Get Hotels by id.
Availability
An Availability is one hotel, one check-in date, one stay length: the cheapest standard room and the cheapest suite, each as an award (points) and as a cash rate, with a flag per rate saying whether it was offered. When the hotel is embedded, the row also carries a booking_link into the program's booking flow for that exact stay.
{
"id": "2S8Cm9dHORWWKpoCkxfRkZa0e5l",
"hotel_id": "2PPrELk9WcfJaNREWEPXypvhXAD",
"source": "hyatt",
"arrival_date": "2026-11-21",
"departure_date": "2026-11-22",
"num_nights": 1,
"cash_currency_code": "USD",
"standard_award_available": true,
"standard_award_cost": 30000,
"standard_cash_available": true,
"standard_cash_cost": 68500,
"standard_cpp": 2.28,
"suite_award_available": false,
"suite_award_cost": 0,
"suite_cash_available": false,
"suite_cash_cost": 0,
"suite_cpp": 0,
"booking_link": {
"label": "Book via World of Hyatt",
"url": "https://www.hyatt.com/shop/rooms/tyoph?checkinDate=2026-11-21&checkoutDate=2026-11-22&..."
},
"last_checked_at": "2026-09-07T03:58:01Z",
"created_at": "2026-08-30T02:11:40Z"
}Room
A Room is one room type offered on one availability, with its award and cash price for the stay. Only Get Availability Details returns rooms, cheapest award first.
Alert
An Alert asks rooms.aero to email you when matching availability appears at one hotel. Alerts are created and deleted on the site (rooms.aero/alerts); the API lists the ones on your Rooms.aero account. A one_off alert fires once and is then marked expired; a continuous alert keeps notifying about new or cheaper matches until you delete it.
Dates and Stay Length
rooms.aero tracks stays by check-in date and number of nights, not by check-in and check-out. Every availability has an arrival_date and a num_nights from 1 to 5; departure_date is derived from them.
Searches follow the same model. On Search and Get Availability, start_date and end_date bound the check-in date: a search for start_date=2026-11-20&end_date=2026-11-27 returns stays that begin on any of those days, whatever their length. To look for a particular length of stay, add nights (1 to 5); leave it out to see every length. There is no check-out parameter.
Dates are YYYY-MM-DD; timestamps (*_at) are RFC 3339 in UTC.
Units
- Points are whole numbers for the stay.
- Cash is an integer in the minor unit (cents) of the currency named beside it (
cash_currency_code,cash_cost_currencyorcurrency_code), for the stay. - CPP is the cash value of one point in US cents, from the cash and award rates seen together;
0when either is missing.
Freshness
last_checked_at on an availability says when that date's rates were last retrieved. Get Availability and Search only return upcoming check-in dates retrieved within the last 21 days. To get newer data for one property, call Refresh Hotel (one request per user every 24 hours, shared with the site) and read the hotel back a few minutes later.
Pagination
List endpoints wrap results in the same envelope:
{
"data": [],
"count": 100,
"has_more": true,
"more_url": "https://rooms.aero/partnerapi/hotels?skip=100&source=hyatt&take=100"
}Request the next page with skip increased by take, or follow more_url, which is omitted on the last page. Orderings end in the row id so pages are stable, but live data can still shift between pages; deduplicate by id (or hotel.id for search results). Search results come cheapest award first.
Errors
Every non-2xx response is JSON with a stable error code and a human-readable message:
{ "error": "invalid_parameter", "message": "The nights parameter is invalid: must be between 1 and 5." }| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_parameter | A query parameter failed validation; the message names it. |
| 400 | missing_parameter | A required parameter or combination is missing. |
| 400 | location_not_found | Search could not geocode location. |
| 400 | too_many_hotels | The search area holds more than 500 hotels; narrow the box or filter by source. |
| 401 | missing_partner_key | No Partner-Authorization header. |
| 401 | bad_partner_key | The key is not recognized by Seats.aero. |
| 401 | user_subscription_expired | The key's Seats.aero Pro subscription has ended. |
| 403 | pro_user_required | Alerts need a Pro user's key; named partner keys have no account. |
| 404 | hotel_not_found, availability_not_found | The id in the path does not exist. |
| 429 | user_rate_limit_exceeded | Daily quota used up; see Retry-After. |
| 429 | refresh_limit_exceeded | You already requested a refresh in the last 24 hours, on the site or through the API. |
| 500 | internal_error | Something failed on our side; retry later. |
| 503 | seats_aero_unavailable | Your key could not be verified right now; retry shortly. |
