SpiderMeta

This API is intended to be used by websites and portals that list hotels and other accomodation types but do not support the complete booking process on their own. Instead, once the visitor wants to book a room, she is redirected to the hotel booking mask (hosted by Hotel-Spider) where all the required information (guest profile, credit card data) is entered and the reservation is confirmed.

The workflow is thus very simple: the visitor can see a list of properties (and a list of room types of each properties). When specific stay dates and occupancy details are entered, the real price and availabilities can be displayed.

To support this workflow, two different resources are available on the SpiderMeta API:

1. Hotels listing

In order to retrieve a list of known properties, you can send a GET request to the https://crs.hotel-spider.com/meta/spidermeta/hotel_list endpoint.

For example, a request sent to https://crs.hotel-spider.com/meta/spidermeta/hotel_list?lang=en&apiKey=YOURAPIKEY will give you the following response:

hotel_list response example
{
    "language": "en",
    "hotels": [{
            "hotel_id": 258705,
            "hotel_spider_id": "A123",
            "name": "IDEA",
            "street": "Grabäckerstrasse 58",
            "city": "Spreitenbach",
            "postal_code": "8957",
            "state": "Aargau",
            "country": "CH",
            "email": "info@hotel-idea.ch",
            "phone": "+41565990000",
            "latitude": 47.420074,
            "longitude": 8.3742172,
            "url": "https://reservations.hotel-spider.com/#/01Q580efc7f56c46?lang=en",
            "room_types": [
                {
                    "id": "01Q580efde530f08",
                    "name": "Standard",
                    "url": "https://reservations.hotel-spider.com/#/01Q580efc7f56c46/room?id=01Q580efde530f08&lang=en",
                    "desc": "The Standard rooms provide enough space and comfort for 1 to 2 persons. This room category differs to the location (near the elevator) of the Business rooms.\n\nEquipment:\nBalcony or terrace, free wifi, free parking, ventilation (Minergie), hair dryer, heater, cable /satellite TV, ceramic floor, non-smoking room, wardrobe, desk, WC, bathroom, disabled access\n\n​Roomsize: 19m2\n\nBed type: Double bed 1.60m/2m (queensize)"
                },
                {
                    "id": "01Q580efe0442cf9",
                    "name": "Business",
                    "url": "https://reservations.hotel-spider.com/#/01Q580efc7f56c46/room?id=01Q580efe0442cf9&lang=en",
                    "desc": "The Business rooms provide enough space and comfort for 1 to 2 persons.\n\nEquipment:\nBalcony or terrace, free wifi, free parking, ventilation (Minergie), hair dryer, heater, cable /satellite TV, ceramic floor, non-smoking room, wardrobe, desk, WC, bathroom, disabled access\n\nRoomsize: 23m2\n\nBed type: Twin bed 2x 1m/2m"
                },
                {
                    "id": "01Q580efe42dd4c9",
                    "name": "Apartment",
                    "url": "https://reservations.hotel-spider.com/#/01Q580efc7f56c46/room?id=01Q580efe42dd4c9&lang=en",
                    "desc": "This spacious and modern apartment can accommodate 1-2 people and is perfect for longer stays. The modern kitchen is equipped with crockery, cutlery, pots and has a cooker, a microwave and a small dining table. A flat-screen TV and a desk are also provided. The bathroom is spacious and has a shower. Through the huge windows, the rooms are bright, friendly and light-flooded.\n\nEquipment:\nBalcony or terrace, free wifi, free parking, ventilation (Minergie), hair dryer, heater, cable /satellite TV, ceramic floor, non-smoking room, wardrobe, desk, WC, bathroom, disabled access\n\nRoomsize: 23 - 27m2\n\nBed type: Twin bed 2x 1m/2m"
                }
            ]
        }, {
            "hotel_spider_id": "B456",
            "name": "Albergo Al Giardinetto",
            "street": "Via A. e M. Pini 21 21",
            "city": "Biasca",
            "postal_code": "6710",
            "state": "TI",
            "country": "CH",
            "email": "info@algiardinetto.ch",
            "phone": "+41918621771",
            "fax": "+41918622359",
            "latitude": 46.3599178,
            "longitude": 8.9696085,
            "url": "https://reservations.hotel-spider.com/#/01u579743e90273d?lang=en",
            "room_types": [
                {
                    "id": "01u579744446528d",
                    "name": "Single Standard next to the lift",
                    "url": "https://reservations.hotel-spider.com/#/01u579743e90273d/room?id=01u579744446528d&lang=en"
                },
                {
                    "id": "01u579744a0609a5",
                    "name": "DB Budget Shared bathroom",
                    "url": "https://reservations.hotel-spider.com/#/01u579743e90273d/room?id=01u579744a0609a5&lang=en"
                },
                {
                    "id": "01u579744f8d5a09",
                    "name": "DB Standard Courtyard view",
                    "url": "https://reservations.hotel-spider.com/#/01u579743e90273d/room?id=01u579744f8d5a09&lang=en"
                },
                {
                    "id": "01u5797455050c5e",
                    "name": "DB Street view",
                    "url": "https://reservations.hotel-spider.com/#/01u579743e90273d/room?id=01u5797455050c5e&lang=en"
                },
                {
                    "id": "01u579745a1b4d25",
                    "name": "Triple room Standard",
                    "url": "https://reservations.hotel-spider.com/#/01u579743e90273d/room?id=01u579745a1b4d25&lang=en"
                },
                {
                    "id": "01u579745f406464",
                    "name": "Triple room with extra bed",
                    "url": "https://reservations.hotel-spider.com/#/01u579743e90273d/room?id=01u579745f406464&lang=en"
                },
                {
                    "id": "01u57974659b5773",
                    "name": "Quad Budget Shared bathroom",
                    "url": "https://reservations.hotel-spider.com/#/01u579743e90273d/room?id=01u57974659b5773&lang=en"
                },
                {
                    "id": "01u5c37abdb2907c",
                    "name": "EZ-Eco",
                    "url": "https://reservations.hotel-spider.com/#/01u579743e90273d/room?id=01u5c37abdb2907c&lang=en"
                }
            ]
        }
    ]
}

