About
Portico maps the luxury and premium hotel brands of the major hotel groups — which brands belong to which group, and where in the world each brand operates.
Coverage note: hotel listings are derived from OpenStreetMap and curated brand data. Counts shown are what Portico currently lists, not necessarily a brand's full portfolio.
Why I built this
I love to travel, and whenever I plan a trip I catch myself daydreaming about the hotels I hope to stay at someday. Yet there are surprisingly few places to casually browse which brands belong to which hotel groups, and where in the world each one operates. Wanting to know those dream hotels a little better, I built Portico as a place to search, compare, and get a bird's-eye view of the world's hotel brands.
Data sources
- OpenStreetMap contributors — hotel locations and attributes, licensed under ODbL 1.0.
- Natural Earth — country boundaries (public domain).
- Brand and group hierarchy — curated by Portico from public brand directories.
License
Because Portico's database incorporates OpenStreetMap data, the database and everything served from the public API is made available under the Open Database License (ODbL) 1.0. If you use this data, you must attribute OpenStreetMap contributors and share any derived database under the same licence. Open Database License (ODbL) 1.0
Trademarks
Portico is an independent reference site. Brand names are trademarks of their respective owners; Portico is not affiliated with, endorsed by, or sponsored by any hotel group or brand.
API terms
The API is free, requires no authentication, and is provided without any warranty. It may change or become unavailable at any time. Please keep request volume reasonable and cache responses where you can.
Tech stack
| Layer | Technology | Note |
|---|---|---|
| Runtime | Bun | Development, build and data scripts. |
| Frontend | Hono JSX (SSR) + React 19 + Vite 7 | Server-rendered pages; React is used only for the interactive Explore view. |
| Styling | Tailwind CSS v4 | Minimal monochrome tokens, shared with the charts. |
| Map | MapLibre GL JS | Vector tiles from OpenFreeMap. Clustering and bbox search. |
| Backend | Hono on Cloudflare Workers | One Worker serves both the public API and the server-rendered pages. |
| Database | Cloudflare D1 (SQLite) | Read-only. Rebuilt in batch rather than written to at runtime. |
| Data pipeline | Bun scripts + OpenStreetMap / Nominatim / Natural Earth | Curated brand data merged with OpenStreetMap, validated before it ships. |
| Quality | Vitest / Biome / tsc / GitHub Actions | Lint, type check and tests run on every push to main. |
| Hosting | Cloudflare Workers + Custom Domain | Served from the edge on a custom domain. |