# Hotel and Room Mapping API | OnArrival

> Match hotel and room records across suppliers using shared identifiers, confidence scores and human review. Use mapping with your own booking system.

Source: https://www.onarrival.com/mapping

---

# Match hotel and room records across suppliers.

Know when five supplier records are really the same hotel and the same room. Use the mapping API on its own or with OnArrival booking, with shared IDs, confidence scores and review for the uncertain matches.

[Request a key](https://www.onarrival.com/signup) [Read the docs](https://docs.onarrival.com/)

properties, mapped & deduplicated

2M+

duplicate listings, July 2026 graph

<0.1%

of records matched automatically

~97%

In short

## Mapping, in four steps.

Suppliers describe the same hotel in different ways. We work out which records are the same place and the same room, and tell you how sure we are.

1. Send Send a supplier’s hotel and room records, as a full file or one at a time.
2. Compare We check location, address, phone, content and room details.
3. Score Every match gets a confidence score, with the evidence behind it.
4. Resolve Around 97% resolve automatically. Our supply team reviews the rest.

Sources

## Different supplier records. One hotel ID.

The same hotel arrives from wholesalers, chains and hotel systems under different names, codes, room types and rate descriptions. Whatever the source, it leaves as one record.

BEDBANK

### Bedbanks & wholesalers

HotelBeds, WebBeds, TBO and RateHawk-class pools. High-volume feeds where one independent hotel can hide behind a dozen supplier codes and creative spellings.

Batch + streaming ingest

CHAIN

### Chains & direct

Marriott, Accor, Hilton and IHG feeds carry the cleanest content. When sources disagree, chain-direct details win.

Authoritative content

CHANNEL

### Channel managers & PMS

Room and rate codes straight from the hotel’s own systems (its channel manager and property management system). The ground truth for room mapping across independent hotels.

Property-level truth

YOURS

### Your own supply

Direct contracts, extranet loads and rate files go through the same pipeline, match against the same hotel IDs and stay flagged as yours.

Same pipeline, your data

How it works

## Resolve a feed in one call.

Send a supplier’s hotel and room record. You get back the shared hotel ID, the matched room type and rate plan, and a confidence score for each match. Confident matches resolve in the response. Uncertain ones go to a human-review queue and come back by webhook. No booking is required, ever.

[Read the reference](https://docs.onarrival.com/)

Example · four records, one hotel

Supplier recordMatch confidenceResult

Grand Hyatt - Dubai DXB

Bedbank A · HB-88121

0.98

Matched

Hyatt Grand, Dubai

Bedbank B · 774-2231

0.96

Matched

Grand Hyatt Dubai

Channel manager · GHD-01

0.99

Matched

G. Hyatt Residence Dubai

Wholesaler C · DXB-5530

0.64

Review

Your threshold: 0.90. Nothing below it merges without a person checking.

One hotel ID

Grand Hyatt Dubai

prop_9f2c81 · 3 records

Review queue · 1

Checked by our supply team, then returned to you by webhook.

**See the API call**

```
POST /v1/mapping/resolve
{ "supplier": "hotelbeds",
  "property": { "code": "HB-88121",
    "name": "Grand Hyatt - Dubai DXB" },
  "room": { "code": "DBL-GV-1",
    "name": "Garden Facing Standard" } }

200 OK
{ "property_id": "prop_9f2c81",
  "room_id": "room_51b7",
  "confidence": 0.98,
  "status": "resolved" }
```

In depth

## Matching is easy. Being right is hard.

Similar names are only a starting point. Compare location, property details and room attributes, then review uncertain matches before merging.

01

### Property matching

Every listing is matched to one shared hotel ID using location, address, phone and content. Three suppliers send "Grand Hyatt Dubai", "Hyatt Grand, Dubai" and "Grand Hyatt - Dubai DXB"; the API returns one ID for all three. Across 2M+ properties, re-checked continuously, under 0.1% ever show up twice.

Match

02

### Room-type mapping

A double room and a twin room are not the same room. Compare bed type, view, occupancy and size before matching. Similar names alone cannot confirm a match.

Rooms

03

### Rate-plan mapping

Compare meal plans, cancellation terms, payment timing and inclusions in one format. Rates stay separate when their terms differ, even for the same room.

Rates

04

### Content merge

Descriptions, photos and amenities come from the most reliable source for each field, on a list of 300+ amenity types in 14 languages. Chain-direct descriptions beat short wholesaler ones, and high-resolution photos replace duplicate thumbnails.

Content

05

### Confidence scores, not guesses

Every match carries a score and the evidence behind it. You set the threshold for each use: merge high-confidence matches for display, and hold anything that touches a booking for review. Nothing below your line merges silently.

Trust

06

### Human review for uncertain matches

The roughly 3% the model cannot settle goes to a review queue worked by our supply team, with an agreed turnaround (SLA) and a webhook when each record resolves. Every decision teaches the matcher, so the uncertain share keeps shrinking.

Ops

@media (prefers-reduced-motion: no-preference){ .prm-card, .prm-verdict, .prm-note, .prm-stamp{opacity:0;} .prm-link{stroke-dasharray:40; stroke-dashoffset:40;} .oa-illo-in .prm-card{animation:prmFade .5s ease-out forwards;} .oa-illo-in .prm-link{animation:prmDraw .45s ease-out forwards;} .oa-illo-in .prm-verdict{animation:prmFade .4s ease-out forwards;} .oa-illo-in .prm-note{animation:prmFade .5s ease-out forwards;} .oa-illo-in .prm-stamp{animation:prmFade .6s 2.9s ease-out forwards;} } /* opacity-only: nothing here is positioned by a CSS transform. */ @keyframes prmFade{from{opacity:0}to{opacity:1}} @keyframes prmDraw{to{stroke-dashoffset:0}} ROOM MAPPING · BEYOND THE NAMEDIFFERENT NAMESSUPPLIER AGarden View Double1 king bedGarden view2 adultsSUPPLIER BStandard, Garden1 king bedGarden view2 adultssame beds, view and guests: one roomSAME NAMESUPPLIER ADeluxe Room1 king bedCity view2 adultsSUPPLIER CDeluxe Room2 twin bedsCity view2 adultsthe beds differ: kept apartcompare the room, not the name

Capabilities

## Mapping API capabilities

Matching

- Shared property IDs
- Location + address + phone signals
- Alias & rebrand tracking
- Continuous re-verification
- Dedupe across 30+ suppliers

Rooms & rates

- Room-type mapping
- Rate plans in one format
- Meal plan + occupancy
- Bed configuration parsing
- Cancellation terms in one format

Content

- 300+ amenity types
- Multilingual descriptions
- Photo dedupe + ranking
- Most-reliable-source field merge
- Accessibility data

Integrate

- Real-time lookup API
- Batch file ingest
- Per-field confidence thresholds
- Review-queue webhooks
- No booking dependency

The standalone case

Use the mapping engine behind our Hotels product with your own suppliers. Combine matching listings and review uncertain records while keeping your booking system.

— the same graph that powers Hotels, sold on its own

Properties mapped2M+

Suppliers merged30+

Duplicate rate<0.1%

Who it's for

## Who uses Mapping?

OTA

### Multi-supplier sellers

You buy from wholesalers yourself and keep your own booking path. We work out which listings are the same hotel and which rooms are the same room, so your results page stops showing duplicates.

EXAMPLE WORKFLOWMatch property records from several sources.

Wholesale

### Bedbanks & aggregators

Clean the catalog before your buyers see it. Remove duplicate hotels, standardise rooms and rate plans, and stop refunding stays that were mapped to the wrong room.

EXAMPLE WORKFLOWCompare rooms without merging their rate terms.

Corporate

### Booking tools & TMCs

Content from one system, negotiated rates from another, market rates from a third. Resolve all of it to one hotel card so travellers compare rates, not spellings.

EXAMPLE WORKFLOWReview uncertain matches before publishing.

Questions

## Mapping: common questions

Something we haven’t covered? [Talk to the team](https://www.onarrival.com/company#contact). We can help you work through your integration.

**Do I have to book through OnArrival to use this?**

No. Mapping is a standalone service with its own API and contract. Send feeds, get shared hotel and room IDs back, and book through any supplier or bedbank you like. The API resolves identity; it never touches the booking.

**How is this different from the mapping inside your Hotels product?**

Same engine, different door. Hotels applies it behind the scenes to every search. Mapping gives it to you directly: your feeds in, shared property and room IDs out, whether or not you ever call our booking APIs.

**How accurate is the matching, honestly?**

Around 97% of records resolve automatically, every match carries a confidence score, and across the 2M+ property graph under 0.1% of listings ever show up twice. Below your chosen threshold nothing merges silently; it waits for review instead.

**What happens to records the engine cannot settle?**

They go to a human-review queue worked by our supply team. Each decision comes back by webhook and teaches the matcher, so the same question does not come back next quarter.

**How do I send you a supplier feed?**

Two ways: batch upload for full catalog files (CSV, JSON or the supplier’s own export), and a real-time lookup API for resolving records at search or import time. New suppliers are added as configuration, not code.

**Can I map my own direct contracts and private supply?**

Yes. Direct contracts, extranet loads and rate files go through the same pipeline, resolve against the same hotel IDs and stay flagged as yours in every response.

Pairs well with

## Build the rest of the trip.

[Product Hotels Hotel booking with property and room mapping built in.](https://www.onarrival.com/hotels) [Product Flights Search, book and manage flights through one API.](https://www.onarrival.com/flights) [Product Bundles Book flights, hotels and activities as one trip.](https://www.onarrival.com/bundles)

## Related reading

[All field notes →](https://www.onarrival.com/blog)

[Data and supply · 11 min How we built our hotel and room mapping pipeline Our mapping pipeline compares supplier records, checks room attributes and sends uncertain matches for review. The key is keeping the evidence behind each decision. **Pranav Upadhyay**](https://www.onarrival.com/blog/how-we-solved-room-mapping) [Data and supply · 11 min Hotel mapping: why one property appears five times Different suppliers can list the same hotel under different names. Hotel mapping joins those records while keeping room types, rate conditions and booking references distinct. **Pranav Upadhyay**](https://www.onarrival.com/blog/hotel-mapping-deduplication)

Start building

Try Hotel & Room Mapping with sandbox access.

[Request a key](https://www.onarrival.com/signup) [Read the docs](https://docs.onarrival.com/)
