What Is a Hotel Data API? A Plain Definition and Four Real Examples
This guide defines a hotel data API and walks through four real requests (rates, reviews, availability, and IDs) with the JSON each one returns.
Table of contents

Hotel data lives in silos: Booking.com rates come in one shape, TripAdvisor reviews in another, Airbnb calendars in a third.
A hotel data API is a read-only interface that pulls that data from each platform and returns it as JSON you can work with.
This guide shows what that means in practice, with four real requests and the responses they return.
Key Takeaways
- A hotel data API reads market data. It returns rates, reviews, availability, and property details for hotels you don't run; booking APIs and PMS APIs do different jobs.
- Four data types cover most work: property IDs, rates, reviews, and availability, each shown below with a live response.
- IDs come first. Every platform numbers its hotels its own way, so the first call usually turns a URL into the ID the other calls need.
- Responses are live. Each call returns what the platform shows at that moment, so price or review history means storing responses yourself.
- The question picks the API. Rates, search, booking, a property list, and your own hotel's reservations each have their own kind of hotel API.
What Is a Hotel Data API?
A hotel data API is a programmatic way to read hotel information from platforms like Booking.com, TripAdvisor, and Airbnb.
You send an HTTP request with a hotel's ID and get structured JSON back: prices, review text, calendar days, property details.
It's read-only, so it never creates or changes a reservation.
That separates it from a booking API, which handles transactions, and from a PMS API, which reads and writes your own hotel's reservations and guests.
Our hospitality API guide maps every kind of hotel API, from PMS to distribution; this post stays on the data side and shows it working.
Hotel Data API Examples: Four Real Requests
All four calls ran on October 15, 2026 against StayAPI's REST API, with the key sent in an x-api-key header.
The responses are trimmed for length, and every field name and value shown is real.
1. Property IDs: Turn a Hotel URL Into an ID
Each platform numbers its hotels differently, so the first call is usually a lookup.
This one takes a Booking.com URL (or just its country code and slug) and returns the hotel's numeric ID:
curl "https://api.stayapi.com/v1/booking/hotel/url-to-id?url=th/baan-coconut" \
-H "x-api-key: YOUR_API_KEY"
{
"hotel_id": "1302021",
"url": "https://www.booking.com/hotel/th/baan-coconut.html"
}
It's the smallest hotel content API call there is, and every other Booking.com request depends on it.
TripAdvisor uses location IDs and Airbnb uses listing IDs, so a product that covers several platforms keeps one ID per platform for every property.
Matching those IDs to the same physical hotel is its own discipline, covered in our hotel mapping guide.
2. Rates: Every Price for One Room on One Night
With the ID in hand, the rooms call returns every room type and every rate on offer.
We asked for The Savoy in London; without dates, the call checks in 14 days out for one night:
curl "https://api.stayapi.com/v1/booking/hotel/rooms?hotel_id=280149" \
-H "x-api-key: YOUR_API_KEY"
It returned 48 rate blocks across 13 room types for the night of October 29.
Here's one of them:
{
"room_name": "Superior Queen Room",
"max_occupancy": 2,
"refundable": true,
"refundable_until": "2026-10-27 23:59:59 +0000",
"breakfast_included": true,
"room_count_available": 14,
"genius_discount_percentage": 0,
"price": {
"per_night": 975.92,
"currency": "USD",
"formatted": "$976",
"is_mobile_rate": false
}
}
The same room came back at four prices.
The Superior Queen Room cost $833 non-refundable, $877 with free cancellation, $932 with breakfast, and $976 with both.
A tracker that stores one number per room per night would miss that spread.
| Field | What it tells you |
|---|---|
refundable / refundable_until |
Whether the rate can be canceled, and until when |
breakfast_included |
Whether the price covers breakfast |
genius_discount_percentage |
The member discount for signed-in Genius users (0 when none applies) |
price.is_mobile_rate |
Whether the price is an app-only rate |
room_count_available |
Rooms left at this rate on Booking.com |
To change the stay, add checkin, checkout, adults, or currency; the Booking.com rooms endpoint lists every parameter.
3. Reviews: Text, Ratings, and Who Wrote Them
Reviews follow the same pattern: one ID in → a page of reviews out.
Here's page 1 for the Allamanda Laguna Phuket on TripAdvisor (location ID 305165):
curl "https://api.stayapi.com/v1/tripadvisor/hotel/reviews/305165?page=1&per_page=20" \
-H "x-api-key: YOUR_API_KEY"
{
"success": true,
"total_count": 359,
"reviews": [
{
"rating": 5,
"title": "A Quiet and Peaceful Retreat Wrapped in Beautiful Gardens",
"published_date": "2026-07-22",
"trip_info": { "stay_date": "2025-09-01", "trip_type": "FAMILY" },
"user": { "hometown": "United States", "contribution_count": 245 },
"additional_ratings": { "value": 5, "rooms": 5, "location": 5, "service": 5, "sleep quality": 5 }
}
]
}
A total_count of 359 means 18 pages at 20 reviews a page, the most TripAdvisor returns per page.
This guest stayed in September 2025 and posted in July 2026, so filter on stay_date when the timing of the stay matters.
additional_ratings changes from review to review: this guest scored 5 categories, the next review on the page scored 6, and the one after that scored none.
Count how many reviews rated each category before you average it, or a handful of guests will set the number.
Other platforms carry different review fields, which our hotel reviews API guide covers platform by platform.
4. Availability: An Airbnb Calendar, Day by Day
For vacation rentals, availability comes as a calendar.
This call returns two months for a home in Central Austin:
curl "https://api.stayapi.com/v1/airbnb/listing/14741664/calendar?months=2" \
-H "x-api-key: YOUR_API_KEY"
Three days from the October block:
{
"success": true,
"listing_id": "14741664",
"months": [
{
"month": 10,
"year": 2026,
"days": [
{ "date": "2026-10-21", "available": true, "available_for_checkin": true, "bookable": true, "min_nights": 2 },
{ "date": "2026-10-22", "available": true, "available_for_checkin": false, "bookable": true, "min_nights": 2 },
{ "date": "2026-10-23", "available": false, "available_for_checkin": false, "bookable": false, "min_nights": 2 }
]
}
]
}
October 22 is open, but a guest can't check in that day.
The listing has a 2-night minimum and October 23 is taken, so a stay starting on the 22nd can't fit.
Two more details catch people out.
The call returns whole months, so days already past come back unavailable.
And a false day can mean booked or blocked by the host, which the calendar doesn't distinguish.
Field definitions are in the Airbnb calendar endpoint docs.
The Four Calls Side by Side
Each response keeps the shape of its platform's data, so plan one parser per endpoint.
| Data type | Platform | What the call takes | Fields worth knowing |
|---|---|---|---|
| Property ID | Booking.com | Hotel URL or slug | hotel_id |
| Rates | Booking.com | hotel_id, optional dates |
price.per_night, refundable, room_count_available |
| Reviews | TripAdvisor | Location ID, page | rating, additional_ratings, trip_info.trip_type |
| Availability | Airbnb | Listing ID, months | available, available_for_checkin, min_nights |
Which Kind of Hotel API Answers Your Question
The four examples above are the data side.
Neighboring questions need a different kind of hotel API, and one of them needs storage more than any API.
| If you need | Kind of API | Guide |
|---|---|---|
| Current rates across booking sites | Hotel price API | hotel price API |
| Hotels in a destination, with availability | Hotel search API | hotel search API |
| To sell or reserve rooms | Hotel booking API | hotel booking API |
| A property list you own and refresh | Hotel database | hotel database |
| Your own hotel's reservations and guests | PMS API | The hospitality API guide, linked above |
| Price history | Stored live responses | hotel price history |
For a one-time research pull, the setup cost of any API usually outweighs the benefit; a hotel data API pays off once the same pull runs every week.
Getting Started with StayAPI
- Sign up at stayapi.com for 50 free requests (a one-time allowance, no credit card).
- Convert a hotel URL to its ID with the URL-to-ID endpoint, as in example 1.
- Make the rooms call from example 2 with your
hotel_id, addingcheckinandcheckoutfor the dates you care about. - Store each response with a timestamp if you want history, since every call returns the current state.
- Automate the pull with N8N or Make.com, or pipe the JSON into Google Sheets or Looker Studio.
For a walkthrough with your own use case, book a demo.
FAQ
Is there a free hotel data API?
StayAPI's signup includes 50 free requests, once, with no credit card.
Paid plans are flat monthly tiers by request volume, from $49 for 1,500 requests a month up to 100,000 a month, with custom terms above that.
Fully free hotel APIs exist with narrower coverage or tighter usage terms; our free hotel API guide maps every real option.
Is a hotel data API the same as a hotel database?
A hotel database is a stored list of properties and their attributes; a hotel data API returns live data on request.
An API can build a database: loop over your property list, call the details endpoint for each one, and store the responses.
How is a hotel data API different from a booking API?
A hotel data API only reads: rates, reviews, availability, property details.
A booking API creates, changes, and cancels reservations, and it usually comes with a supplier or distribution agreement.
Can a hotel data API give me historical prices?
Each call returns what the platform shows right now, so history comes from logging responses over time.
Run the same rooms call daily, store each response with its timestamp, and after a few weeks you have a price curve per room and rate type.
Can I use a hotel data API without a technical team?
Yes, for scheduled pulls.
No-code tools like N8N and Make.com can call the API on a schedule and write the JSON into a Google Sheet.
Ready to simplify your hotel data?
Join other developers using StayAPI to build the next generation of travel applications. Get started for free today.