Case study

Wego: one real-time hotel search across 40+ suppliers

Scheduled ETL, Elasticsearch geo and full text search, and live prices over WebSockets for 2M+ users.

In short

Wego added hotels next to its flight search. The backend pulls rates from 40+ suppliers, including Booking.com, Agoda, Traveloka and Hotelbeds, through scheduled ETL into one rate model, indexes them in Elasticsearch for geo and full text search, and pushes price changes to 2M+ users over Redis and WebSockets. Services in Go and Node.js talk over gRPC and NATS on Kubernetes in GCP.

Client
Wego (via GoQuo), Middle East and APAC
Role
Lead Backend Engineer, Hotel Integrations
Users
2M+
Suppliers
40+
Stack
Go, Node.js, Elasticsearch, Redis, NATS

Travel metasearch · Middle East and APAC

Wego
wego.com/hotels ↗

Lead Backend Engineer, Hotel Integrations at GoQuo and Wego

One real-time hotel search across 40+ suppliers for 2M+ users.

Context

Wego added hotels next to its flight search. The new product had to compare rates from 40+ suppliers, including Booking.com, Agoda, Traveloka and Hotelbeds, and always show the cheapest available price.

Constraints
  • Every supplier with its own API and data format
  • Search by map location and by hotel or city name
  • Prices that change constantly
Key engineering decisions
  • Scheduled ETL brings every supplier feed into one rate model
  • Elasticsearch handles geo and full text search
  • Price changes reach users live through Redis and WebSockets
  • Services in Go and Node.js talk over gRPC and NATS, running on Kubernetes in GCP
  • Supplier integrations kept running through the product’s move into Wego
Results
2M+users on hotel search
40+supplier integrations
Liveprices pushed as rates change
Simplified Wego hotel metasearch architecture: scheduled ETL pulls 40+ supplier feeds into MongoDB and Elasticsearch, search services answer queries, and Redis with WebSockets pushes live price changes to 2M+ users.40+ suppliersBooking.comAgodaTravelokaHotelbedsand moreScheduled ETLone rate modelMongoDBhotels and ratesElasticsearchgeo + full textRedisprice changesSearch servicesGo + Node.jsWebSocketslive price push2M+usersServices talk over gRPC and NATS · Kubernetes on GCP
Simplified architecture. Service names are descriptive.
GoNode.jsElasticsearchRedisNATSMongoDBKubernetesGCP

Lessons for your project

What carries over to other systems

  • Normalize suppliers before you searchOne rate model for every supplier feed keeps search, ranking and pricing logic simple.
  • Use an engine built for the queryElasticsearch handles geo and full text search far better than a general database.
  • Push prices instead of pollingRedis and WebSockets put rate changes in front of users as they happen.

Questions

Common questions

Anything else is easier to answer on a short call.

How does a hotel metasearch compare prices from many suppliers?

Scheduled ETL pulls each supplier feed into one rate model, a search engine indexes it for location and name, and live price changes are pushed to users so they always see the cheapest available rate.

Why Go and Node.js together?

At Wego the services were written in Go and Node.js and connected over gRPC and NATS, running on Kubernetes in GCP.

Can you build or scale a search platform for us?

Yes. It starts with a 1–2 week discovery and architecture sprint, priced at $1,000 to $2,000, that maps your data sources, query patterns and scale.

Tell us what you need to build or scale.

Engagements start with a 1–2 week discovery sprint, $1,000 to $2,000. Email