Zum Inhalt springen
Gründungshotels:29 € pro Hotel und Monat zzgl. MwSt., solange Sie bleiben.Anfragen bis zum 31. März 2027.So funktioniert es
StayParity

Parität für Buchungs­maschinen und Hotelgruppen.

Wir vergleichen den Direktpreis jedes Hotels mit Booking.com, Expedia und den Anbietern bei Google Hotels, die es beobachtet. Stimmen zwei Google-Abrufe überein, kommt die Preisabweichung in die Warteschlange dieses Hotels. Der signierte Webhook unten ist dokumentiert, aber noch nicht in Betrieb.

POSThttps://pms.example.com/hooks/paritydisparity.opened
Content-Type: application/json
webhook-id: ns4k8w2q7c1m9x5t3h6v0b2r8d7f4j1g
webhook-timestamp: 1791547324
webhook-signature: v1,Xq0c…e21a=
 
{
  "version": 3,
  "id": "ns4k8w2q7c1m9x5t3h6v0b2r8d7f4j1g",
  "event": "disparity.opened",
  "disparityId": "jn7cq2b1x9d8w4fzr3m6kt5v0h7s2e8a",
  "hotel": { "id": "kd72mbx0vy4p9s1c6tqh8wf3gr5n2j7e", "name": "Hotel Aurora" },
  "ota": "booking",
  "stayDate": "2026-10-16",
  "occupancy": 2,
  "directPriceEurMinor": 18800,
  "otaPriceEurMinor": 17900,
  "deltaEurMinor": 900,
  "deltaPct": 4.79,
  "trust": "confirmed",
  "findingKind": "rate_disparity",
  "evidence": { … },
  "detectedAt": "2026-10-09T12:02:00.000Z"
}

Beispielwerte. Das Hotel Aurora ist frei erfunden.

[01]  Jede Buchungsmaschine

An keine bestimmte Buchungsmaschine (IBE) gebunden. BON ist die erste, deren Preise wir direkt abrufen. Hotels mit jeder anderen sind schon heute abgedeckt.

Direkt aus der Buchungsmaschine

Haben wir eine Anbindung an die Buchungsmaschine eines Hotels, rufen wir seinen Direktpreis so ab, wie ein Gast ihn auf der eigenen Website des Hotels sieht. BON ist die erste.

Oder über Google Hotels

Für ein Hotel mit einer anderen Buchungsmaschine nehmen wir den Preis, den Google Hotels für seine offizielle Website zeigt. Installiert wird nichts, und wir brauchen keinen Zugriff auf die Buchungsmaschine.

Die nächste Buchungsmaschine

Für jede Buchungsmaschine kommt nur eine Anbindung hinzu; Prüfungen und Alarme bleiben dieselben. Entwickeln Sie eine Buchungsmaschine oder einen Channel-Manager, sprechen Sie mit uns: Ihr System könnte das nächste sein.

[02]  Der Webhook

Ein signiertes Ereignis, sobald eine bestätigte Preisabweichung neu auftritt. Sobald der Webhook in Betrieb ist, geht es als JSON an den eigenen Endpunkt jedes Hotels, mit der Versionsnummer als erstem Feld.

Die Felder

version
Heute immer 3. Innerhalb dieser Version können Felder hinzukommen, ignorieren Sie also alle, die Sie nicht kennen.
id
Die ID dieser Zustellung. Jeder erneute Versuch trägt dieselbe, im Body und im Header webhook-id. Daran erkennen Sie Wiederholungen und können sie überspringen.
event
Immer disparity.opened: eine neue Preisabweichung. Ein anderes Ereignis gibt es nicht.
disparityId
Die ID der Preisabweichung.
hotel
ID und Name des Hotels in StayParity.
ota
Der Kanal als Slug in Kleinbuchstaben: booking, expedia oder der Anbieter, den Google Hotels aufgeführt hat.
stayDate
Die Nacht im Format YYYY-MM-DD.
occupancy
Die Zahl der Gäste.
directPriceEurMinor
Der Direktpreis des Hotels, in Euro-Cent.
otaPriceEurMinor
Der Preis des Kanals, in Euro-Cent.
deltaEurMinor
Um wie viel der Kanal günstiger ist, in Euro-Cent.
deltaPct
Dieselbe Differenz in Prozent des Direktpreises, auf zwei Nachkommastellen.
trust
confirmed, wenn der Preis auf der eigenen Seite des Kanals abgerufen wurde; seen_twice, wenn zwei Abrufe bei Google Hotels im Abstand von mindestens 30 Minuten auf derselben Grundlage Preise ergaben, die höchstens 1 % voneinander abweichen.
reason
now_over_threshold, wenn eine Preisabweichung, die unterhalb Ihrer Schwellenwerte schon offen war, diese inzwischen überschritten hat. Bei einer neuen fehlt das Feld.
findingKind
Immer rate_disparity: dasselbe Zimmer zu denselben Bedingungen, beim Anbieter günstiger.
evidence
Der erste und der neueste Abruf der Preisabweichung, jeweils mit beiden Angeboten, wie sie abgerufen wurden: Preis, Quelle, Zeitpunkt, Zimmer, Verpflegung und Stornierungsbedingungen.
detectedAt
Wann die Preisabweichung zuerst gesehen wurde, in UTC.