The hotel_spider_id attribute corresponds to the Hotel-Spider property ID and will always be present. The hotel_id attribute represent the property ID in your system and is present only when known (i.e. if the property owner has entered it into our extranet, at the moment she has activated the connection with your portal)

2. Hotel availabilities

The availability details of multiple hotels can be retrieve at once by POSTing a JSON payload to the https://crs.hotel-spider.com/meta/spidermeta/availabilities endpoint.

For example, posting the following payload to https://crs.hotel-spider.com/meta/spidermeta/availabilities?apiKey=YOURAPIKEY

Availability single room example
{
    "session": "6167a22d1f87d2028bf6",
    "arrival": "2017-05-01",
    "departure": "2017-05-03",
    "rooms": [{
            "adults": 2
        }
    ],
    "language": "en",
    "currency": "EUR",
    "hotels": [{
            "hotel_id": 258705,
            "hotel_spider_id": "A123"
        }, {
            "hotel_id": 730099,
            "hotel_spider_id": "B456"
        }, {
            "hotel_id": 555555,
            "hotel_spider_id": "555"
        },
    ]
}

would get you the following results:

Availability single room response example
{
    "A123": {
        "response_type": "available",
        "availabilities": [{
			"id": "00P582abdecadadd",
			"name": "Double deluxe / Non-refundable",
			"guestRoomId": "00P582abdfee305d",
			"ratePlanId": "00P56ba183cad830",
			"totalPrice": 240,
			"currency": "EUR",
			"availability": 26,
			"url": "https://reservations.hotel-spider.com/#/02g5aa27f42cfb7f/room?id=02g5aa2808ea8b58&channelId=344&checkIn=2019-10-23&checkOut=2019-10-25&nbAdults=2&nbChildren=0&nbInfants=0&currency=EUR&lang=en"
		},{
			"id": "00P582abdecadaee",
			"name": "Double deluxe / Standard",
			"guestRoomId": "00P582abdfee305d",
			"ratePlanId": "00P592eb6b621542",
			"totalPrice": 240,
			"currency": "EUR",
			"availability": 26,
			"url": "https://reservations.hotel-spider.com/#/02g5aa27f42cfb7f/room?id=02g5aa2808ea8b58&channelId=344&checkIn=2019-10-23&checkOut=2019-10-25&nbAdults=2&nbChildren=0&nbInfants=0&currency=EUR&lang=en"
		},{
			"id": "00P582abdecadadd",
			"name": "Single / Non-refundable",
			"guestRoomId": "00P56ba154cd2a5f",
			"ratePlanId": "00P56ba183cad830",
			"totalPrice": 240,
			"currency": "EUR",
			"availability": 26,
			"url": "https://reservations.hotel-spider.com/#/02g5aa27f42cfb7f/room?id=02g5aa2808ea8b58&channelId=344&checkIn=2019-10-23&checkOut=2019-10-25&nbAdults=2&nbChildren=0&nbInfants=0&currency=EUR&lang=en"
		}]
    },
    "B456": {
        "response_type": "unavailable"
    },
    "555": {
        "response_type": "error",
        "error": {
            error_code: 3
            message: "Unknown hotel id was requested."
        }
    }
}

You can get the result in another format with the non-mandatory parameter output (possible values are 'array' or 'object')

Availability single room query for array response
{
    "session": "6167a22d1f87d2028bf6",
    "arrival": "2017-05-01",
    "departure": "2017-05-03",
    "rooms": [{
            "adults": 2
        }
    ],
    "language": "en",
    "currency": "EUR",
    "output": "array",
    "hotels": [{
            "hotel_id": 258705,
            "hotel_spider_id": "A123"
        }, {
            "hotel_id": 730099,
            "hotel_spider_id": "B456"
        }, {
            "hotel_id": 555555,
            "hotel_spider_id": "555"
        },
    ]
}

Example with 'array' output type :

