For software vendors

Operations that follow
every booking.

Cleaning, turnovers, inspections and check-ins, scheduled from real reservations across Airbnb, Booking.com and Vrbo — and rescheduled the moment a booking changes.

What your product gets

The booking data operations run on.

Dates, times and guest counts in one shape, whichever channel the booking came from.

Every reservation, one shape

Check-in and check-out dates and times, guest counts and status, normalized across channels.

Changes as they happen

Webhooks for new, changed and cancelled bookings, so a schedule never runs on stale dates.

Fits beside the PMS

Your customers don't switch systems to use you. Repull reads the bookings wherever they are.

How it works

A turnover schedule that keeps itself current.

Query tomorrow's departures to build the schedule, then let webhooks move it when bookings change.

  1. 1

    Build the schedule

    GET /v1/reservations filtered by check-out date.

  2. 2

    Subscribe

    reservation.created, reservation.updated and reservation.cancelled.

  3. 3

    Keep it true

    Add, move or drop the job when an event arrives.

turnovers.ts · ts
// api(): fetch on api.repull.dev with your API key
// Tomorrow's check-outs, from every channel
const { data: departures } = await api(
  '/v1/reservations?status=confirmed&check_out_after=2026-10-01&check_out_before=2026-10-01',
)

for (const r of departures) {
  await schedule.clean({
    listingId: r.listingId,
    after: r.checkOutTime, // e.g. "10:00"
    guests: r.occupancy.total,
  })
}
webhook.ts · ts
// Keep the schedule true as bookings change
switch (event.event) {
  case 'reservation.created':
    await schedule.add(event.data.object)
    break
  case 'reservation.updated':   // new dates, guest count, status
    await schedule.reschedule(event.data.object)
    break
  case 'reservation.cancelled':
    await schedule.remove(event.data.object.id)
    break
}

Channel coverage

Where the bookings come from

AirbnbReservations and changes, with check-in and check-out times.
Booking.comReservations and changes.
VrboReservations and changes.
Host's PMSReservations from every channel the PMS manages, for the PMSs we connect to.

Coverage is checked against the live API. Full channel and PMS coverage

Alongside any PMS

Your customers keep the tools they already run.

The PMS stays in charge of the listing

On Airbnb and Vrbo, Repull connects with messaging-level access. The host's PMS keeps managing listings and calendars, and your product never competes with it for control.

Booking.com through the host's extranet login

In beta: reservations, messages and reviews from Booking.com, without the host moving their connectivity provider away from their PMS.

One integration, every channel

The same endpoints and the same webhook events whether the guest booked on Airbnb, Booking.com or Vrbo. You build it once.

How Repull works alongside a PMS→

The API behind it

Endpoints and events

GET /v1/reservations

Filter by status, listing, and check-in or check-out window. Incremental sync with updated_since.

reservation.created

Webhook: a new booking.

reservation.updated

Webhook: new dates, guest count or status, with the previous values.

reservation.cancelled

Webhook: who cancelled, and when.

Run your customers' operations on real bookings.

Free to start. Pull a test account's reservations today.