1
The /markets/metrics/future/pacing endpoint returns daily booking pace data for the next ~90 days. Send a POST request with a market object specifying country, region, and locality, along with num_months to control how far ahead you want to look.
Python
import requests
API_KEY = "your_api_key"
url = "https://api.airroi.com/v1/markets/metrics/future/pacing"
payload = {
"market": {
"country": "us",
"region": "florida",
"locality": "miami"
},
"num_months": 3
}
response = requests.post(url, json=payload, headers={
"X-API-KEY": API_KEY,
"Content-Type": "application/json"
})
pacing_data = response.json()
print(f"Got {len(pacing_data)} days of pacing data")
print(pacing_data[0])2
Each data point in the response represents a single future date and contains six key fields that tell you exactly how demand is shaping up.
json
{
"date": "2025-07-04",
"booked_count": 1842,
"available_count": 614,
"booked_rate_avg": 285.50,
"available_rate_avg": 342.00,
"fill_rate": 0.75
}booked_count — Number of listings already booked for this date.
available_count — Number of listings still available for this date.
booked_rate_avg — Average nightly rate of already-booked listings.
available_rate_avg — Average nightly rate of still-available listings.
fill_rate — The key demand signal. Calculated as booked_count / (booked_count + available_count). A fill rate of 0.75 means 75% of the market’s inventory is already booked for that date. The higher the fill rate, the stronger the demand.
3
Dates with a fill rate above 0.7 signal strong demand — these are the dates where you should price UP. Filter and sort by fill rate descending to see which dates are filling fastest.
Python
# Filter for high-demand dates (fill_rate > 0.7)
high_demand = [d for d in pacing_data if d["fill_rate"] > 0.7]
# Sort by fill_rate descending (hottest dates first)
high_demand.sort(key=lambda d: d["fill_rate"], reverse=True)
print(f"Found {len(high_demand)} high-demand dates\n")
for d in high_demand[:10]:
print(f" {d['date']}: fill_rate={d['fill_rate']:.0%}, "
f"booked={d['booked_count']}, "
f"avg_rate=${d['booked_rate_avg']:.0f}")4
Dates with a fill rate below 0.3 indicate weak demand. These are dates where you should consider lowering your nightly rate, reducing minimum-night requirements, or adding last-minute discounts to avoid empty nights.
Python
# Filter for low-demand dates (fill_rate < 0.3)
low_demand = [d for d in pacing_data if d["fill_rate"] < 0.3]
# Sort by fill_rate ascending (weakest dates first)
low_demand.sort(key=lambda d: d["fill_rate"])
print(f"Found {len(low_demand)} low-demand dates\n")
for d in low_demand[:10]:
print(f" {d['date']}: fill_rate={d['fill_rate']:.0%}, "
f"available={d['available_count']}, "
f"avg_rate=${d['available_rate_avg']:.0f}")
# Suggestion: reduce price or lower min-night requirement
print("\nConsider lowering prices or min-night stays on these dates.")5
Use the /listings/future/rates endpoint to see a competitor’s pricing for every day over the next 365 days. Each entry tells you whether the listing is available, its nightly rate, and minimum-night requirement. Cross-reference with your high-demand dates to see how competitors are pricing the same periods.
Python
# Pull competitor future rates for a specific listing
competitor_id = "abc123" # Replace with actual listing ID
url = f"https://api.airroi.com/v1/listings/future/rates?id={competitor_id}¤cy=usd"
response = requests.get(url, headers={"X-API-KEY": API_KEY})
competitor = response.json()
rates = competitor["rates"]
print(f"Got {len(rates)} days of competitor rates\n")
# Compare competitor pricing on high-demand dates
high_demand_dates = {d["date"] for d in high_demand}
for r in rates:
if r["date"] in high_demand_dates and r["available"]:
print(f" {r['date']}: competitor rate=${r['rate']:.0f}, "
f"min_nights={r['min_nights']}")6
Combine the fill rate (demand signal) with competitor rates (supply pricing) to calculate an optimal nightly rate. The formula is: base_rate * demand_multiplier * competitive_adjustment. The demand multiplier scales your price up or down based on fill rate, while the competitive adjustment prevents you from being too far above or below the competition.
Python
# Build a pricing adjustment model
base_rate = 200 # Your base nightly rate
def calculate_optimal_rate(date_info, competitor_rate=None):
fill_rate = date_info["fill_rate"]
# Demand multiplier based on fill rate
if fill_rate > 0.8:
demand_multiplier = 1.3 # Very high demand: +30%
elif fill_rate > 0.6:
demand_multiplier = 1.15 # High demand: +15%
elif fill_rate > 0.4:
demand_multiplier = 1.0 # Normal demand: no change
elif fill_rate > 0.2:
demand_multiplier = 0.85 # Low demand: -15%
else:
demand_multiplier = 0.7 # Very low demand: -30%
# Competitive adjustment (if competitor data available)
competitive_adj = 1.0
if competitor_rate:
price_ratio = base_rate * demand_multiplier / competitor_rate
if price_ratio > 1.15:
competitive_adj = 0.95 # We're too expensive, pull back
elif price_ratio < 0.85:
competitive_adj = 1.05 # We're cheap, push up
optimal = base_rate * demand_multiplier * competitive_adj
return round(optimal, 2)
# Apply to all future dates
for d in pacing_data[:14]:
rate = calculate_optimal_rate(d)
print(f" {d['date']}: fill={d['fill_rate']:.0%} -> ${rate}")Keep exploring the AirROI API with these related tutorials.
Booking pace (or fill rate) measures how quickly available dates are being booked for a future period. A high fill rate means dates are filling up fast, signaling strong demand. AirROI's pacing data shows this at a daily level for the next ~90 days, letting you see exactly which dates are in high demand.
The /markets/metrics/future/pacing endpoint returns daily pacing data for approximately 90 days into the future (controlled by the num_months parameter, default 3). Each day includes booked count, available count, average rates, and fill rate.
Fill rate is calculated as booked_count / (booked_count + available_count). A fill rate of 0.7 means 70% of listings that were either booked or available for that date are already booked. This is a direct measure of demand pressure for a specific future date.
Yes. Pacing data is one of the most actionable inputs for dynamic pricing. High fill rates indicate dates where you can raise prices, while low fill rates suggest dates where lowering prices or relaxing minimum night requirements may help fill gaps. This tutorial walks through exactly how to build a pricing adjustment model.
booked_rate_avg is the average nightly rate of listings that have already been booked for that date, while available_rate_avg is the average nightly rate of listings still available. Comparing the two reveals pricing insights: if available rates are much higher than booked rates, the remaining inventory may be overpriced.
Pacing data is updated daily as new bookings are made and availability changes. We recommend pulling fresh data at least weekly if you are using it for pricing decisions, and daily during high-demand periods like holidays or local events.
Stay ahead of the curve
Join our newsletter for exclusive insights and updates. No spam ever.