Hotel Price History: Why You Can't Find It, Where It Actually Exists, and How to Build Your Own

Denis Gramm, StayAPI
By Denis Gramm, StayAPI · · 12 min read

I hope you enjoy reading this blog post. If you want our team to help you with hotel data integration, click here.

Quick summary

This guide explains why no booking site publishes hotel price history, maps the four places it actually exists, reads the national index, and shows the daily poll that builds a history you own.

Hotel Price History: Why You Can't Find It, Where It Actually Exists, and How to Build Your Own — StayAPI

Hotel price history is the one thing the booking sites never show you.
Flights come with price graphs and "book now or wait" advice; hotels come with today's rate and nothing about last week's.
The trackers don't fix it.
Google's hotel price tracking sends alerts from the day you switch it on, consumer trackers start recording when you add a hotel, and the one place that shows a genuine price history (Google's Hotel Center) shows it only to the hotel that set the prices.
This guide explains why the history is missing, maps the four places it actually exists, reads the national index for how much prices have moved, and shows the daily poll that builds a history you own.

Key Takeaways

  • No booking site publishes past hotel rates. Every price you see is today's price for a future date, and yesterday's price for that date is gone.
  • Trackers start at zero. Google's tracking and consumer apps begin recording the day you add a hotel, so their "history" is as old as your interest.
  • The national index is public. The U.S. CPI series for hotels and motels was up 2.6% in July 2026 against July 2025, and swings about 19% between January and May inside a year.
  • Market snapshots exist weekly. Aggregate pages like a London average of $347 across 60 properties give a baseline without naming a hotel.
  • The history you want is built by polling. One prices call a day, appended to a table, becomes a rate history no one sells after 90 days.

Why Hotel Price History Is So Hard to Find

Why Hotel Price History Is So Hard to Find — StayAPI

The missing graph has three causes, and none of them is a booking site being difficult.
A hotel price isn't one number.
A flight has a fare per seat class; a hotel has a rate per room type, per rate plan, per check-in date, per length of stay, per guest count.
"The price of the Lisbon hotel in October" is a surface with thousands of points, and there's no single line to draw through it.
No one stores the surface.
Booking sites compute today's rates on request and display them, and yesterday's display is overwritten.
The history exists inside the hotel's own systems (its revenue management tool knows every rate it ever loaded), which is why Google's Hotel Center lets a hotel view its own price history and no one else's.
The trackers watch forward, not back.
Google launched hotel price tracking in 2025 as an alert feature: toggle it on for a search and Google emails you when the rate drops.
Consumer trackers work the same way, and our hotel price tracker guide compares them; all of them begin their "history" the day you start watching.
So the question splits.
For a hotel you started tracking, the history begins at your first check.
For everything else, it lives in one of four places.

The Four Places Historical Hotel Prices Actually Exist

The Four Places Historical Hotel Prices Actually Exist — StayAPI

Source Whose History How Far Back Fit
Google Hotel Center Your own hotel's rates, as you sent them to Google As long as you've fed prices Hoteliers auditing their own rate loads
Consumer trackers Hotels you added, at the dates you searched From the day you added them Travelers deciding whether to wait
Industry indexes and benchmarks National or market averages of what guests paid Decades for the CPI; years for paid benchmarks Analysts and revenue teams sizing a trend
Your own stored pulls Any hotel, any dates, at the cadence you chose From the day you started polling Anyone who needs property-level history

The first two are narrow by design.
Hotel Center is a mirror for one hotel, and trackers are a diary of one traveler's searches, with no way to ask what a property charged before you cared.
The third is real history and it's free, which is why the next section reads it.
The fourth is the only source that answers property-level questions about the past, and it only exists if someone built it, which is why the section after that shows how.

How Much Have Hotel Prices Gone Up? What the Index Says

How Much Have Hotel Prices Gone Up? What the Index Says — StayAPI

The U.S. Bureau of Labor Statistics publishes a consumer price index for hotels and motels, and it's the one hotel price history that goes back decades.
Here's the recent shape, from the BLS series (index points, not seasonally adjusted):

