|

|  How to Access Flight Data Using Amadeus API in JavaScript

How to Access Flight Data Using Amadeus API in JavaScript

October 31, 2024

Learn to access flight data with Amadeus API in JavaScript. This guide provides step-by-step instructions for integrating real-time flight info into your app.

How to Access Flight Data Using Amadeus API in JavaScript

 

Install Required Packages

 

  • Begin by installing the necessary library by using npm. Amadeus provides an official SDK for JavaScript, which simplifies integration with their API services.

 


npm install amadeus

 

Authorize with Amadeus API

 

  • Authentication is essential for accessing Amadeus APIs. Utilize the client credentials method to obtain a token. Replace `` and `` with your actual credentials.

 


const Amadeus = require('amadeus');

const amadeus = new Amadeus({
  clientId: '<API_KEY>',
  clientSecret: '<API_SECRET>'
});

 

Search for Flights

 

  • After setting up authentication, use the appropriate endpoint to search for flight offers. Adjust the parameters to fit your requirements, such as origin, destination, and departure dates.

 


amadeus.shopping.flightOffersSearch.get({
  originLocationCode: 'JFK',
  destinationLocationCode: 'LAX',
  departureDate: '2023-11-15',
  adults: 1
}).then(function(response){
  console.log(response.data);
}).catch(function(error){
  console.error(error);
});

 

Handle API Responses

 

  • Efficiently handle the responses provided by the API. Successful calls return data in JSON format, which can be parsed and processed based on application requirements.
  • Implement error handling mechanisms to gracefully manage common issues such as network errors, invalid requests, or quota limits.

 


amadeus.shopping.flightOffersSearch.get({
  originLocationCode: 'JFK',
  destinationLocationCode: 'LAX',
  departureDate: '2023-11-15',
  adults: 1
}).then(function(response) {
  const offers = response.data;
  offers.forEach(offer => {
    console.log(`Price: ${offer.price.total} ${offer.price.currency}`);
  });
}).catch(function(error) {
  console.error('Failed to fetch flight offers:', error);
});

 

Parse and Use Flight Data

 

  • Once you have the flight data, parse it to extract useful information such as flight number, airline, and price.
  • Use JavaScript's array and object manipulation methods to filter and display the results in your application or user interface.

 


function displayFlightOffers(offers){
  offers.forEach(offer=>{
    const flight = offer.itineraries[0].segments[0];
    console.log(`Flight from ${flight.departure.iataCode} to ${flight.arrival.iataCode}`);
    console.log(`Airline: ${flight.operating.carrierCode}`);
    console.log(`Price: ${offer.price.total} ${offer.price.currency}`);
  });
}

amadeus.shopping.flightOffersSearch.get({
  originLocationCode: 'JFK',
  destinationLocationCode: 'LAX',
  departureDate: '2023-11-15',
  adults: 1
}).then(function(response) {
  displayFlightOffers(response.data);
}).catch(function(error) {
  console.error('Error fetching flight offers:', error);
});

 

Implement Rate Limiting and Caching

 

  • Amadeus API has rate limits; ensure you implement mechanisms to respect these limits to avoid being blocked.
  • Consider implementing a caching layer using technologies like Redis or localStorage to store frequently accessed data, reducing the need for repetitive requests.

 


// Example using localStorage for simple caching

const cacheKey = 'flightOffersCache';
const cachedOffers = localStorage.getItem(cacheKey);

if (cachedOffers) {
  displayFlightOffers(JSON.parse(cachedOffers));
} else {
  amadeus.shopping.flightOffersSearch.get({
    originLocationCode: 'JFK',
    destinationLocationCode: 'LAX',
    departureDate: '2023-11-15',
    adults: 1
  }).then(function(response) {
    localStorage.setItem(cacheKey, JSON.stringify(response.data));
    displayFlightOffers(response.data);
  }).catch(function(error) {
    console.error('Error fetching flight offers:', error);
  });
}

 

Secure the Application

 

  • Store your API keys securely and avoid exposing them in your code, especially if running in a browser environment.
  • Consider using a backend proxy to handle requests to Amadeus, which keeps credentials secure server-side.

 


// Example of using environment variables with Node.js

const amadeus = new Amadeus({
  clientId: process.env.AMADEUS_API_KEY,
  clientSecret: process.env.AMADEUS_API_SECRET
});