Skip to content
Skip to main content
OnArrival

Type three letters. Get the hotel.

Typeahead, geo and landmark search, and entity resolution over 2M+ properties, cities, airports and POIs: travel-native, typo-tolerant, flat-priced. A standalone service that works in front of any booking stack, including one that never touches OnArrival.

Illustration: a traveller types on a phone at a bright cafe table while a column of small location pins above the screen resolves into one warm glowing pin
bookable properties, canonical IDs
2M+
median typeahead response
45ms
query languages, typo-tolerant
30+
Inventory

One index. Four entity types.

A hotel, a neighbourhood, an airport and a landmark are different things to a map. To a traveller they are all "where I want to stay". The index treats them that way.

HOTELS

Bookable properties

The 2M+ deduplicated properties from the Hotels catalog, each carrying its canonical ID. A hotel result is not a pin with a phone number: it is the exact entity your booking flow consumes.

2M+ canonical entities
GEO

Cities, areas, airports

Cities, neighbourhoods and every airport with scheduled service, with the containment geometry to answer "hotels in Shoreditch" differently from "hotels in London".

Neighbourhood-level precision
POI

Landmarks travellers use

"Near the Eiffel Tower", "walking distance from Bandra station": the anchors real hotel queries hang on, indexed with the geometry to rank results around them.

250k+ landmarks indexed
RESOLVE

Entity resolution

Free text, coordinates or a supplier’s own code in; one canonical, typed entity out. The cross-walk that lets a search result, a booking record and an analytics row agree on which hotel they mean.

Real-time + batch
How it works

Suggest, search, resolve.

Three endpoints. Suggest powers the search box with ranked, typo-tolerant completions per keystroke. Search takes a resolved entity or a landmark and returns bookable properties around it. Resolve turns free text, coordinates or foreign codes into one canonical entity. Every response carries the same typed IDs, whatever the query looked like.

GET /v1/places/suggest?q=grnd+hyat+dubay

200 OK
{ "suggestions": [ {
    "type": "hotel",
    "entity_id": "prop_9f2c81",
    "name": "Grand Hyatt Dubai",
    "city": "Dubai",
    "bookable": true,
    "score": 0.97 } ] }
In depth

Generic places APIs stop where travel starts.

General-purpose places APIs were built to find restaurants and petrol stations. Travel queries are misspelt hotel names in another alphabet, and the right answer is a bookable entity, not a map pin.

01

Bookable entities, not POIs

Every hotel result carries the canonical property ID from our mapping pipeline, with geo, type and bookability attached. What comes back from the search box is the same entity a booking flow consumes, so there is no fragile name-matching step between search and checkout.

Results
02

One respectful comparison

Google Places is superb at general geography, and plenty of our customers keep it for exactly that. But ask it for "Grand Hyatt Dubai" and you get a point of interest: a pin, an address, a phone number. No canonical ID, no rooms, no notion of bookability. Travel needs search that ends in a booking.

Position
03

Misspelt, multilingual, still found

"Grnd Hyat Dubay" and the same hotel typed in Cyrillic, Arabic or Devanagari resolve to one property. Fuzzy matching and transliteration across 30+ query languages, tuned on real travel search behaviour rather than a generic spell-checker.

Queries
04

Landmark-anchored search

Travellers do not search by latitude. "Hotels near the Blue Mosque" and "close to Churchgate station" are first-class queries: 250k+ landmarks with walking-distance geometry decide what near means, and results rank by it.

Geo
05

Flat pricing, no session mathematics

Per-session billing punishes the exact behaviour a search box exists for: typing. Places Search is priced flat by monthly query volume. No session tokens, no per-keystroke charges, no rate limits that throttle autocomplete at peak.

Pricing
06

Standalone by design

This is an independent service, not a feature of our booking stack. Put it in front of any inventory: the resolution API cross-walks our canonical IDs to your own supplier codes, and nothing obliges you to book a single room through OnArrival.

Standalone
Capabilities

The Places Search surface

Search
  • Typeahead autocomplete
  • Geo + radius search
  • Landmark + POI anchors
  • Typo tolerance built in
  • Transliteration, 30+ languages
Resolve
  • Canonical entity IDs
  • Free text to entity
  • Coordinates to property
  • Supplier code cross-walk
  • Batch resolution
Coverage
  • 2M+ mapped properties
  • Cities + neighbourhoods
  • Airports with scheduled service
  • 250k+ landmarks and POIs
  • Continuously re-verified
Integrate
  • REST + drop-in typeahead widget
  • Flat pricing, no sessions
  • No per-keystroke rate limits
  • Works with any booking stack
  • Same IDs as the Hotels catalog
The point

A search box is a promise. Every suggestion we return is a place your customer can actually book, not a pin on someone else’s map.

— search that ends in a booking, not a pin
Bookable properties indexed2M+
Median typeahead response45ms
Query languages30+
Who it's for

Where Places Search earns its keep.

OTA & meta

Travel sellers

Replace the generic places dependency in the box that starts every session: hotel matching that lands on the right property, landmark queries that convert, and a bill that stops scaling with keystrokes.

"The search box finally speaks hotel."
Fintech & super-apps

Embedded travel

A travel tab is only as good as its first input. Ship typeahead that understands travel from day one, without building a places index or negotiating a maps contract.

"Autocomplete shipped before the booking flow did."
AI agents

Agentic booking

LLMs produce place names, not IDs. The resolution endpoint turns "that hotel near the Trevi Fountain" into a canonical bookable entity an agent can act on in one call.

"Entity resolution grounds the whole agent."
Questions

Before you integrate Places Search.

Something we haven’t covered? Talk to the team. A real engineer answers, never a bot.

Illustration: a concierge points out one precise spot on a large wall map for two travellers, a single warm pin marking the place
Is this a standalone product, or do I have to book through OnArrival?

Standalone. Places Search is an independent service with its own key and flat pricing, and it works in front of any booking stack. The resolution API cross-walks our canonical IDs to your own supplier codes, so you can search with us and book anywhere.

How is this different from a generic places API?

Generic places APIs return points of interest: pins, addresses, phone numbers. Places Search returns canonical travel entities: hotels with bookability, cities, airports and landmarks, deduplicated and typed, ready to hand to a booking flow without a name-matching step.

What does the pricing model look like?

Flat tiers by monthly query volume. No session tokens, no per-keystroke billing and no surprise overage when a campaign spikes traffic. Typeahead is the whole point of the product, so we never price against it.

Which languages and scripts are supported?

30+ query languages with transliteration across Latin, Cyrillic, Arabic, Devanagari and CJK scripts. Typo tolerance is tuned on travel search behaviour, so misspelt hotel names and phonetic spellings still resolve to the right property.

Do the IDs match the rest of the OnArrival platform?

Yes. A hotel entity from Places Search carries the same canonical property ID as the Hotels catalog, produced by the same mapping pipeline that keeps duplicates under 0.1%. Resolve once and every downstream call agrees on which hotel you mean.

How fast is it, and are there rate limits?

Median typeahead response is 45ms from edge-cached indexes. There are no per-keystroke limits sized to punish autocomplete; sustained limits exist only to protect the service and sit well above real search-box traffic.

Pairs well with

One product is rarely enough. Compose them.

Related reading

All field notes →
Start building
Wire Places Search into your stack with a sandbox key.