Wie er zugestellt wird

  • Ein POST mit Content-Type application/json an eine öffentliche https-URL
  • Zugestellt ist er, sobald Ihr Endpunkt innerhalb von 10 Sekunden mit 2xx antwortet
  • Bei 5xx oder einer Zeitüberschreitung folgt ein erneuter Versuch, mit jeweils längerer Wartezeit
  • Ein 4xx gilt als Ablehnung und wird nicht wiederholt
  • Weiterleitungen werden nicht verfolgt, geben Sie also die endgültige URL an

Welche Preisabweichungen gesendet werden

  • Die Alarmregel jedes Hotels legt die Mindestdifferenz fest, in Euro und in Prozent
  • Preisabweichungen bei den Anbietern, die das Hotel beobachtet, sobald sie auf der eigenen Seite des Anbieters bestätigt sind. Eine nur bei Google gesehene bleibt in der Warteschlange und in der Zusammenfassung per E-Mail
  • Ein Ereignis pro Preisabweichung, wenn sie neu auftritt, und keines mehr, solange sie offen bleibt
  • Jedes Hotel kann an einen eigenen Endpunkt senden, oder mehrere Hotels an denselben
[03]  Die Signatur

HMAC-SHA256 über die ID, den Zeitstempel und den unveränderten Body. Sie folgt Standard Webhooks, daher kann die offizielle Bibliothek sie in den meisten Programmiersprachen prüfen.

webhook-id: <the payload's id>
webhook-timestamp: <unix seconds>
webhook-signature: v1,<base64 HMAC‑SHA256>
  1. 1Lesen Sie drei Header: webhook-id, webhook-timestamp in Unix-Sekunden und webhook-signature, bestehend aus v1, einem Komma und der Signatur in Base64.
  2. 2Berechnen Sie HMAC-SHA256 über die ID, einen Punkt, den Zeitstempel, einen Punkt und dann den Body genau so, wie er ankam. Als Schlüssel dient Ihr Signaturschlüssel ohne das Präfix whsec_, aus Base64 dekodiert.
  3. 3Vergleichen Sie beide in konstanter Zeit und lehnen Sie einen Zeitstempel ab, der zu weit von der aktuellen Zeit abweicht, damit eine abgefangene Anfrage nicht erneut gesendet werden kann.
  4. 4Jeder erneute Versuch behält seine webhook-id und wird mit eigenem Zeitstempel neu signiert.

Ein Signaturschlüssel pro Konto signiert die Zustellungen aller Hotels. Ein Kontoadmin erstellt ihn im Portal und sieht ihn nur einmal; ein neuer ersetzt den bisherigen.

Prüfung in Node.js

JavaScript
import { createHmac, timingSafeEqual } from "node:crypto";

// Or let the official library do it: npm install standardwebhooks, then
// new Webhook(secret).verify(rawBody, headers) throws unless it checks out.
// rawBody: the request body exactly as it arrived, before JSON.parse.
// headers: the request headers, with Node's lower-case names.
// secret: your whole signing secret, whsec_ prefix included.
function verify(rawBody, headers, secret, toleranceSeconds = 300) {
  const id = headers["webhook-id"];
  const timestamp = Number(headers["webhook-timestamp"]);
  if (!id || !Number.isInteger(timestamp)) return false;
  if (Math.abs(Date.now() / 1000 - timestamp) > toleranceSeconds) return false;
  const key = Buffer.from(secret.replace(/^whsec_/, ""), "base64");
  const expected = createHmac("sha256", key).update(`${id}.${timestamp}.${rawBody}`).digest();
  return String(headers["webhook-signature"] ?? "").split(" ").some((entry) => {
    const [version, signature = ""] = entry.split(",", 2);
    const given = Buffer.from(signature, "base64");
    return version === "v1" && given.length === expected.length && timingSafeEqual(given, expected);
  });
}

Python, PHP, erneute Versuche und Tests in der Webhook-Doku

[04]  Konten

Alle Hotels in einem Konto. Für eine Hotelgruppe oder für die Hotels, die Sie uns als Partner bringen.

Jedes Hotel mit eigener Warteschlange

Jedes Hotel hat seine eigenen Preisabweichungen und seine eigene Alarmregel, und im Portal wechseln Sie zwischen den Hotels.

Ihr Team mit Rollen

Kontoadmins verwalten das Team und den Signaturschlüssel. Mitglieder bearbeiten die Warteschlange und richten die Alarme ein.

Von uns eingerichtet

Unser Team legt jedes Hotel, seine Alarmregel und die Zugänge Ihres Teams an. Ihre Hotels müssen nichts installieren.

[05]  Partner

Empfehlen Sie uns Ihre Hotels oder verkaufen Sie StayParity weiter. Sagen Sie uns, wie Sie mit Hotels zusammenarbeiten, dann vereinbaren wir die Bedingungen gemeinsam.

Empfehlen

Stellen Sie uns die Hotels vor, mit denen Sie arbeiten. Wir richten sie ein und betreuen sie.

Weiterverkaufen

Bieten Sie Ihren Hotels StayParity als Teil dessen an, was Sie ihnen schon verkaufen.

Über eine Partnerschaft sprechen
[06]  Fragen

Was Partner zuerst fragen. Alles andere fragen Sie uns einfach.

Etwas anderes fragen

Nein. BON ist die erste Buchungsmaschine, deren Preise wir direkt abrufen, aber keine Voraussetzung. Für ein Hotel mit einer anderen Buchungsmaschine nehmen wir den Preis, den Google Hotels für seine offizielle Website zeigt.

Finden Sie heraus, was die OTAs heute Nacht für Ihre Zimmer verlangen.

Ohne Karte, ohne Installation. Die nächsten 30 Nächte, gegen jeden Anbieter bei Google Hotels.