Adjacent-day pricing adjusts available nights near a reservation. It can help express a policy for extending bookings, but it does not itself modify a reservation or guarantee a longer stay.
Illustrative calendar: June 12–17, 2026. Calculation date June 13; $200 per night after model effects.
For a one-day search in each direction, June 13 qualifies both after June 12 and before June 14—but receives only one −5% adjustment. June 15 follows June 14. June 16 precedes June 17.
Switch to “Missing boundary.” June 16 no longer has a known reservation in its one-day search. That does not erase the separate evidence for June 15.
| Intended policy | days_before | days_after |
|---|---|---|
| Adjust nights leading into a reservation | 1 | 0 |
| Adjust nights following a reservation | 0 | 1 |
| Adjust either side | 1 | 1 |
Both directions cannot be zero. Increasing the search distance does not allow the search to jump over unknown or blocked nights. The rule requires calendar evidence along the path.
Suppose June 13 receives a −15% gap adjustment. Its otherwise valid adjacent-day −5% is suppressed. The standalone result is $170, not $160 or $161.50. Other automatic rules may still join the shared percentage total, and owner limits can change the final rate.
The JSON below is an addition to this complete Calendar Prices request. Merge fields into one request; do not send a rule fragment by itself.
{
"location": {
"latitude": 25.7907,
"longitude": -80.13
},
"currency": "USD",
"base_price": 200
}
All worked prices use USD and assume a $200 price after model effects, with no other adjustments unless stated. They demonstrate arithmetic, not live forecasts.
Gap-day, adjacent-day, and occupancy-pacing rules need calendar.
Each row requires a unique date and a status: available, reserved, or
blocked. For this historical illustration, assume today is June 13, 2026:
{
"calendar": [
{"date": "2026-06-12", "status": "reserved", "reservation_id": "booking-a"},
{"date": "2026-06-13", "status": "available", "price": 240, "min_stay": 1,
"check_in_allowed": true, "check_out_allowed": true},
{"date": "2026-06-14", "status": "reserved", "reservation_id": "booking-b"},
{"date": "2026-06-15", "status": "available"},
{"date": "2026-06-16", "status": "available"},
{"date": "2026-06-17", "status": "reserved", "reservation_id": "booking-c"}
]
}
This creates a one-night gap on June 13 and a two-night gap on June 15–16. Use your current dates in a real request. Send up to 1,000 rows; order does not matter. Missing dates mean unknown, not available.
Optional min_stay (1–365), check_in_allowed, and check_out_allowed
help test whether a gap is bookable when no corresponding custom stay rule
is set; defaults are one night and both permissions true. price must be
positive in the request currency but does not affect calculations.
reservation_id must be nonblank and is allowed only on reserved or blocked
rows; it is not currently used by pricing rules.
{
"pricing_rules": {
"adjacent_day": {
"mode": "custom",
"settings": {"days_before": 1, "days_after": 1, "adjustment_percent": -5},
"apply_on_weekends": true
}
}
}
With the calendar above, June 13, 15, and 16 each receive −5% (200 → 190)
when used alone. The adjustment applies once even if reservations are on
both sides. days_before and days_after accept 0–30; zero disables that
direction, and at least one must be positive. Blocked or unknown nights
interrupt the search for a reservation.
If a gap-day rule already applied a nonzero adjustment, the adjacent-day
adjustment is skipped for that date. Both accept percentages greater than −100 with at most two decimal places, and
both require apply_on_weekends in custom mode.
| Available night | Why it qualifies with the rule above | Standalone price |
|---|---|---|
| June 13 | After the June 12 reservation and before June 14 | $190, applied once |
| June 15 | After the June 14 reservation | $190 |
| June 16 | Before the June 17 reservation | $190 |
These are synthetic calculations made on June 13, 2026. Replace dates with current booking evidence in a live request.
The search looks for reservations, not blocked nights. A blocked or unknown night interrupts it. In contrast, a gap rule can use a blocked night as a boundary. This difference is why “near something unavailable” is not enough to predict an adjacent-day adjustment.
A nonzero gap-day adjustment takes priority on that date. If the gap length is uncovered or its adjustment is zero, an otherwise eligible adjacent-day adjustment can still apply. The adjacent adjustment adds to the other automatic rules on the same post-model price basis.
With apply_on_weekends: false, Friday and Saturday are excluded. For scoped custom settings, provide the weekend flag again: it is not inherited from the top-level rule.
Stay ahead of the curve
Join our newsletter for exclusive insights and updates. No spam ever.