Availability single room array response example
[
    {
		"hotel_spider_id": "A123",
        "response_type": "available",
        "availabilities": [{
			"id": "00P582abdecadadd",
			"name": "Double deluxe / Non-refundable",
			"guestRoomId": "00P582abdfee305d",
			"ratePlanId": "00P56ba183cad830",
			"totalPrice": 240,
			"currency": "EUR",
			"availability": 26,
			"url": "https://reservations.hotel-spider.com/#/02g5aa27f42cfb7f/room?id=02g5aa2808ea8b58&channelId=344&checkIn=2019-10-23&checkOut=2019-10-25&nbAdults=2&nbChildren=0&nbInfants=0&currency=EUR&lang=en"
		},{
			"id": "00P582abdecadaee",
			"name": "Double deluxe / Standard",
			"guestRoomId": "00P582abdfee305d",
			"ratePlanId": "00P592eb6b621542",
			"totalPrice": 240,
			"currency": "EUR",
			"availability": 26,
			"url": "https://reservations.hotel-spider.com/#/02g5aa27f42cfb7f/room?id=02g5aa2808ea8b58&channelId=344&checkIn=2019-10-23&checkOut=2019-10-25&nbAdults=2&nbChildren=0&nbInfants=0&currency=EUR&lang=en"
		},{
			"id": "00P582abdecadadd",
			"name": "Single / Non-refundable",
			"guestRoomId": "00P56ba154cd2a5f",
			"ratePlanId": "00P56ba183cad830",
			"totalPrice": 240,
			"currency": "EUR",
			"availability": 26,
			"url": "https://reservations.hotel-spider.com/#/02g5aa27f42cfb7f/room?id=02g5aa2808ea8b58&channelId=344&checkIn=2019-10-23&checkOut=2019-10-25&nbAdults=2&nbChildren=0&nbInfants=0&currency=EUR&lang=en"
		}]
    },
    {
		"hotel_spider_id": "B456",
        "response_type": "unavailable"
    },
    {
		"hotel_spider_id": "555",
        "response_type": "error",
        "error": {
            error_code: 3
            message: "Unknown hotel id was requested."
        }
    }
]

The url member of each result contains a deeplink to the booking mask of the property where the visitor can enter his details and book the room.

Multi-room availabilities

In case of a multi-room stay, the availability query can be sent as follow:

Multi-room availability request example
{
    "session": "6167a22d1f87d2028bf7",
    "arrival": "2017-05-01",
    "departure": "2017-05-03",
    "rooms": [{
            "adults": 3
        }, {
            "adults": 2,
            "children": [
                9,
                5
            ]
        }
    ],
    "language": "en",
    "currency": "EUR",
    "hotels": [{
            "hotel_id": 258705,
            "hotel_spider_id": "A123"
        }, {
            "hotel_id": 730099,
            "hotel_spider_id": "B456"
        }, {
            "hotel_id": 555555,
            "hotel_spider_id": "555"
        },
    ]
}

In that case the url member of the availability will contain a link to the booking mask for the room combination proposed in the response.

Multi-room availability response example
{
  "hotels": [
    {
      "response_type": "available",
      "hotel_spider_id": "00P5abcfe6dab339",
      "availabilities": [
        [
          {
            "id": "00P5abd0d0eb862a",
            "name": "Presidential Suite / Non refundable",
            "guestRoomId": "00P5abd08f613f34",
            "ratePlanId": "00P5abd0c5e9c0d0",
            "totalPrice": 434.92,
            "currency": "EUR",
            "availability": 10,
            "url": "https://reservations.hotel-spider.com/#/00P5abcfe6dab339/package/443/frontreborn/bQD8slso?lang=en"
          },
          {
            "id": "00P5abd0d0cf213a",
            "name": "Double Sea view / Non refundable",
            "guestRoomId": "00P5abd08c8d391f",
            "ratePlanId": "00P5abd0c5e9c0d0",
            "totalPrice": 417.52,
            "currency": "EUR",
            "availability": 20,
            "url": "https://reservations.hotel-spider.com/#/00P5abcfe6dab339/package/443/frontreborn/bQD8slso?lang=en"
          }
        ],
        [
          {
            "id": "00P5abd0d0eb862a",
            "name": "Presidential Suite / Non refundable",
            "guestRoomId": "00P5abd08f613f34",
            "ratePlanId": "00P5abd0c5e9c0d0",
            "totalPrice": 434.92,
            "currency": "EUR",
            "availability": 10,
            "url": "https://reservations.hotel-spider.com/#/00P5abcfe6dab339/package/443/frontreborn/HDymctjK?lang=en"
          },
          {
            "id": "00P5abd0d0e52a2c",
            "name": "Double garden view / Non refundable",
            "guestRoomId": "00P5abd08ecdf160",
            "ratePlanId": "00P5abd0c5e9c0d0",
            "totalPrice": 330.54,
            "currency": "EUR",
            "availability": 20,
            "url": "https://reservations.hotel-spider.com/#/00P5abcfe6dab339/package/443/frontreborn/HDymctjK?lang=en"
          }
        ],
		...
      ]
    }
  ]
}