API
Read-only, no authentication, CORS open to all origins. Responses are edge-cached.
curl https://portico.mori22.com/api/v1/brands?group=marriott
GET /api/v1/groupsHotel groups with brand and hotel counts.
GET /api/v1/groups/:slugOne group, including its brands.
GET /api/v1/brandsBrands. Filters: group, tier, country, collection.
GET /api/v1/brands/:slugOne brand, including per-country hotel counts.
GET /api/v1/hotelsHotels. Filters: q, brand, group, country, city, tier, collection, bbox. Sort: name | opened_year_desc | rooms_desc. Paging: limit (max 100), offset.
GET /api/v1/hotels/:slugOne hotel.
GET /api/v1/hotels.geojsonHotels as GeoJSON, same filters as /hotels.
GET /api/v1/countriesCountries with hotel and brand counts.
GET /api/v1/collectionsCurated collections.
Response shape
{
"meta": { "total": 108, "limit": 20, "offset": 0,
"attribution": "…", "license": "ODbL-1.0" },
"data": [ … ]
}Errors use { "error": { "code", "message" } }. Breaking changes will ship as /api/v2.
Data is licensed under ODbL 1.0 — see このサイトについて.