Here are The Traveling Professor's tips on saving money on hotels:
Compare Hotel Prices Using Booking Sites Like Expeida, Hotels.Com or Trivago: This is kind of obvious, but the REAL reason for comparing prices is probably not what you think it is. There are plenty of places to research hotel prices on the web, but don't buy your hotel there (see the next tip). From the research, use the pricing as a base for negotiating a low price on a hotel.
DO NOT Use Booking Sites Like Expedia, Hotels.Com or Trivago to Book Rooms: These sites take as much as 20% commission from the hotels. When booking from these sites, prices often do not include extras like breakfast and parking. Hoteliers are less likely to give customers booking through booking sites little preference in early check-in or check-out or room upgrades.
DO BOOK DIRECTLY with the Hotel: This is where the research from the booking sites comes in handy. If a booking site lists a hotel price at $200 for instance, talk to the hotel directly and either offer a lower price to book directly, or ask for perks (breakfast, parking, early/late check-in) for booking directly.
Guarantee Payment: Hotels hate late cancellations. Offer to pay in advance with no possibility of refunds. You'll need to talk directly to a hotel to do this. And if paying with a credit card that has trip cancellation insurance, you may be able to recover any non-refundable payment made to a hotel, if cancellation is for a covered reason.
Avoid Large Chain Hotels and Try to Book with Family Owned Hotels: We find family-owned hotels are more flexible in negotiating rates. We often ask them which dates we can get better rates, as they always like to fill the hotel during non-peak periods.
Book with Chain Hotels but Use Leverage: For instance, Marriott has a guaranteed low price if you find an advertised lower price on a different website. I found a lower price on a different website and Marriott met the price and further discounted it 25% as per their policy. Be prepared to provide plenty of proof though!