Μετάβαση στο περιεχόμενο
StayParity

Ισοτιμία τιμών για booking engines και ομίλους ξενοδοχείων.

Ελέγχουμε την απευθείας τιμή κάθε ξενοδοχείου απέναντι στο Booking.com, την Expedia και κάθε πωλητή που εμφανίζει το Google Hotels, και ειδοποιούμε τα συστήματά σας όταν κάποιος πουλά φθηνότερα, με ένα υπογεγραμμένο webhook που μπορούν να αξιοποιήσουν.

POSThttps://pms.example.com/hooks/paritydisparity.opened
Content-Type: application/json
X-StayParity-Signature: t=1791547324,v1=5f0c…e21a

{
  "version": 1,
  "event": "disparity.opened",
  "disparityId": "jn7cq2b1x9d8w4fzr3m6kt5v0h7s2e8a",
  "hotel": {
    "id": "kd72mbx0vy4p9s1c6tqh8wf3gr5n2j7e",
    "name": "Hotel Aurora"
  },
  "ota": "booking",
  "stayDate": "2026-10-16",
  "occupancy": 2,
  "directPriceEurMinor": 18900,
  "otaPriceEurMinor": 17900,
  "deltaEurMinor": 1000,
  "deltaPct": 5.29,
  "confidence": "confirmed",
  "detectedAt": "2026-10-09T12:02:00.000Z"
}

Ενδεικτικές τιμές. Το Hotel Aurora είναι φανταστικό.

Κάθε μηχανή κρατήσεων

Δεν εξαρτάται από μία μηχανή κρατήσεων. Το BON είναι η πρώτη που διαβάζουμε απευθείας. Τα ξενοδοχεία σε οποιαδήποτε άλλη καλύπτονται ήδη.

Απευθείας από τη μηχανή

Όπου έχουμε connector για τη μηχανή κρατήσεων ενός ξενοδοχείου, διαβάζουμε την απευθείας τιμή του όπως τη βλέπει ο επισκέπτης στο δικό του site. Το BON είναι η πρώτη.

Ή μέσω Google Hotels

Για ξενοδοχείο σε οποιαδήποτε άλλη μηχανή, χρησιμοποιούμε την τιμή που δείχνει το Google Hotels για το επίσημο site του. Χωρίς εγκατάσταση και χωρίς πρόσβαση στη μηχανή.

Η επόμενη μηχανή

Κάθε μηχανή συνδέεται με έναν connector στους ίδιους ελέγχους, την ίδια αντιστοίχιση και τις ίδιες ειδοποιήσεις. Αν φτιάχνετε booking engine ή channel manager, μιλήστε μας για να είστε η επόμενη.

Το webhook

Ένα υπογεγραμμένο συμβάν για κάθε νέα χαμηλότερη τιμή. Στέλνεται ως JSON στο endpoint κάθε ξενοδοχείου, με έκδοση από το πρώτο πεδίο.

Τα πεδία

version
Πάντα 1 προς το παρόν. Μπορεί να προστεθούν πεδία, οπότε αγνοήστε όσα δεν γνωρίζετε.
event
Πάντα disparity.opened: μια νέα χαμηλότερη τιμή. Είναι το μόνο συμβάν.
disparityId
Το αναγνωριστικό της χαμηλότερης τιμής. Μια επανάληψη έχει το ίδιο, οπότε με αυτό ξεχωρίζετε τις διπλές αποστολές.
hotel
Το αναγνωριστικό και το όνομα του ξενοδοχείου στο StayParity.
ota
Το κανάλι, ως slug με πεζά: booking, expedia ή όποιος πωλητής εμφανίστηκε στο Google Hotels.
stayDate
Η νύχτα, ως YYYY-MM-DD.
occupancy
Ο αριθμός επισκεπτών.
directPriceEurMinor
Η απευθείας τιμή του ξενοδοχείου, σε λεπτά του ευρώ.
otaPriceEurMinor
Η τιμή του καναλιού, σε λεπτά του ευρώ.
deltaEurMinor
Πόσο φθηνότερα πουλά το κανάλι, σε λεπτά του ευρώ.
deltaPct
Η ίδια διαφορά ως ποσοστό της απευθείας τιμής, με δύο δεκαδικά.
confidence
confirmed αν διαβάστηκε στη σελίδα του ίδιου του καναλιού, sweep αν φάνηκε μέσω aggregator.
detectedAt
Πότε εντοπίστηκε πρώτη φορά η χαμηλότερη τιμή, σε UTC.

Πώς παραδίδεται

  • POST με Content-Type application/json, σε δημόσιο URL με https
  • Θεωρείται παραδομένο όταν το endpoint σας απαντά 2xx μέσα σε 10 δευτερόλεπτα
  • Σε 5xx ή λήξη χρόνου ξαναστέλνεται, με όλο και μεγαλύτερη αναμονή
  • Ένα 4xx θεωρείται άρνηση και δεν ξαναστέλνεται
  • Οι ανακατευθύνσεις δεν ακολουθούνται, οπότε δώστε το τελικό URL

