it is better to book your hotel directly with a rental company or directly with the owner. If you make a reservation with Expedia or Agoda or a travel agent, you give up all control.
I recommend using TripAdvisor or Agoda or AirBNB or Traveloka to find a hotel or villa and then try to find the hotel's real website
for booking if possible.
Budget hotels can be affordable, like $20 per night http://www.theagungresidence.com/
But why not splurge? Luxury villas are a good value in Bali, like www.villaumahdaun.com
for example (So nice!)
Reasons why it's bad to book with a travel agent:
1. Agents usually cannot change your reservation
2. Agents can never give you a refund
3. Agents sometimes do not have the correct information
4. Agents are not responsible if your holiday is ruined
Also I recommend always purchase travel insurance along with your reservation because you never know what can go wrong.