Pricing a new rental property is harder than repricing an existing one. When you renew a lease, you have 12 months of feedback - how long the unit took to rent, what applicants said about price, what competing listings looked like. When you price a brand-new unit, you have none of that. You're working blind against a market that may have shifted since you underwrote the deal.

Get it right and you rent in two weeks. Get it wrong in either direction - too high means extended vacancy burning $150-200/day, too low means leaving thousands on the table annually and complicating your next refinance. This guide walks through a four-factor framework that experienced operators use to set defensible opening prices on new inventory.

Why New Properties Are the Hardest to Price

Three things make new properties uniquely difficult:

No rent history. For a stabilized building, you can look at what the previous lease signed for, what concessions were offered, and how long it sat. For a brand-new unit, all you have is comps - which introduces uncertainty about whether your property will perform at the median, above it, or below it.

No tenant feedback. Existing tenants - even indirectly - tell you a lot. If turnover is low and you're getting 20 inquiries per vacancy, you are probably under-market. If you're offering two months free to keep people, you're over-market. New properties have no signal from prior occupants.

Timing uncertainty. A new SFR acquisition or small multifamily might take 30-90 days from contract to keys. The market can move in that time. Your pro-forma comp analysis from 60 days ago may need to be refreshed before you list.

The four-factor framework below is designed to account for all three of these challenges systematically.

The Four-Factor Pricing Framework

Factor 1: Comp Median as Your Anchor

Pull 15-20 active listings within 0.5 miles matching your bedroom count, then calculate the median asking rent. This is your baseline anchor - the number everything else is adjusted against. Do not use the mean (too sensitive to outliers) and do not use asking rent from a single comparable (too risky). You need the median of a genuine comp set.

For detailed guidance on building a reliable comp set, see our post on how to find rental comps for any address. The short version: control for bedroom count, stay within radius (not zip code), and remove furnished/corporate listings.

If you are using the RentComp API, the market_stats.median_rent field already does this - segmented by bedroom count, outlier-filtered, and sourced from multiple listing platforms.

Factor 2: Amenity Premium or Discount Adjustments

Your comp median reflects the average amenity level of active listings in the area. If your property is above or below that average, adjust accordingly. Here are the adjustments that hold up consistently across major US markets in 2026:

To use these: compare your property's amenity list against the amenity profile of your comp set. If your comp set is heavy on in-unit W/D buildings and your unit lacks it, subtract rather than add.

Factor 3: Vacancy Risk Discount for First 60 Days

This is the factor most landlords skip, and it's the one that leads to 45-day vacancies on new listings. Every day the unit sits empty costs you money. At $1,800/month rent, each day of vacancy is $60 in lost income. A 30-day vacancy while you hold firm on price costs $1,800 - which is equivalent to setting rent $150/month too high and recovering it in 12 months.

The math is simple: if you are uncertain whether your property will attract qualified applicants quickly, a 2-3% discount from your adjusted comp median is cheap insurance. For a $1,800 unit, that's $36-54/month - less than the cost of a single extra week vacant.

This discount should be temporary. The goal is to generate showing velocity in the first two weeks. If you price at market-2% and get 10 showings and multiple applications in week one, you have confirmed the market will bear your price. On the next vacancy, you remove the discount and hold at full market rate.

Factor 4: Seasonal Launch Factor

The month you bring a new property to market significantly affects how quickly it will rent and at what price. The national pattern breaks into three zones:

College towns follow a completely different seasonal pattern: August is peak (student move-in), December-January is almost completely dead. Resort markets (Aspen, Naples, Miami Beach) have their own seasonality based on high season. Know your local pattern.

Reading Days-on-Market as a Market Signal

Before you finalize your price, look at how long your comps are sitting. Days-on-market (DOM) is the clearest real-time signal of whether the market is absorbing supply or accumulating it.

Zillow and Apartments.com both show listing dates in search results. You can estimate DOM for any active listing by looking at when it was first listed. Do this for your 15-20 comp set listings and calculate the median.

The Launch Pricing Strategy

Here is the specific tactical approach for a new property entering the market:

  1. Pull fresh comps the week you intend to list - not when you underwrote the deal. Markets move. A comp set from 90 days ago is stale.
  2. Build your adjusted price using the four factors above: comp median + amenity adjustments - vacancy risk discount +/- seasonal factor.
  3. List at adjusted market minus 2% to generate velocity. Alert: this is your launch price, not your permanent price.
  4. Set a 14-day review trigger: if you have received fewer than 5 qualified inquiries in 14 days, drop price by another 2-3%. If you have multiple applicants competing, you have confirmation the market will bear full price on the next vacancy.
  5. Once leased, document your market data: record the final rent, days on market, number of applications received, and the comp median at time of listing. This is your baseline for the next renewal cycle.

Python Example: Building a Pricing Recommendation

Here is a practical Python snippet that pulls comps, applies the amenity adjustments and seasonal factor, and returns a pricing recommendation:

import requests
from datetime import datetime

API_KEY = "your_api_key_here"
BASE_URL = "https://api.rentcompapi.com/v1"

