Back

How does BNBCalc estimate revenue for a property?

Last reviewed Oct 7, 2026 by Jeremy Werden

Short answer

BNBCalc estimates a property's annual revenue from up to 50 comparable Airbnb, Vrbo and Booking.com homes nearby, using what each could earn if it were bookable all year. The estimate benchmarks a well-run listing rather than the average, landing around the comps' 70th to 75th percentile, and it's gross revenue with cleaning fees included.

Where the estimate starts

Every estimate starts with the comps: nearby entire homes with a similar bedroom count, picked by the rules in How does BNBCalc choose comparable listings?. For each comp, BNBCalc then works out what it could earn if it were bookable all year:

Full-year revenue = nightly rate (cleaning included) × occupancy of open nights × 365

That figure is the Revenue (Potential) column in the comps table. Next to it, Revenue (Actual) shows what the listing earned from real bookings over the past 12 months, which is usually lower for a host who blocks off part of the year.

Before that occupancy goes into the formula, BNBCalc pulls it toward the typical occupancy of similar homes nearby. A listing that was open for only 100 nights gets pulled further than one that was open all year, so a few lucky or unlucky weeks can't swing its number much:

Occupancy used = (open nights × the listing's own occupancy + 60 × the typical nearby occupancy) ÷ (open nights + 60)

Both revenue figures include the cleaning fees guests paid and the host's platform fee built into the price guests see. Where Airbnb splits its fees, the separate service fee Airbnb charges guests isn't included.

How BNBCalc picks the headline figure

A brand-new analysis opens at the 70th percentile of the comps' full-year revenue, meaning about 70% of the comps earn less. Occupancy opens at the 70th percentile of the comps' occupancy, and the daily rate is set to match.

That opening figure changes as soon as you make your first change in the revenue section, whether that's a filter, a comp ticked or unticked, or the revenue range. From then on, the estimate follows the method you can steer:

  1. BNBCalc ranks every comp by full-year revenue and keeps the top-earning half, rounding up (25 out of 50, or 13 out of 25). Any comps tied with the last one kept stay in.
  2. Any filters you've set, any revenue range you've dragged and any comps you've unticked narrow that group further.
  3. Annual revenue is the median of what's left: the middle value, or the average of the two middle values.
  4. Occupancy is the average occupancy of those same comps.
  5. Daily rate = annual revenue ÷ (occupancy × 365).

Since the median of the top half sits near the 75th percentile of all the comps, the two methods usually land close together. If BNBCalc couldn't find enough nearby homes and used its backup comp source instead, the analysis opens on the top-half median straight away, using each comp's revenue over the past 12 months.

A worked example

Say a three-bedroom home has ten comps, which is the fewest BNBCalc uses (most analyses have more). This is an illustrative example rather than real market data, and the comps are ranked by full-year revenue:

CompFull-year revenueOccupancy
1$74,00055%
2$67,00050%
3$60,00048%
4$58,00047%
5$55,00045%
6$52,00046%
7$49,00044%
8$45,00041%
9$41,00038%
10$36,00035%

The new analysis opens at the 70th percentile of those ten revenues, which works out to $58,600.

Once you make a change, BNBCalc keeps the top half (comps 1 to 5) and takes their median, $60,000. Occupancy becomes the average of their five rates, 49%, and the daily rate is $60,000 ÷ (0.49 × 365) = $335. Monthly revenue is $60,000 ÷ 12 = $5,000, and that's the figure the expense and return examples build on.

Why the top half, and not the average

The average comp includes hosts who rent out a few weekends a year, list without good photos or pricing software, or leave the calendar sitting empty. BNBCalc's estimate is meant to show what a home that's set up properly and managed well can earn, so it benchmarks against the stronger listings.

If you plan to run the property more casually, expect your results to land closer to the middle of the range. To see that range, click How it's calculated under the estimate, which lists the 10th, 25th, 50th, 70th and 90th percentile of all your comps' revenue.

Changing the estimate

You don't have to accept the comps as they come. How do I change the revenue, daily rate or occupancy in an analysis? covers each control, but in short you can:

  • untick any comp that isn't a fair match, or use Filters to keep only houses or apartments, homes with a pool or hot tub, pet-friendly homes, or listings rated 4.8 or 4.9 stars and up;
  • untick Top 50% of comps to use the median of every comp you've kept, instead of the top half;
  • run AI Underwriter on a US property, which compares each comp's photos, layout and amenities with yours and uses the median of the closest matches;
  • or switch on Manual revenue input and type your own annual revenue, daily rate or occupancy.

Be careful with Clear in the Filters panel, though. It also unticks Top 50% of comps, so your estimate drops to the median of every comp you haven't unticked until you tick it again.

What the estimate doesn't include

The figure is gross booking revenue. It comes before the host platform fee, cleaning costs and every other expense, all of which BNBCalc subtracts further down the analysis.

Related question

It's also a full-year number. The Seasonality card spreads it across the months using the market's typical monthly pattern, so the busy and slow months still add up to the same annual total.

Frequently asked questions

Why is BNBCalc's daily rate higher than the nightly prices on the comps?

BNBCalc doesn't copy any one comp's rate. It sets the daily rate so that daily rate × occupancy × 365 equals the revenue estimate, which is based on the higher-earning comps, so the rate can sit above what a typical comp charges. Like the comps' own rates, it includes cleaning fees.

Why did my revenue estimate change after I touched a filter?

A new analysis opens at the 70th percentile of its comps. Your first change in the revenue section switches it to the median of the top-earning half of comps, narrowed by whatever you've set, unless that change was switching to AI Underwriter or manual input. It doesn't go back to the opening figure.

Terms in this article

Related articles


Was this helpful?