Amadeus provides a set of APIs for the travel industry. Flights, Hotels, Locations and more.
For more details see the Node documentation on Amadeus.com.
This module has been tested using Node 6 and higher, though it should work with Node 4 and 5 as well. You can install install it using Yarn or NPM.
npm install amadeus --save
To make your first API call you will need to register for an Amadeus Developer Account and set up your first application.
var Amadeus = require('amadeus');
var amadeus = new Amadeus({
clientId: '[YOUR_CLIENT_ID]',
clientSecret: '[YOUR_CLIENT_SECRET]'
});
amadeus.referenceData.urls.checkinLinks.get({
airline: '1X'
}).then(function(response){
console.log(response.data[0].href);
//=> https://www.onex.com/manage/check-in
}).catch(function(responseError){
console.log(responseError.code);
});
The client can be initialized directly.
// Initialize using parameters
var amadeus = new Amadeus({
clientId: '...',
clientSecret: '...'
});
Alternatively it can be initialized without any parameters if the environment
variables AMADEUS_CLIENT_ID
and AMADEUS_CLIENT_SECRET
are present.
var amadeus = new Amadeus();
Your credentials can be found on the Amadeus dashboard. Sign up for an account today.
By default the environment for the SDK is the test
environment. To switch to
a production (paid-for) environment please switch the hostname as follows:
var amadeus = new Amadeus({
hostname: 'production'
});
Amadeus has a large set of APIs, and our documentation is here to get you started today. Head over to our Reference documentation for in-depth information about every SDK method, it's arguments and return types.
This library conveniently maps every API path to a similar path.
For example, GET /v2/reference-data/urls/checkin-links?airline=1X
would be:
amadeus.referenceData.urls.checkinLinks.get({ airline: '1X' });
Similarly, to select a resource by ID, you can pass in the ID to the singular path.
For example, GET /v1/shopping/hotel/123/offers/234
would be:
amadeus.shopping.hotel(123).offer(234).get(...);
You can make any arbitrary API call as well directly with the .client.get
method:
amadeus.client.get('/v2/reference-data/urls/checkin-links', { airline: '1X' });
Every API call returns a Promise
that either resolves or rejects. Every
resolved API call returns a Response
object containing a body
attribute
with the raw response. If the API call contained a JSON response it will parse
the JSON into the .result
attribute. If this data also contains a data
key,
it will make that available as the .data
attribute.
For a failed API call it returns a ResponseError
containing the (parsed or unparsed) response, the request, and an error code.
amadeus.referenceData.urls.checkinLinks.get({
airline: '1X'
}).then(function(response){
console.log(response.body); //=> The raw body
console.log(response.result); //=> The fully parsed result
console.log(response.data); //=> The data attribute taken from the result
}).catch(function(error){
console.log(error.response); //=> The response object with (un)parsed data
console.log(error.response.request); //=> The details of the request made
console.log(error.code); //=> A unique error code to identify the type of error
});
If an API endpoint supports pagination, the other pages are available under the
.next
, .previous
, .last
and .first
methods.
amadeus.referenceData.locations.get({
keyword: 'LON',
subType: 'AIRPORT,CITY'
}).then(function(response){
console.log(response.data); // first page
return amadeus.next(response);
}).then(function(nextReponse){
console.log(nextReponse.data); // second page
});
If a page is not available, the response will resolve to null
.
The SDK makes it easy to add your own logger compatible with the default console
.
var amadeus = new Amadeus({
clientId: '...',
clientSecret: '...',
logger: new MyConsole()
});
Additionally, to enable more verbose logging, you can set the appropriate level
on your own logger, though the easiest way would be to enable debugging via a
parameter on initialization, or using the AMADEUS_LOG_LEVEL
environment
variable. The available options are silent
(default), warn
, and debug
.
var amadeus = new Amadeus({
clientId: '...',
clientSecret: '...',
logLevel: 'debug'
});
// Airpot and City Search
// Find all the cities and airportes starting by 'LON'
amadeus.referenceData.locations.get({
keyword : 'LON',
subType : Amadeus.location.any
})
// Get a specific city or airport based on its id
amadeus.referenceData.location('ALHR').get()
// Aiport Nearest Relevant Airport
amadeus.referenceData.locations.airports.get({
longitude : 49.000,
latitude : 2.55
})
// Flight Cheapest Date Search
amadeus.shopping.flightDates.get({
origin : 'NYC',
destination : 'MAD'
})
// Flight Checkin Links
amadeus.referenceData.urls.checkinLinks.get({
airline : 'LH'
})
// Airline Code Lookup
amadeus.referenceData.airlines.get({
IATACode : 'LH'
})
// Flight Inspiration Search
amadeus.shopping.flightDestinations.get({
origin : 'MAD'
})
// Flight Low-fare Search
amadeus.shopping.flightOffers.get({
origin : 'NYC',
destination : 'MAD',
departureDate : '2019-08-01'
})
// Flight Most Searched Destinations
amadeus.travel.analytics.fareSearches.get({
origin : 'NCE',
sourceCountry : 'FR',
period : '2017-08'
})
// Flight Most Traveled Destinations
amadeus.travel.analytics.airTraffic.traveled.get({
origin : 'NCE',
period : '2017-08'
})
// Flight Most Booked Destinations
amadeus.travel.analytics.airTraffic.booked.get({
origin : 'LON',
period : '2016-05'
})
// Flight Busiest Traveling Period
amadeus.travel.analytics.airTraffic.busiestPeriod.get({
cityCode: 'PAR',
period: '2017',
direction: Amadeus.direction.arriving
})
// Hotel Search API
// List of Hotels by City Code
amadeus.shopping.hotelOffers.get({
cityCode : 'PAR'
})
// Get list of offers for a specific Hotel
amadeus.shopping.hotel('SMPARCOL').hotelOffers.get()
// Confirm the availability of a specific offer for a specific Hotel
amadeus.shopping.hotel('SMPARCOL').offer('4BA070BA10485322FA2C7E78C7852E').get()
Want to contribute? Read our Contributors Guide for guidance on installing and running this code in a development environment.
This library is released under the MIT License.
Our developer support team is here to help you. You can find us on StackOverflow and email.