# Amenity adjustment table (monthly dollar values)
AMENITY_ADJUSTMENTS = {
    "in_unit_washer_dryer": 115,
    "garage_parking": 75,
    "central_ac": 50,
    "pet_friendly": 45,
    "gym_pool": 45,
    "private_outdoor": 80,
}

# Seasonal factors by month (multiplier vs annualized rate)
SEASONAL_FACTORS = {
    1: -0.04, 2: -0.04, 3: 0.00, 4: 0.00,
    5: 0.03, 6: 0.04, 7: 0.04, 8: 0.03,
    9: 0.00, 10: 0.00, 11: -0.03, 12: -0.04
}

def get_pricing_recommendation(
    address: str,
    bedrooms: int,
    property_amenities: list,
    comp_median_amenities: list,
    launch_month: int = None
) -> dict:
    if launch_month is None:
        launch_month = datetime.now().month

    # Pull comp data
    response = requests.post(
        f"{BASE_URL}/comps",
        headers={"Authorization": f"Bearer {API_KEY}"},
        json={
            "address": address,
            "bedrooms": bedrooms,
            "radius_miles": 0.5,
            "include_market_stats": True
        }
    )
    response.raise_for_status()
    data = response.json()

    stats = data["market_stats"]
    median_rent = stats["median_rent"]
    median_dom = stats.get("median_days_on_market", 21)

    # Amenity adjustment
    prop_set = set(property_amenities)
    comp_set = set(comp_median_amenities)
    amenity_delta = 0
    for amenity, value in AMENITY_ADJUSTMENTS.items():
        if amenity in prop_set and amenity not in comp_set:
            amenity_delta += value
        elif amenity not in prop_set and amenity in comp_set:
            amenity_delta -= value

    # Seasonal adjustment
    seasonal_adj = median_rent * SEASONAL_FACTORS.get(launch_month, 0)

    # Vacancy risk discount (2% for new property)
    vacancy_discount = median_rent * -0.02

    adjusted_price = median_rent + amenity_delta + seasonal_adj + vacancy_discount

    # DOM-based signal
    if median_dom < 14:
        dom_signal = "tight market - consider removing vacancy discount"
    elif median_dom < 30:
        dom_signal = "balanced market - use adjusted price as listed"
    else:
        dom_signal = "soft market - consider additional 2-3% reduction"

    return {
        "comp_median": round(median_rent),
        "amenity_adjustment": round(amenity_delta),
        "seasonal_adjustment": round(seasonal_adj),
        "vacancy_discount": round(vacancy_discount),
        "recommended_price": round(adjusted_price),
        "median_dom": median_dom,
        "market_signal": dom_signal,
        "comp_count": stats.get("comp_count")
    }

# Example
result = get_pricing_recommendation(
    address="1422 N Milwaukee Ave, Chicago, IL 60622",
    bedrooms=1,
    property_amenities=["in_unit_washer_dryer", "pet_friendly"],
    comp_median_amenities=["pet_friendly"],
    launch_month=4  # April launch
)

print(f"Comp median:          ${result['comp_median']}/mo")
print(f"Amenity adjustment:   ${result['amenity_adjustment']:+}/mo")
print(f"Seasonal adjustment:  ${result['seasonal_adjustment']:+}/mo")
print(f"Vacancy discount:     ${result['vacancy_discount']:+}/mo")
print(f"Recommended price:    ${result['recommended_price']}/mo")
print(f"Market signal:        {result['market_signal']}")

Handling Thin Markets

In rural markets, small metros (under 100,000 population), and highly specific product types (e.g., a 4BR SFR in a market dominated by apartments), you may not find 15 comparable active listings. What to do:

For a side-by-side comparison of manual comp analysis vs API-based pricing, including how the two approaches handle thin markets, see our post on rental comp API vs manual comps.

The Most Common Pricing Mistake

The most common mistake landlords make on new properties is pricing high and then waiting. The logic sounds reasonable: "I can always come down if I need to." The problem is that every day the listing sits without qualified inquiries is a day you are paying carry costs, and a stale listing develops a stigma. Sophisticated renters see days-on-market in listing history. A unit that has been listed for 45 days triggers skepticism - "why hasn't anyone taken it?"

The correct approach is the opposite: price to generate activity quickly, confirm market acceptance, and then hold firm on subsequent vacancies once you have real data. A one-time 2% discount on your first lease costs you roughly $500/year on a $2,000/month unit. Extended vacancy costs you that in three days.

Framework summary: Comp median + amenity adjustments +/- seasonal factor - vacancy risk discount. Launch at that number. Review after 14 days. Adjust or hold based on inquiry volume. Document everything for your next vacancy cycle.

The framework is simple, but it only works if your comp median is accurate. A bad comp set produces a bad anchor, and everything downstream is off. Whether you build your comp set manually or via the RentComp API, the quality of your input data determines the quality of your pricing decision.

Ready to Pull Rental Comps via API?

Join the waitlist and get 80% off founding member pricing - for life.

Join the Waitlist