Plug 10 suppliers.
Reconcile 10 schemas.
Paste, search, ship.
Canonical B2B layer for hotel data. 1.3M properties cross-mapped across RateHawk, Expedia and Hotelbeds — without your team burning 6 months normalizing IDs, photos and room codes.
The search orchestrator collapses fan-out: ten responses become one. 10× smaller payload, NDJSON streaming, your server stops crashing under peak load. Plug in 5 lines. No sales call.
Every hotel exists
ten times.
None agree.
Different ID per supplier. Different photo. Different room code. Your team burns 6 months reconciling what should already be one field. And when the server falls over at 2pm on a Friday, your dev loses the night.
Ten IDs. One building.
Map it Monday, breaks Friday. Supplier rotates internal IDs and tells you via release note — if they send one. Every integration is a candle waiting for the wind.
Photos from 2019. Prices from 30 seconds ago.
Content updates quarterly. Prices expire in seconds. Two opposite clocks. One team. The customer closes the tab while you fight cache invalidation.
Search returns 50MB. Server crashes.
10 suppliers × 2,000 hotels × 30 rooms = 600,000 entries in a single response. Server can’t deserialize. Agency sees timeout. Customer leaves. You’re selling zero — and you find out Monday.
Three modules.
One truth.
Start with Registry — the canonical ID that kills duplicates. Add Stream when you need live pricing with dedup. Sell direct via Market when your roadmap calls for it. Each runs alone. Together they’re a platform.
One canonical ID per real hotel, cross-mapped across every integrated supplier. Unified content: amenities, photos, policies, coordinates — deduped, normalized, always fresh. Stop reconciling. Start searching.
- INDEX1.3M HOTELS
- SUPPLIERS3 LIVE
- COVERAGE50+ COUNTRIES
- INTERFACEREST / NDJSON
Bring your credentials. Parallel fan-out, dedup by canonical hotel, group rooms by signature, stream a single NDJSON response. Your server stops waving the white flag at peak load.
- MODELBYOC
- PAYLOAD10× SMALLER
- RESPONSESTREAMING
- TRANSPORTNDJSON / SSE
When selling direct hits your roadmap, plug into our licensed aggregator. One contract instead of twelve. Net rates, unified rules, single reconciliation pipeline.
- LICENSEOTA-GRADE
- RATESNET ACCESS
- BOOKINGINSTANT
- RECONCILIATIONUNIFIED
Five lines.
Every hotel.
Paste your API key. Resolve in seconds. No XML, no SOAP, no sales call before sandbox. No ‘talk to our team for pricing’. This is what modern travel infra looks like.
Read the API docs →import { Iternode } from '@iternode/sdk' const node = new Iternode({ apiKey: process.env.ITERNODE_KEY }) // One canonical ID across every supplier. const hotel = await node.registry.resolve({ name: 'Copacabana Palace', city: 'Rio de Janeiro', country: 'BR', }) hotel.id // → itn_7k9m2p hotel.suppliers // → { <9 supplier refs, redacted> } hotel.lastFresh // → 2026-04-24T14:47:22Z