Period Index Value What It Shows
July 2025 386.9 Baseline for the year-over-year comparison
July 2026 396.9 Up 2.6% on the year
2024 annual average 387.1 The prior full year
2025 annual average 379.9 Down 1.9% year on year
January 2026 358.1 The seasonal floor
May 2026 426.2 The seasonal peak, about 19% above January

Two readings matter.
Year on year, hotel prices rose 2.6% between July 2025 and July 2026, after a full-year average that fell 1.9% from 2024 to 2025.
So "how much have hotel prices gone up" has a sourced answer, and it's smaller than the seasonal swing.
Inside a year, the same index moves about 19% from its January floor to its May peak.
That swing is bigger than any recent annual change, which is the fact most useful to a traveler: the month you travel moves the price more than the year does.
What the index can't tell you: anything about one hotel, one city, or one room type.
It's a national average of what guests paid, and property-level questions need the two sources below.
For paid market benchmarks (occupancy, average daily rate, revenue per available room by market), our STR report guide explains what they contain and what they cost.

Market-Level History: Weekly Snapshots

Market-Level History: Weekly Snapshots — StayAPI

Between a national index and a single hotel sits the market snapshot: an aggregate of what a city's hotels charge for a fixed stay, refreshed on a schedule.
StayAPI publishes these as market rate pages.
The London page this week shows an average nightly rate of $347 and a median of $342 across 60 properties for a two-night October stay, with a range from $157 to $766 and a distribution by price band, refreshed weekly from a live multi-provider search.
Every number on such a page is an aggregate, which is the point.
It answers "is $300 a night normal for London in October" without pretending to know one hotel's past, and the weekly refresh turns it into a market history over time.
The fit: a baseline for judging a quote, a sanity check on your own data, and a trend line per city once a few months of snapshots exist.
The limit: it's a market, not a property, and the snapshot dates are fixed.

Building Your Own Hotel Price History

Building Your Own Hotel Price History — StayAPI

Property-level history has exactly one source: a series you collect.
Hotel data APIs make each collection one call, and the whole build is a daily loop that appends a row.
The category works like this: a prices endpoint takes a hotel ID and dates and returns the current rate plans, so calling it every day for the same future stay records how that stay's price moved as the date approached.
StayAPI's Booking.com prices endpoint is one such call; the hotel price API guide covers the four shapes price data comes in, and this section only needs the loop.

import csv
import datetime as dt
import requests

BASE = "https://api.stayapi.com/v1"
HEADERS = {"x-api-key": "YOUR_API_KEY"}

HOTELS = ["4045490"]                 # Booking.com hotel IDs you track
STAY = ("2026-10-06", "2026-10-08")  # the future stay you're watching

def pull(hotel_id):
    r = requests.get(f"{BASE}/booking/hotel/prices", headers=HEADERS, params={
        "hotel_id": hotel_id, "check_in": STAY[0], "check_out": STAY[1],
        "adults": 2, "currency": "USD",
    }, timeout=60)
    r.raise_for_status()
    d = r.json()["data"]
    cheapest = min(d["rooms"], key=lambda x: x["price_per_night_value"]) if d["rooms"] else None
    return {
        "pulled_on": dt.date.today().isoformat(),
        "hotel_id": hotel_id,
        "check_in": STAY[0],
        "price_per_night": d["pricing_summary"]["price_per_night_value"],
        "is_soldout": d["is_soldout"],
        "cheapest_room": cheapest["room_name"] if cheapest else None,
        "refundable": cheapest["is_refundable"] if cheapest else None,
    }

with open("rate_history.csv", "a", newline="") as f:
    w = csv.DictWriter(f, fieldnames=["pulled_on", "hotel_id", "check_in",
                                      "price_per_night", "is_soldout", "cheapest_room", "refundable"])
    if f.tell() == 0:
        w.writeheader()
    for h in HOTELS:
        w.writerow(pull(h))

