Prisma Reviews / Guides / Beds24 reviews API in Python
Beds24 reviews API in Python: Airbnb and Booking.com guest reviews with one token
Beds24 is a channel manager used by small hosts, and its API v2 exposes the guest reviews it receives from Airbnb and Booking.com, per property, with the owner’s own token. That matters because neither Airbnb nor Booking.com gives hosts a reviews API directly. It is read-only: existing replies come back, but there is no action to answer. This guide reads both channels with requests, following Beds24’s OpenAPI spec as Prisma’s Beds24 connector does (built from the spec). The rentals picture, with Hostaway for replies, is on vacation rentals reviews API.
pip install requestsCredentials: a long life token from Beds24 (Settings → Marketplace → API) with the read:channels and read:properties scopes.
1. Properties and rooms
import os, requests
from datetime import datetime, timedelta, timezone
API = "https://api.beds24.com/v2"
H = {"token": os.environ["BEDS24_TOKEN"], "accept": "application/json"}
def pages(url):
while url:
r = requests.get(url if url.startswith("http") else f"{API}{url}", headers=H, timeout=30)
r.raise_for_status()
body = r.json()
if body.get("success") is False:
raise RuntimeError(body.get("error"))
yield from body.get("data", [])
p = body.get("pages") or {}
url = p.get("nextPageLink") if p.get("nextPageExists") else None
props = list(pages("/properties?includeAllRooms=true"))
for p in props:
print(p["id"], p.get("name"), p.get("city"), [rt["id"] for rt in p.get("roomTypes", [])])2. Booking.com reviews per property
since = (datetime.now(timezone.utc) - timedelta(days=31)).date().isoformat()
prop = props[0]
for rv in pages(f"/channels/booking/reviews?propertyId={prop['id']}&from={since}"):
c, s = rv.get("content") or {}, rv.get("scoring") or {}
text = "\n\n".join(x.strip() for x in [c.get("positive"), c.get("negative")] if x and x.strip())
score10 = s.get("review_score")
stars = max(1, min(5, round(score10 / 2))) if score10 else None # Booking scores 1-10
reply = (rv.get("reply") or {}).get("text")
print("booking", rv["review_id"], stars, (rv.get("reviewer") or {}).get("name"), rv["created_timestamp"][:10], c.get("headline"), text[:80], "| replied" if reply else "")Fields: review_id, created_timestamp and last_change_timestamp (YYYY-MM-DD HH:MM:SS, UTC), content (headline, positive, negative, language_code), scoring.review_score (1 to 10), reviewer.name and reply.text when the property answered on Booking.com. Beds24 marks this endpoint Alpha.
3. Airbnb reviews per room type
for rt in prop.get("roomTypes", []):
for rv in pages(f"/channels/airbnb/reviews?roomId={rt['id']}"):
if rv.get("hidden") or (rv.get("reviewer_role") and rv["reviewer_role"] != "guest"):
continue
print("airbnb", rt["id"], rv["id"], rv.get("overall_rating"), (rv.get("submitted_at") or rv.get("first_completed_at") or "")[:10], (rv.get("public_review") or "")[:80], "| replied" if (rv.get("reviewee_response") or "").strip() else "")Fields: id, overall_rating (1 to 5), public_review, submitted_at, reviewee_response and responded_at (the host’s reply), reviewer_role (keep guest), hidden. No date filter here, so stop at your last sync with a month of look-back for late replies. Beds24 marks this endpoint Beta.
The account has 100 credits per 5 minutes across all its tokens; a property with many rooms uses one call per room.
4. The same job through Prisma
Prisma connects a Beds24 account with the token (checked by listing properties before storing, encrypted), imports every property as a location, reads Booking.com and Airbnb reviews with the look-back, maps Booking’s 1-10 score to stars, and returns them in the same JSON as Hostaway, Guesty, Google and 80+ 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": "beds24", "limit": 100}, timeout=30)
for rev in r.json()["data"]:
print(rev["rating"], rev["author"], rev["title"], rev["text"])Beds24 is read-only in Prisma, like on Beds24; for Airbnb and Booking.com replies by API, Hostaway is the route. Connection fields: Platforms. A test key returns sample reviews so the code runs now.
FAQ
How do I authenticate to the Beds24 API v2?
Create a long life token in Beds24 (Settings → Marketplace → API) with the read:channels and read:properties scopes and send it in a token header to https://api.beds24.com/v2. The account shares 100 credits per 5 minutes across all its tokens.
Which channels’ reviews does Beds24 expose?
Booking.com reviews per property (GET /channels/booking/reviews?propertyId=&from=, marked Alpha in Beds24’s API) and Airbnb reviews per room type (GET /channels/airbnb/reviews?roomId=, Beta). Up to 100 per call; follow pages.nextPageLink.
Can I reply to Airbnb or Booking.com reviews through Beds24?
No. Beds24’s API returns existing replies but has no action to post one. For replies by API, connect the property through Hostaway instead, which supports them.
Beds24, Hostaway, Guesty and Google, one key.
2 locations free. Test keys return sample reviews from every platform.