Skip to main content

How to Pull Reservation Data

Written by Ryo

The reservations endpoint returns booking data for any listing in your portfolio. Use it to build reporting dashboards, track occupancy, reconcile revenue, or sync bookings to an external system.


Pull reservations for a listing

curl "https://api.usewheelhouse.com/ss_api/v1/listings/12345678/reservations?channel=airbnb&per_page=50" \
-H "X-Integration-Api-Key: your_api_key_here"

Reading the response

Each reservation object contains:

{
"id": "res-001",
"status": "Accepted",
"start_date": "2026-04-05",
"end_date": "2026-04-10",
"booked_at": "2026-03-01T15:30:00Z",
"num_guests": 4,
"currency": "USD",
"total_price": 1250.00,
"nightly_subtotal": 1100.00,
"extra_guest": 50.00,
"security_deposit": 0.00,
"extras": 0.00,
"taxes": 100.00,
"confirmation_code": "HM4X7K",
"source_name": "Airbnb",
"comments": "Family vacation"
}

Key fields:

  • start_date / end_date — check-in and check-out dates (YYYY-MM-DD)

  • booked_at — when the booking was made (ISO 8601 timestamp)

  • status — booking status: Accepted, Declined, Expired, Canceled, Pending, Ignored

  • total_price — full amount charged to the guest

  • nightly_subtotal — nightly rate portion only, before taxes and extras

  • source_name — the platform the booking came through

  • confirmation_code — the booking reference code


Filtering by date range

Filter reservations by stay date (default) or by when they were booked:

# Reservations with stays between April 1–30
curl "https://api.usewheelhouse.com/ss_api/v1/listings/12345678/reservations?channel=airbnb&start_date=2026-04-01&end_date=2026-04-30&date_filter_type=stay_date" \
-H "X-Integration-Api-Key: your_api_key_here"
# Bookings made between March 1–31 (regardless of stay date)
curl "https://api.usewheelhouse.com/ss_api/v1/listings/12345678/reservations?channel=airbnb&start_date=2026-03-01&end_date=2026-03-31&date_filter_type=booked_at" \
-H "X-Integration-Api-Key: your_api_key_here"

date_filter_type defaults to stay_date if not specified.


Pull reservations across your portfolio

Loop through all your listings to collect reservations in bulk:

import requests
API_KEY = "your_api_key_here"
BASE_URL = "https://api.usewheelhouse.com/ss_api/v1"
headers = {"X-Integration-Api-Key": API_KEY}

listings_resp = requests.get(f"{BASE_URL}/listings?exclude_inactive=true", headers=headers)
listings = listings_resp.json()

for listing in listings:
listing_id = listing["id"]
channel = listing["channel"]
res_resp = requests.get(
f"{BASE_URL}/listings/{listing_id}/reservations",
headers=headers,
params={"channel": channel, "per_page": 50}
)
reservations = res_resp.json()
for res in reservations:
print(f"{listing['name']}: {res['confirmation_code']} | {res['start_date']} → {res['end_date']} | ${res['total_price']}")

Pagination

Reservations are paginated the same way as other list endpoints, using three optional query parameters:

  • per_page — how many reservations to return per request. Accepts a value between 1 and 100. Defaults to 50.

  • page — which page of results to return. Page 1 is the first batch, page 2 the next, and so on. Defaults to 1.

  • offset — an alternative to page. Skips this many reservations before returning results. page and offset are interchangeable — use one or the other, not both in the same request.

To pull a full result set, keep incrementing page (or offset) until a response returns fewer reservations than your per_page value — that's the signal you've reached the last page.

Next steps

How to monitor listing performance (KPIs)

Did this answer your question?