Updated Oct 2026
Hospitable reviews API in Python: Airbnb, Booking.com and Vrbo reviews, replies
Hospitable’s Public API v2 gives a host the guest reviews of every property across Airbnb, Booking.com, Vrbo and direct bookings, with the public rating and text, and a one-shot respond endpoint. Authentication is a personal token, which keeps the code short; the trade-off is a reviews list with no date filter. This guide does it with requests, following developer.hospitable.com, which is also how Prisma’s Hospitable connector works (in beta, built from the docs). Guesty and Hostaway have their own guides; the sector view is on hotel reviews API.
pip install requestsCredentials: a Personal Access Token (my.hospitable.com → Apps → API access) with the reviews read and write scopes. The API needs a Host, Professional or Mogul plan.
1. Properties
import os, requests
API = "https://public.api.hospitable.com/v2"
H = {"Authorization": f"Bearer {os.environ['HOSPITABLE_TOKEN']}", "Accept": "application/json", "Content-Type": "application/json"}
def paged(path, per_page=100, **params):
page = 1
while True:
body = requests.get(f"{API}{path}", headers=H, params={"page": page, "per_page": per_page, **params}, timeout=30).json()
yield from body.get("data", [])
meta = body.get("meta") or {}
if meta.get("current_page", page) >= meta.get("last_page", page) or not body.get("data"):
break
page += 1
props = list(paged("/properties"))
for p in props:
print(p["id"], p.get("public_name") or p.get("name"), (p.get("address") or {}).get("display"))
PROPERTY = props[0]["id"]2. Reviews of a property
for r in paged(f"/properties/{PROPERTY}/reviews", per_page=50, include="guest"):
pub = r.get("public") or {}
g = r.get("guest") or {}
author = " ".join(x for x in [g.get("first_name"), (g.get("last_name") or "")[:1] and f"{g['last_name'][0]}."] if x) or None
print(r["id"], r.get("platform"), pub.get("rating"), r.get("reviewed_at"), author, (pub.get("review") or "")[:80],
"| responded" if (pub.get("response") or "").strip() else "", "| can respond" if r.get("can_respond") else "")Fields: id, platform (airbnb, booking, vrbo, direct), public.rating (1 to 5), public.review (the guest’s text), public.response (yours), reviewed_at, responded_at, can_respond, guest (first and last name, language, when include=guest) and listing.platform_id (the Airbnb listing id, so https://www.airbnb.com/rooms/<id> links to it). Pages are 50 at most, with meta.current_page and meta.last_page; there’s no date filter and no documented order, so a sync reads every page and keeps what’s newer than the last check.
3. Respond (once, while the window is open)
if r.get("can_respond"):
requests.post(f"{API}/reviews/{r['id']}/respond", headers=H, json={"response": "Thank you, Laura! The new coffee machine is in for your next stay."}, timeout=30).raise_for_status()One response per review, inside the channel’s window (30 days on Airbnb); it can’t be edited or removed. Errors come back with a message or reason_phrase.
4. The same job through Prisma
Prisma connects a Hospitable account with the token (checked before storing, encrypted), imports properties as locations, syncs reviews with the guest’s name and the channel, and publishes responses through /respond only while can_respond is true, reading the review back after a dropped request. One key covers Hospitable, Guesty and Hostaway plus Google, Tripadvisor, Expedia and 50+ other platforms, with a webhook per new review.
H = {"Authorization": f"Bearer {os.environ['PRISMA_API_KEY']}"}
r = requests.get("https://api.prismareviews.com/v1/reviews", headers=H, params={"platform": "hospitable", "has_reply": "false", "limit": 100}, timeout=30)
for rev in r.json()["data"]:
print(rev["rating"], rev["author"], rev["text"], rev["url"])
requests.post(f"https://api.prismareviews.com/v1/reviews/{rev['id']}/reply", headers=H, json={"text": "Thank you, Laura! The new coffee machine is in for your next stay."}, timeout=30).raise_for_status()Hospitable is in beta in Prisma. Connection fields: Platforms. A test key returns sample reviews so the code runs now.
FAQ
Which Hospitable plan includes the API?
Host, Professional or Mogul. You create a Personal Access Token in my.hospitable.com → Apps → API access with the reviews read and write scopes; a 401 usually means the scopes are missing or the plan doesn’t include API access.
Can I reply to a guest review through Hospitable?
Yes, once per review, while the review’s can_respond flag is true (the channel’s window, 30 days on Airbnb): POST /reviews/{uuid}/respond with the response text. It can’t be edited or removed afterwards.
Does the Hospitable reviews endpoint support date filters?
No. It pages 50 at a time with no date filter and no documented order, so read every page per property on each sync and keep what’s newer than your last check (reviewed_at and responded_at).
Hospitable, Guesty, Hostaway and Google, one key.
2 locations free. Test keys return sample reviews from every platform.