Ποιες χαμηλότερες τιμές στέλνονται

  • Αποφασίζει ο κανόνας ειδοποιήσεων κάθε ξενοδοχείου: ελάχιστη διαφορά σε ευρώ και σε ποσοστό, και ποια κανάλια μετρούν
  • Μόνο επιβεβαιωμένες, εκτός αν ο κανόνας δέχεται και όσες φάνηκαν μέσω aggregator
  • Ένα συμβάν για κάθε χαμηλότερη τιμή, όταν εμφανιστεί, και όχι ξανά όσο παραμένει ενεργή
  • Κάθε ξενοδοχείο μπορεί να στέλνει στο δικό του endpoint, ή πολλά στο ίδιο

Η υπογραφή

HMAC-SHA256 πάνω στη χρονοσφραγίδα και στο σώμα όπως έφτασε. Το ίδιο σχήμα με του Stripe, που η ομάδα σας ίσως ήδη γνωρίζει.

X-StayParity-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256>
  1. 1Πάρτε το t, τον χρόνο Unix σε δευτερόλεπτα, και το v1, την υπογραφή σε hex.
  2. 2Υπολογίστε HMAC-SHA256 πάνω στο t, μια τελεία και το σώμα ακριβώς όπως έφτασε, με κλειδί ολόκληρο το μυστικό σας, μαζί με το whsec_.
  3. 3Συγκρίνετε τα δύο σε σταθερό χρόνο, και απορρίψτε ένα t πολύ μακριά από την τρέχουσα ώρα, ώστε ένα αίτημα που υποκλάπηκε να μην μπορεί να ξανασταλεί.
  4. 4Κάθε επανάληψη υπογράφεται από την αρχή, με δικό της t.

Ένα μυστικό υπογραφής ανά λογαριασμό υπογράφει τις αποστολές όλων των ξενοδοχείων. Ένας διαχειριστής το δημιουργεί στο portal και το βλέπει μία φορά· ένα νέο αντικαθιστά το προηγούμενο.

Επαλήθευση σε Node.js

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

// rawBody: the request body exactly as it arrived, before JSON.parse.
// secret: your whole signing secret, whsec_ prefix included.
function verify(rawBody, header, secret, toleranceSeconds = 300) {
  const parts = Object.fromEntries(header.split(",").map((part) => part.split("=", 2)));
  const timestamp = Number(parts.t);
  if (!Number.isInteger(timestamp) || !parts.v1) return false;
  if (Math.abs(Date.now() / 1000 - timestamp) > toleranceSeconds) return false;
  const expected = createHmac("sha256", secret).update(`${timestamp}.${rawBody}`).digest("hex");
  const a = Buffer.from(expected, "hex");
  const b = Buffer.from(parts.v1, "hex");
  return a.length === b.length && timingSafeEqual(a, b);
}

Λογαριασμοί

Όλα τα καταλύματα σε έναν λογαριασμό. Για έναν όμιλο ξενοδοχείων, ή για τα ξενοδοχεία που μας φέρνετε ως συνεργάτης.

Κάθε ξενοδοχείο με τη δική του λίστα

Κάθε ξενοδοχείο έχει τις δικές του χαμηλότερες τιμές, τον δικό του κανόνα ειδοποιήσεων και το δικό του endpoint, και στο portal περνάτε από το ένα στο άλλο.

Η ομάδα σας, με ρόλους

Οι διαχειριστές ορίζουν την ομάδα και το μυστικό υπογραφής. Τα μέλη δουλεύουν τη λίστα και ρυθμίζουν τις ειδοποιήσεις.

Η ρύθμιση γίνεται από εμάς

Η ομάδα μας προσθέτει κάθε ξενοδοχείο, τον κανόνα ειδοποιήσεών του και την πρόσβαση της ομάδας σας. Τα ξενοδοχεία σας δεν εγκαθιστούν τίποτα.

Συνεργάτες

Συστήστε τα ξενοδοχεία σας ή μεταπωλήστε το StayParity. Πείτε μας πώς συνεργάζεστε με ξενοδοχεία, και θα συμφωνήσουμε μαζί τους όρους.

Σύσταση

Μας συστήνετε τα ξενοδοχεία με τα οποία συνεργάζεστε. Εμείς τα ρυθμίζουμε και τα υποστηρίζουμε.

Μεταπώληση

Προσφέρετε το StayParity στα ξενοδοχεία σας, ως μέρος όσων ήδη τους πουλάτε.

Ερωτήσεις

Τι ρωτούν πρώτα οι συνεργάτες. Για οτιδήποτε άλλο, ρωτήστε μας.

Πρέπει τα ξενοδοχεία μας να είναι σε BON;
Όχι. Το BON είναι η πρώτη μηχανή κρατήσεων που διαβάζουμε απευθείας, όχι προϋπόθεση. Για ξενοδοχείο σε οποιαδήποτε άλλη μηχανή, χρησιμοποιούμε την τιμή που δείχνει το Google Hotels για το επίσημο site του.
Πώς παίρνουμε τα δεδομένα;
Μέσω του webhook: στέλνουμε κάθε νέα χαμηλότερη τιμή στο endpoint σας όταν εμφανιστεί. Αν χρειάζεστε κάτι που δεν περιέχει, πείτε μας.
Τι πρέπει να εγκαταστήσει ένα ξενοδοχείο;
Τίποτα, για τους ελέγχους και τις ειδοποιήσεις. Το σήμα απευθείας κράτησης είναι ένα script tag στο site του ξενοδοχείου, και μόνο αν το θέλει.