Hotel Database: Where to Get One (Directories, Free Datasets, and the Live API Route)
This guide maps the four things people mean by a hotel database, where to get each one, how big the free datasets really are, and how a live catalog is assembled from an API.
Table of contents

Searching for a hotel database lands you on a Kaggle dataset, a 75-year-old industry directory, a construction-projects list, and a video about designing tables for a hotel management system, all on the same results page.
That's because the phrase means four different things, and each one has a different source.
The catch runs through all four: hotel data goes stale fast.
Prices move daily, ratings move weekly, and a directory bought in January has openings and closures missing by spring.
This guide sorts the four meanings, names the real sources for each with their sizes, and shows how a live hotel catalog is assembled from an API when a download won't do.
Key Takeaways
- "Hotel database" means four different products. A directory of properties and contacts, a static dataset for analysis, a live catalog behind an app, and a schema for a management system.
- Free datasets are large and frozen. Public sets run from 1,000 hotels with reviews to 50 million TripAdvisor reviews, all snapshots of a past date.
- OpenStreetMap is the free, current geo layer. As of this week it holds 453,219 objects tagged as hotels, with names and coordinates and nothing about prices.
- A live catalog is assembled, not downloaded. Destination lookup, paginated search, then details per hotel through a hotel data API, refreshed on request rather than on a vendor's schedule.
- Every real hotel database needs a cross-platform ID column. The same property carries a different ID on every booking site, and matching them is its own job.
The Four Things People Mean by Hotel Database

| Meaning | What's Inside | Who Buys or Builds It | Freshness |
|---|---|---|---|
| Directory | Property names, addresses, chain affiliation, room counts, decision-maker contacts | Suppliers selling to hotels, event planners | Annual or quarterly editions |
| Static dataset | A snapshot of listings, prices, or reviews as CSV or JSON | Researchers, students, ML teams | Frozen at collection date |
| Live catalog | IDs, names, coordinates, photos, amenities, current prices and ratings | App builders, travel tech, analysts | Refreshed on request |
| Management-system schema | Tables for guests, rooms, reservations, folios | Students, PMS developers | Not a data product at all |
The fourth row is a database-design exercise, and the tutorials that rank for it are the right resource; this guide covers the first three.
The three real products overlap in name only.
A directory knows the general manager's email and nothing about tonight's rate; a dataset knows what a room cost in 2017; a live catalog knows both current values and neither historical one.
Directory Databases: For Selling to Hotels

The oldest hotel databases are sales tools.
Travel Weekly's Hotel and Travel Index has cataloged properties, rates, and GDS reservation codes for more than 75 years, and construction-projects databases sell pipelines of hotels under development with the contacts attached.
What they're good for: prospecting, market sizing by chain and region, and event planning.
What they aren't: a source of current prices, availability, or guest sentiment, because none of that is what a directory sells.
If your job is benchmarking hotel performance rather than finding hotels, that's a third category again, the STR and benchmarking-data class, which our STR report guide explains.
Static Datasets: Free, Big, and Frozen

For analysis, teaching, and model training, public datasets are the right answer, and they're larger than most people expect.
| Dataset | Size (as published) | What's In It | Source |
|---|---|---|---|
| TBO Hotels Dataset | 1,000,000+ hotels | Rates, reviews, amenities, location, star rating across countries | Kaggle |
| 515K Hotel Reviews in Europe | 515,000 reviews, 1,493 hotels | Booking.com-style reviews with scores and reviewer nationality | Kaggle |
| HotelRec | 50 million reviews | Large-scale TripAdvisor review corpus for recommendation research | GitHub |
| CMU hotel-review datasets | 878,561 reviews, 4,333 hotels | TripAdvisor reviews as JSON, 1.3 GB | CMU |
| Datafiniti hotel reviews | 1,000 hotels | Location, name, rating, and review text from a business database | Kaggle |
| OpenStreetMap hotels | 453,219 tagged objects | Names and coordinates, no prices | OSM taginfo |
Two of these deserve a note.
The OpenStreetMap layer is the one genuinely free and current hotel database for geography: 453,219 objects carry the hotel tag as of this week, with names, coordinates, and often addresses, under an open license.
It knows nothing about prices or reviews, which is exactly its fit: a base map that a live catalog fills in.
The review corpora answer the "hotel reviews dataset" question for anyone training a sentiment model or benchmarking a pipeline, and our hotel review sentiment analysis guide uses that kind of data for exactly that.
The catch is the same for all of them.
A 2017 review can't tell you what guests said last week, and a rate collected two years ago tells you about two years ago; when the question is about today, a frozen dataset is the wrong tool.
The Live Catalog: Building a Hotel Database From an API

