What it is
ADR is the average price per occupied night. Hotels use it per room. Vacation rentals use it per home (sometimes per bedroom).
The main question is what counts as revenue. Most teams use nightly rent only, excluding cleaning fees, taxes, and refundable deposits. Some include other guest fees. Write the choice down.
Why operators track it
- Pricing. Shows whether dynamic pricing is holding rate or discounting to fill nights.
- Owner conversations. Owners compare ADR to what they expected when they signed.
- Building block. ADR × occupancy = RevPAR.
- Channel comparison. ADR by channel shows where guests pay more for the same home.
How it is calculated
ADR = rent revenue ÷ guest nights sold
- Rent revenue = nightly rent for stays in the period, after discounts, before channel fees. Exclude taxes.
- Guest nights sold = paid nights in the period. Comp stays excluded.
- Allocate revenue for stays that cross month end by night.
Worked example
Example data The same made-up portfolio is used on every hospitality page: a manager with 120 homes, four of them shown in detail.
The four example homes earned $29,150 in October rent over 85 guest nights. ADR = $29,150 ÷ 85 = $342.94. If cleaning fees of $4,150 were included, ADR would be $391.76, which is why the definition matters.
How to read it
- Read it with occupancy. A rising ADR with falling occupancy may be pricing past demand.
- Compare a home to itself. Year over year, same month. Seasonality dominates.
- Watch length of stay discounts. Weekly and monthly discounts lower ADR on purpose.
- Mixed portfolios. A five-bedroom home and a studio should not share one ADR target. Normalize per bedroom or segment.
- We do not publish a benchmark. Levels vary by market, season, and property type.
Definitional choices and common pitfalls
- Fees in or out. Cleaning, pet, and resort fees can be included or excluded. Most use rent only. Show which.
- Gross or net of channel fees. ADR is usually before channel fees. Some owner reports show net only, which lowers it.
- Cross-month stays. Split revenue by night. Recognizing a whole stay at check-in moves revenue between months.
- Per unit or per bedroom. Per bedroom compares different home sizes more fairly. Hotels use per room.
- Taxes. Exclude occupancy and sales taxes. They are pass-through.
How different roles use it
| Role | How they use it |
|---|---|
| Revenue manager | Watches ADR by home, date, and channel against pricing tool recommendations. |
| Owner relations | Explains rate decisions to owners, especially in low season. |
| Finance / trust accounting | Checks that statement revenue matches ADR × nights. |
| Product / engineering lead | Defines which reservation fields roll into rent revenue. |
Questions it answers
- Did we hold rate this October compared to last October?
- Which channel brings the highest ADR for the same home?
- Did discounts to fill gaps lower ADR more than they raised occupancy?
- How does ADR differ by bedroom count?
How to present it in a report
- Headline ADR with the definition note (rent only, before channel fees).
- ADR by home, same month last year beside it.
- ADR and occupancy on the same chart.
- A footnote for any fees included.
| Home | Guest nights | Rent | ADR | Per bedroom |
|---|---|---|---|---|
| Beach house (3 bd) | 22 | $8,800 | $400 | $133 |
| Condo (2 bd) | 20 | $4,000 | $200 | $100 |
| Lake house (5 bd) | 18 | $12,600 | $700 | $140 |
| Studio (1 bd) | 25 | $3,750 | $150 | $150 |
Data you need
Fields
| Field | What it means | Example value |
|---|---|---|
| Reservation | Booking with dates and status | R-88412, Oct 3 to Oct 7 |
| Nightly rent | Rent by night after discounts | $400 |
| Fees | Cleaning, pet, other, stored separately | $250 cleaning |
| Taxes | Collected taxes, separate from rent | $148 |
| Channel | Where the booking came from | Airbnb |
What the raw data looks like
Example data A few rows as they might come out of the source system.
| Reservation | Home | Check-in | Nights | Rent | Cleaning fee | Taxes | Channel |
|---|---|---|---|---|---|---|---|
| R-88412 | Beach house | 2026-10-03 | 4 | $1,600 | $250 | $148 | Airbnb |
| R-88470 | Beach house | 2026-10-08 | 5 | $2,000 | $250 | $185 | Vrbo |
| R-88533 | Studio | 2026-10-11 | 3 | $450 | $100 | $42 | Direct |
Where this data usually lives
- Property management system (PMS) holds units, the calendar with block types, reservations, rates, fees, and often owner statements and trust accounting. For example: Guesty, Hostaway, OwnerRez, Track, Streamline, and Escapia. Some larger managers run their own in-house PMS.
- OTAs and booking channels (Airbnb, Vrbo, Booking.com, and partner distribution sites) hold payout reports, host fees, reviews, and cancellations. Payouts are usually net of host fees.
- Dynamic pricing tools hold recommended rates, final rates, minimum stay rules, and comparable sets. For example: PriceLabs and Wheelhouse. Some managers build their own.
The same field can live in more than one system. Agree with the customer which one is the source of truth.
Common data gaps and traps
- Rent and fees in one total. Some channel payouts lump them together. Split them from the reservation detail.
- Adjustments after checkout. Refunds and resolution credits change rent. Decide whether ADR uses the final amount.
- Nightly rate not stored. Only a stay total. Divide evenly by night, and say so.
- Currency. Multi-country portfolios need one reporting currency.
Related metrics
- Occupancy rate: the volume side.
- RevPAR: ADR × occupancy.
- Gross booking value: the total including fees.
FAQ
- Does ADR include cleaning fees?
- Usually not. Most definitions use nightly rent only. If you include fees, label it, because it raises ADR noticeably on short stays.
- Is ADR the same as the listed nightly rate?
- No. ADR is what guests actually paid, after discounts, averaged over nights sold.
- Should ADR be calculated per bedroom?
- For mixed portfolios it helps. A per-bedroom ADR compares a studio and a five-bedroom home more fairly. Keep the per-unit figure too.
For your data teamFormula variants, tables, SQL sketch, and dashboard spec
Formula details
adr = SUM(rent by night) / COUNT(guest nights)
adr_incl_fees = (SUM(rent) + SUM(guest fees)) / COUNT(guest nights)
adr_per_bed = SUM(rent) / SUM(guest nights x bedrooms)
Worked example detail
| Home | Rent | Guest nights | ADR |
|---|---|---|---|
| Beach house (3 bd) | $8,800 | 22 | $400.00 |
| Condo (2 bd) | $4,000 | 20 | $200.00 |
| Lake house (5 bd) | $12,600 | 18 | $700.00 |
| Studio (1 bd) | $3,750 | 25 | $150.00 |
| Total | $29,150 | 85 | $342.94 |
Tables and fields
| Table | Fields | Notes |
|---|---|---|
reservation_nights |
reservation_id, unit_id, night_date, rent_amount | Rent split by night. |
reservations |
reservation_id, unit_id, status, channel, check_in, check_out |
SQL sketch
SELECT n.unit_id, SUM(n.rent_amount) / NULLIF(COUNT(*),0) AS adr
FROM reservation_nights n JOIN reservations r USING (reservation_id)
WHERE r.status = 'confirmed' AND n.night_date >= '2026-10-01' AND n.night_date < '2026-11-01'
GROUP BY n.unit_id;
Build spec
Copy this into a ticket. It lists the grain, inputs, logic, and edge cases.
metric: hospitality.adr
grain: one row per unit per night, aggregated
inputs:
- rent by night
- reservation status
- fee lines kept separate
logic:
- adr = sum(rent) / count(guest nights)
- optional adr_incl_fees
- optional per bedroom
edge_cases:
- no guest nights: null
- comp stays: exclude
- refund after stay: use final amount, note restatement
As a dashboard card
- KPI for ADR with last year's same month, and a bar per home.
Common mistakes
- Averaging home ADRs instead of dividing totals.
- Including taxes.
- Recognizing whole stays at check-in.