Run it once a day (cron, a scheduled function, or a no-code scheduler) and the CSV becomes the history.
Today's row for the Lisbon hotel above reads $169.21 a night, 3 rooms available, cheapest room refundable; in 90 days you'll know what October did as October approached.
Store the fields that change the meaning of a price, not just the price.
The tax flag, the stay basis, and whether the cheapest room was refundable decide whether two rows are comparable, and the rate parity mistakes come from ignoring them.
For the forward-looking curve, chain calendars fill the gap today.
Radisson's price calendar endpoint returns the lowest public rate per arrival date across up to 60 days, and the Berlin Radisson Collection this week ran from $557 on October 1 to $196 on October 4 in one response, with the cheapest date marked.
That's the shape of the month ahead; your stored pulls are the shape of how it got there.
Parameters are in the Booking.com prices documentation and the Radisson price calendar documentation.
One tradeoff, stated plainly: a series you start today has no past, so the first useful read arrives after a season, not a week.

Do Hotel Prices Go Down Nearer the Date?

Sometimes, and the honest answer depends on the hotel, the season, and how full it is.
A half-empty hotel drops rates as the date approaches; a hotel filling up raises them, and the same property does both in different months.
The only defensible evidence is a series for that hotel and that season.
The calendar endpoint shows the current curve across arrival dates, and the daily poll shows how one date's price moved, which together answer the question for your hotel rather than for hotels in general.

Which History Source for Which Question

Your Question Source Where
Is this quote normal for the city? Market snapshot Market rate pages
How much have hotel prices risen this year? National index BLS CPI series
What did my own hotel charge last spring? Hotel Center Your Google Hotel Center account
Should I wait for this hotel to drop? Tracker or your own series Google tracking, or the daily poll above
What did a competitor charge last quarter? Your own stored pulls A data API (StayAPI) polled daily

The last row has no shortcut.
Competitor rate history exists only where someone stored it, which is why revenue teams start the poll before they need the answer.

Getting Started

  1. For a one-off "is this a good price," check the market page for your city and the national index above. That's a two-minute answer with no account.
  2. For your own history, sign up at stayapi.com. Free tier, no credit card.
  3. Preview a hotel's current partner offers with the free Google hotel info tool to pick the properties worth tracking.
  4. Run the loop above once by hand, check the CSV, then schedule it daily with cron or no-code platforms like N8N and Make.com.
  5. After a month, chart price_per_night by pulled_on per hotel in Google Sheets, Power BI, or Looker Studio, and you have the graph the booking sites never showed you. For portfolio-scale rate history across many hotels and booking sites, book a demo call.

FAQ

Is there a way to see historical hotel prices?

Not for an arbitrary hotel, because no booking site publishes past rates.
History exists in four places: a hotel's own Google Hotel Center, consumer trackers from the day you added a hotel, industry indexes like the CPI, and a series you collect yourself by polling a price API.

How much have hotel prices gone up?

The U.S. CPI index for hotels and motels was 2.6% higher in July 2026 than in July 2025, after a 2025 annual average 1.9% below 2024.
Inside a year the same index swings about 19% between its January floor and its May peak, so the month matters more than the year.

Is there a website to track hotel prices?

Yes, several: Google's hotel price tracking and a set of consumer trackers, all of which alert you to drops from the day you start watching.
Our hotel price tracker guide, linked above, compares them and explains what none of them can show.

Do hotel prices go down nearer the date?

Sometimes; a hotel with rooms to fill drops rates late, and a hotel filling up raises them.
The only reliable answer for a specific hotel comes from a price series for that property and season.

Can I get hotel price history from an API?

No API sells rate history for arbitrary hotels; price endpoints return today's rate for future dates.
Polling one daily and storing the rows builds the history, and after a season you own a dataset that doesn't exist anywhere else.

Ship in 3 days

Ready to simplify your hotel data?

Join other developers using StayAPI to build the next generation of travel applications. Get started for free today.