A live hotel database isn't downloaded, because no one sells a fresh one.
It's assembled from an API in three passes and refreshed on request, and hotel data APIs exist to make each pass one call.
StayAPI's Booking.com endpoints are a worked example, against the largest source there is: Booking.com reports more than 28 million listings and 70 million guest reviews.
Pass 1: the property list.
Resolve each market to a destination ID, then page through search results at up to 100 per page; the hotel search API guide walks through both calls.
Each result carries the hotel ID, the coordinates, the star class, the guest score, and the headline price.
Pass 2: the details record.
For each ID, the details endpoint returns the fields a catalog row needs:
curl -X GET "https://api.stayapi.com/v2/booking/hotel/details?hotel_id=4045490" \
-H "x-api-key: YOUR_API_KEY"
{
"success": true,
"hotel_id": "4045490",
"data": {
"hotel_name": "Maxime Boutique Hotel Avenida da Liberdade",
"address": "58 Praça da Alegria",
"city": "Lisbon",
"country": "pt",
"postal_code": "1250-004",
"latitude": 38.71833447459589,
"longitude": -9.145319386577626,
"star_rating": 3.0,
"review_score": 8.8,
"review_count": 3625,
"main_photo_url": "https://cf.bstatic.com/xdata/images/hotel/square200/646162366.jpg?...",
"page_name": "maxime"
}
}
| Field | Catalog Column |
|---|---|
hotel_id |
Primary key for this platform |
latitude / longitude |
Geo index, joinable to the OpenStreetMap layer |
star_rating |
Official class, null for unclassified stays |
review_score / review_count |
Reputation snapshot with its sample size |
main_photo_url |
Thumbnail for listings |
page_name |
The slug in the property's public URL |
Pass 3: the enrichment.
Facilities and photos come from sibling endpoints keyed by the same ID, and prices come from a dated call whenever you need them, which is the hotel price API job.
The freshness rule falls out of the passes.
Pass 1 reruns weekly to catch openings and closures, pass 2 reruns when a row is stale, and prices are pulled at query time rather than stored as truth; StayAPI has no rate limits, so the weekly pass over a market is one loop.
Full parameters are in the hotel details endpoint documentation, and the free hotel details tool shows one record without code.
One tradeoff, stated plainly: a catalog built this way covers the properties the booking sites list, which is nearly everything with a public rate and not the hotels that only sell direct.
If you'd rather scrape the catalog yourself, our hotel listings scraping tutorial teaches the method and its upkeep.
Cross-Platform IDs: The Column Every Hotel Database Needs

The Lisbon hotel above is 4045490 on Booking.com.
On Expedia it's a different number, on TripAdvisor a third, on Google a token, and on its own website nothing at all.
A hotel database that stores one platform's ID can only read that platform.
The moment the question becomes "what does this hotel cost on every site" or "what do guests say everywhere," the catalog needs a row that links all of those IDs to one property.
Meta search endpoints do the first step: a hotel name in, that hotel's page links on each booking site out, and each platform's URL-to-ID endpoint turns a link into the ID.
That's the hotel-matching problem, and our hotel mapping guide covers how the matching works and when a mapping service beats doing it yourself.
Plan the column from day one.
Retrofitting cross-platform IDs onto a single-platform catalog is the most common rebuild in hotel data projects.
Which Hotel Database for Which Job
| Your Job | Best Source | Why |
|---|---|---|
| Selling to hotels, event sourcing | Directory database | Contacts and affiliations, maintained by an editorial team |
| Training a model, teaching a class | Static dataset | Free, large, and reproducible |
| Base map of every hotel's location | OpenStreetMap | Free, current, open license |
| App or dashboard with current prices and ratings | Live catalog from a data API (StayAPI) | Refreshed on request, keyed by platform IDs |
| Historical rate trends | Your own stored pulls | No one sells hotel rate history for arbitrary properties |
The last row surprises people.
Price history exists only where someone stored it, so a live catalog that logs each pull becomes the historical database a year later.
Getting Started
- Decide which of the four meanings you need. For directories and static datasets, the sources above are the answer and you can stop here.
- For a live catalog, sign up at stayapi.com. Free tier, no credit card.
- Run the destination lookup and search for one market, then the details call above for a handful of IDs, and design your table around the fields that come back (including a column per platform ID).
- Pull the OpenStreetMap hotel layer for the same market and join it on coordinates to see the coverage gap between "has a public rate" and "exists on a map."
- Schedule the refreshes and pipe the JSON into your database, Google Sheets or Excel, Power BI, or no-code platforms like N8N and Make.com. For multi-market catalogs with cross-platform matching, book a demo call.
FAQ
Is there a free hotel database download?
Yes, in two forms: public datasets (the Kaggle, GitHub, and university sets above) and the OpenStreetMap hotel layer.
Both are free and both are snapshots; for live prices and ratings, the free tiers of hotel data APIs are the closest thing to a free current database.
Where can I get a hotel reviews dataset?
The largest public ones are the HotelRec corpus (50 million TripAdvisor reviews), the CMU TripAdvisor set (878,561 reviews), and the 515K European reviews set on Kaggle.
For reviews from this month rather than a past year, the reviews endpoints of a hotel data API return them per property.
How many hotels are in the world?
Counts depend on the definition, so cite the source with the number.
OpenStreetMap holds 453,219 objects tagged as hotels, and Booking.com reports more than 28 million listings once homes and apartments are included.
Can I buy a hotel database?
Directories with contacts and affiliations are sold by editorial publishers and construction-data companies, on subscription.
No one sells a current database of prices and ratings for every hotel, because it would be stale before delivery; that data is assembled from an API and refreshed on request.
How often does a hotel database need refreshing?
Prices change daily and should be pulled at query time; ratings and review counts move weekly; the property list itself changes monthly as hotels open and close.
A catalog that reruns its search pass weekly and its details pass on demand stays usable without re-pulling everything.
Ready to simplify your hotel data?
Join other developers using StayAPI to build the next generation of travel applications. Get started for free today.