Guides

Using Reservations API

Disclaimer:

All API’s are accessible through https://apigateway.ryanair.com

In this guide we are going to explain how to use Availability API and what data can you get from it.
Make sure you have your apikey - instructions on how to get it can be found here.

The API retrieves full availability for given route and time period. Let's have a look at its base URL:

  https://apigateway.ryanair.com/pub/v1/reservations/Availability

Now let's explain what query parameters it has:

Parameter
Optional
Type
Description
Example
Origin no string(length=3) Origin station IATA code &Origin=DUB
Destination no string(length=3) Destination station IATA code &Destination=STN
DateOut no date >= than today Outbound Date &DateOut=2015-02-15
DateIn yes date >= than today Inbound Date &DateIn=2015-02-15
FlexDaysOut yes int (min=0, max=6) Flexible days after Outbound, counting from DateOut onwards &FlexDaysOut=6
FlexDaysBeforeOut yes int (min=0, max=6) Flexible days before Outbound, counting from DateOut backwards &FlexDaysBeforeOut=6
FlexDaysIn yes int (min=0, max=6) Flexible days for Inbound, counting from DateIn onwards

&FlexDaysIn=6

FlexDaysBeforeIn yes int (min=0, max=6) Flexible days before Inbound, counting from DateIn backwards &FlexDaysBeforeIn=6
RoundTrip yes, defaults to false boolean Is roundtrip?  &RoundTrip=True
ADT yes, defaults to 1 int Number of Adults  &ADT=2
TEEN yes, defaults to 0 int Number of Teens  &TEEN=2
CHD yes, defaults to 0 int Number of Children  &CHD=2
ToUs no String Terms Of Service Agreement Confirmation &ToUs=AGREED

 

We would like to present to you an example usage of the endpoint. For this purpose let's continue with the last example described in Timetable API.
Our user is a man and he wants to organize a flight in May from Dublin to Wrocław for himself and his daughter. Hence let's sum up:

  • departure is on 1st of June, 2018
  • passenger is adult, second passenger is child
  • he wants to get back in 4-6 days

To fulfil the assumptions we need to set following parameters:

  • Origin=DUB
  • Destination=WRO
  • DateOut=2018-06-01
  • DateIn=2018-o6-05
  • ADT=1
  • CHD=1
  • RoundTrip=true
  • FlexDaysIn=2
  • ToUs=AGREED

Let's build up our request:

  curl – X GET "https://apigateway.ryanair.com/pub/v1/reservations/Availability?ADT=1&CHD=1&DateIn=2018-06-05&DateOut=2018-06-01&Destination=WRO&FlexDaysIn=2&Origin=DUB&RoundTrip=true&ToUs=AGREED&apikey={apikey}"

We get following result after running this command:

  {
    "termsOfUse": "https://www.ryanair.com/ie/en/corporate/terms-of-use=AGREED",
    "currency": "EUR",
    "currPrecision": 2,
    "trips": [
        {
            "origin": "DUB",
            "originName": "Dublin T1",
            "destination": "WRO",
            "destinationName": "Wroclaw",
            "dates": [
                {
                    "dateOut": "2018-06-01T00:00:00.000",
                    "flights": [
                        {
                            "flightNumber": "FR 1926",
                            "time": [
                                "2018-06-01T17:45:00.000",
                                "2018-06-01T21:20:00.000"
                            ],
                            "timeUTC": [
                                "2018-06-01T16:45:00.000Z",
                                "2018-06-01T19:20:00.000Z"
                            ],
                            "duration": "02:35",
                            "faresLeft": -1,
                            "flightKey": "FR~1926~ ~~DUB~06/01/2018 17:45~WRO~06/01/2018 21:20~",
                            "infantsLeft": 13,
                            "regularFare": {
                                "fareKey": "0~S~~SSPEC349~SSPC~~4~X",
                                "fareClass": "S",
                                "fares": [
                                    {
                                        "type": "ADT",
                                        "amount": 349.99,
                                        "count": 1,
                                        "hasDiscount": false,
                                        "publishedFare": 349.99,
                                        "mandatorySeatFee": {
                                            "vat": 0,
                                            "amt": 4,
                                            "total": 4,
                                            "code": "SETA",
                                            "qty": 1
                                        },
                                        "discountInPercent": 0,
                                        "hasPromoDiscount": false
                                    },
                                    {
                                        "type": "CHD",
                                        "amount": 349.99,
                                        "count": 1,
                                        "hasDiscount": false,
                                        "publishedFare": 349.99,
                                        "discountInPercent": 0,
                                        "hasPromoDiscount": false
                                    }
                                ]
                            },
                            "businessFare": {
                                "fareKey": "0~S~~S10LBUS~BS10~~1~X",
                                "fareClass": "S",
                                "fares": [
                                    {
                                        "type": "ADT",
                                        "amount": 340.99,
                                        "count": 1,
                                        "hasDiscount": false,
                                        "publishedFare": 340.99,
                                        "discountInPercent": 0,
                                        "hasPromoDiscount": false
                                    },
                                    {
                                        "type": "CHD",
                                        "amount": 340.99,
                                        "count": 1,
                                        "hasDiscount": false,
                                        "publishedFare": 340.99,
                                        "discountInPercent": 0,
                                        "hasPromoDiscount": false
                                    }
                                ]
                            },
                            "leisureFare": {
                                "fareKey": "0~S~~S10LLSR~BL10~~1~X",
                                "fareClass": "S",
                                "fares": [
                                    {
                                        "type": "ADT",
                                        "amount": 299.99,
                                        "count": 1,
                                        "hasDiscount": false,
                                        "publishedFare": 299.99,
                                        "discountInPercent": 0,
                                        "hasPromoDiscount": false
                                    },
                                    {
                                        "type": "CHD",
                                        "amount": 299.99,
                                        "count": 1,
                                        "hasDiscount": false,
                                        "publishedFare": 299.99,
                                        "discountInPercent": 0,
                                        "hasPromoDiscount": false
                                    }
                                ]
                            }
                        }
                    ]
                }
            ]
        },
        {
            "origin": "WRO",
            "originName": "Dublin T1",
            "destination": "DUB",
            "destinationName": "Wroclaw",
            "dates": [
                {
                    "dateOut": "2018-06-05T00:00:00.000",
                    "flights": []
                },
                {
                    "dateOut": "2018-06-06T00:00:00.000",
                    "flights": [
                        {
                            "flightNumber": "FR 1927",
                            "time": [
                                "2018-06-06T21:50:00.000",
                                "2018-06-06T23:30:00.000"
                            ],
                            "timeUTC": [
                                "2018-06-06T19:50:00.000Z",
                                "2018-06-06T22:30:00.000Z"
                            ],
                            "duration": "02:40",
                            "faresLeft": 4,
                            "flightKey": "FR~1927~ ~~WRO~06/06/2018 21:50~DUB~06/06/2018 23:30~",
                            "infantsLeft": 15,
                            "regularFare": {
                                "fareKey": "0~H~~HLDISZP~ZZZP~~1~X",
                                "fareClass": "H",
                                "fares": [
                                    {
                                        "type": "ADT",
                                        "amount": 50.48,
                                        "count": 1,
                                        "hasDiscount": true,
                                        "publishedFare": 56.09,
                                        "mandatorySeatFee": {
                                            "vat": 0,
                                            "amt": 4,
                                            "total": 4,
                                            "code": "SETA",
                                            "qty": 1
                                        },
                                        "discountInPercent": 10,
                                        "hasPromoDiscount": false
                                    },
                                    {
                                        "type": "CHD",
                                        "amount": 50.48,
                                        "count": 1,
                                        "hasDiscount": true,
                                        "publishedFare": 56.09,
                                        "discountInPercent": 10,
                                        "hasPromoDiscount": false
                                    }
                                ]
                            },
                            "businessFare": {
                                "fareKey": "0~H~~H10LBUS~BS10~~1~X",
                                "fareClass": "H",
                                "fares": [
                                    {
                                        "type": "ADT",
                                        "amount": 134.99,
                                        "count": 1,
                                        "hasDiscount": false,
                                        "publishedFare": 134.99,
                                        "discountInPercent": 0,
                                        "hasPromoDiscount": false
                                    },
                                    {
                                        "type": "CHD",
                                        "amount": 134.99,
                                        "count": 1,
                                        "hasDiscount": false,
                                        "publishedFare": 134.99,
                                        "discountInPercent": 0,
                                        "hasPromoDiscount": false
                                    }
                                ]
                            },
                            "leisureFare": {
                                "fareKey": "0~H~~H10LLSR~BL10~~1~X",
                                "fareClass": "H",
                                "fares": [
                                    {
                                        "type": "ADT",
                                        "amount": 93.99,
                                        "count": 1,
                                        "hasDiscount": false,
                                        "publishedFare": 93.99,
                                        "discountInPercent": 0,
                                        "hasPromoDiscount": false
                                    },
                                    {
                                        "type": "CHD",
                                        "amount": 93.99,
                                        "count": 1,
                                        "hasDiscount": false,
                                        "publishedFare": 93.99,
                                        "discountInPercent": 0,
                                        "hasPromoDiscount": false
                                    }
                                ]
                            }
                        }
                    ]
                },
                {
                    "dateOut": "2018-06-07T00:00:00.000",
                    "flights": [
                        {
                            "flightNumber": "FR 1927",
                            "time": [
                                "2018-06-07T17:25:00.000",
                                "2018-06-07T19:05:00.000"
                            ],
                            "timeUTC": [
                                "2018-06-07T15:25:00.000Z",
                                "2018-06-07T18:05:00.000Z"
                            ],
                            "duration": "02:40",
                            "faresLeft": 4,
                            "flightKey": "FR~1927~ ~~WRO~06/07/2018 17:25~DUB~06/07/2018 19:05~",
                            "infantsLeft": 16,
                            "regularFare": {
                                "fareKey": "0~H~~HLDISZP~ZZZP~~1~X",
                                "fareClass": "H",
                                "fares": [
                                    {
                                        "type": "ADT",
                                        "amount": 50.48,
                                        "count": 1,
                                        "hasDiscount": true,
                                        "publishedFare": 56.09,
                                        "mandatorySeatFee": {
                                            "vat": 0,
                                            "amt": 4,
                                            "total": 4,
                                            "code": "SETA",
                                            "qty": 1
                                        },
                                        "discountInPercent": 10,
                                        "hasPromoDiscount": false
                                    },
                                    {
                                        "type": "CHD",
                                        "amount": 50.48,
                                        "count": 1,
                                        "hasDiscount": true,
                                        "publishedFare": 56.09,
                                        "discountInPercent": 10,
                                        "hasPromoDiscount": false
                                    }
                                ]
                            },
                            "businessFare": {
                                "fareKey": "0~H~~H10LBUS~BS10~~1~X",
                                "fareClass": "H",
                                "fares": [
                                    {
                                        "type": "ADT",
                                        "amount": 134.99,
                                        "count": 1,
                                        "hasDiscount": false,
                                        "publishedFare": 134.99,
                                        "discountInPercent": 0,
                                        "hasPromoDiscount": false
                                    },
                                    {
                                        "type": "CHD",
                                        "amount": 134.99,
                                        "count": 1,
                                        "hasDiscount": false,
                                        "publishedFare": 134.99,
                                        "discountInPercent": 0,
                                        "hasPromoDiscount": false
                                    }
                                ]
                            },
                            "leisureFare": {
                                "fareKey": "0~H~~H10LLSR~BL10~~1~X",
                                "fareClass": "H",
                                "fares": [
                                    {
                                        "type": "ADT",
                                        "amount": 93.99,
                                        "count": 1,
                                        "hasDiscount": false,
                                        "publishedFare": 93.99,
                                        "discountInPercent": 0,
                                        "hasPromoDiscount": false
                                    },
                                    {
                                        "type": "CHD",
                                        "amount": 93.99,
                                        "count": 1,
                                        "hasDiscount": false,
                                        "publishedFare": 93.99,
                                        "discountInPercent": 0,
                                        "hasPromoDiscount": false
                                    }
                                ]
                            }
                        }
                    ]
                }
            ]
        }
    ],
    "serverTimeUTC": "2018-05-10T17:16:51.138Z"
}

The response looks a little bit too big to digest it in one piece, let's cut it in to two data chunks - outbound flight and inbound flights. 

Outbound flight:

   {
      "origin": "DUB",
      "originName": "Dublin T1",
      "destination": "WRO",
      "destinationName": "Wroclaw",
      "dates": [
        {
          "dateOut": "2018-06-01T00:00:00.000",
          "flights": [
            {
              "flightNumber": "FR 1926",
              "time": [
                "2018-06-01T17:45:00.000",
                "2018-06-01T21:20:00.000"
              ],
              "timeUTC": [
                "2018-06-01T16:45:00.000Z",
                "2018-06-01T19:20:00.000Z"
              ],
              "duration": "02:35",
              "faresLeft": -1,
              "flightKey": "FR~1926~ ~~DUB~06/01/2018 17:45~WRO~06/01/2018 21:20~",
              "infantsLeft": 13,
              "regularFare": {
                "fareKey": "0~S~~SSPEC349~SSPC~~4~X",
                "fareClass": "S",
                "fares": [
                  {
                    "type": "ADT",
                    "amount": 349.99,
                    "count": 1,
                    "hasDiscount": false,
                    "publishedFare": 349.99,
                    "mandatorySeatFee": {
                      "vat": 0,
                      "amt": 4,
                      "total": 4,
                      "code": "SETA",
                      "qty": 1
                    },
                    "discountInPercent": 0,
                    "hasPromoDiscount": false
                  },
                  {
                    "type": "CHD",
                    "amount": 349.99,
                    "count": 1,
                    "hasDiscount": false,
                    "publishedFare": 349.99,
                    "discountInPercent": 0,
                    "hasPromoDiscount": false
                  }
                ]
              },
              "businessFare": {
                "fareKey": "0~S~~S10LBUS~BS10~~1~X",
                "fareClass": "S",
                "fares": [
                  {
                    "type": "ADT",
                    "amount": 340.99,
                    "count": 1,
                    "hasDiscount": false,
                    "publishedFare": 340.99,
                    "discountInPercent": 0,
                    "hasPromoDiscount": false
                  },
                  {
                    "type": "CHD",
                    "amount": 340.99,
                    "count": 1,
                    "hasDiscount": false,
                    "publishedFare": 340.99,
                    "discountInPercent": 0,
                    "hasPromoDiscount": false
                  }
                ]
              },
              "leisureFare": {
                "fareKey": "0~S~~S10LLSR~BL10~~1~X",
                "fareClass": "S",
                "fares": [
                  {
                    "type": "ADT",
                    "amount": 299.99,
                    "count": 1,
                    "hasDiscount": false,
                    "publishedFare": 299.99,
                    "discountInPercent": 0,
                    "hasPromoDiscount": false
                  },
                  {
                    "type": "CHD",
                    "amount": 299.99,
                    "count": 1,
                    "hasDiscount": false,
                    "publishedFare": 299.99,
                    "discountInPercent": 0,
                    "hasPromoDiscount": false
                  }
                ]
              }
            }
          ]
        }
      ]
    }

To analyze available flights we should look in JSON property flights. There is only one flight available - that's because we set DateOut parameter and didn't set any flexibility for this outbound flight. Inside this property we see a bunch of other important flight details:

  • departure is at 9:45, 1st of June, 2018
  • flight number is FR 1926
  • flight duration is 2:35h
  • fares for regular ticket for adult and child (in ohter queries there might be also business and laisure fares)

Now, let's have a look at second piece:

   {
      "origin": "WRO",
      "originName": "Dublin T1",
      "destination": "DUB",
      "destinationName": "Wroclaw",
      "dates": [
        {
          "dateOut": "2018-06-05T00:00:00.000",
          "flights": []
        },
        {
          "dateOut": "2018-06-06T00:00:00.000",
          "flights": [
            {
              "flightNumber": "FR 1927",
              "time": [
                "2018-06-06T21:50:00.000",
                "2018-06-06T23:30:00.000"
              ],
              "timeUTC": [
                "2018-06-06T19:50:00.000Z",
                "2018-06-06T22:30:00.000Z"
              ],
              "duration": "02:40",
              "faresLeft": 4,
              "flightKey": "FR~1927~ ~~WRO~06/06/2018 21:50~DUB~06/06/2018 23:30~",
              "infantsLeft": 15,
              "regularFare": {
                "fareKey": "0~H~~HLDISZP~ZZZP~~1~X",
                "fareClass": "H",
                "fares": [
                  {
                    "type": "ADT",
                    "amount": 50.48,
                    "count": 1,
                    "hasDiscount": true,
                    "publishedFare": 56.09,
                    "mandatorySeatFee": {
                      "vat": 0,
                      "amt": 4,
                      "total": 4,
                      "code": "SETA",
                      "qty": 1
                    },
                    "discountInPercent": 10,
                    "hasPromoDiscount": false
                  },
                  {
                    "type": "CHD",
                    "amount": 50.48,
                    "count": 1,
                    "hasDiscount": true,
                    "publishedFare": 56.09,
                    "discountInPercent": 10,
                    "hasPromoDiscount": false
                  }
                ]
              },
              "businessFare": {
                "fareKey": "0~H~~H10LBUS~BS10~~1~X",
                "fareClass": "H",
                "fares": [
                  {
                    "type": "ADT",
                    "amount": 134.99,
                    "count": 1,
                    "hasDiscount": false,
                    "publishedFare": 134.99,
                    "discountInPercent": 0,
                    "hasPromoDiscount": false
                  },
                  {
                    "type": "CHD",
                    "amount": 134.99,
                    "count": 1,
                    "hasDiscount": false,
                    "publishedFare": 134.99,
                    "discountInPercent": 0,
                    "hasPromoDiscount": false
                  }
                ]
              },
              "leisureFare": {
                "fareKey": "0~H~~H10LLSR~BL10~~1~X",
                "fareClass": "H",
                "fares": [
                  {
                    "type": "ADT",
                    "amount": 93.99,
                    "count": 1,
                    "hasDiscount": false,
                    "publishedFare": 93.99,
                    "discountInPercent": 0,
                    "hasPromoDiscount": false
                  },
                  {
                    "type": "CHD",
                    "amount": 93.99,
                    "count": 1,
                    "hasDiscount": false,
                    "publishedFare": 93.99,
                    "discountInPercent": 0,
                    "hasPromoDiscount": false
                  }
                ]
              }
            }
          ]
        },
        {
          "dateOut": "2018-06-07T00:00:00.000",
          "flights": [
            {
              "flightNumber": "FR 1927",
              "time": [
                "2018-06-07T17:25:00.000",
                "2018-06-07T19:05:00.000"
              ],
              "timeUTC": [
                "2018-06-07T15:25:00.000Z",
                "2018-06-07T18:05:00.000Z"
              ],
              "duration": "02:40",
              "faresLeft": 4,
              "flightKey": "FR~1927~ ~~WRO~06/07/2018 17:25~DUB~06/07/2018 19:05~",
              "infantsLeft": 16,
              "regularFare": {
                "fareKey": "0~H~~HLDISZP~ZZZP~~1~X",
                "fareClass": "H",
                "fares": [
                  {
                    "type": "ADT",
                    "amount": 50.48,
                    "count": 1,
                    "hasDiscount": true,
                    "publishedFare": 56.09,
                    "mandatorySeatFee": {
                      "vat": 0,
                      "amt": 4,
                      "total": 4,
                      "code": "SETA",
                      "qty": 1
                    },
                    "discountInPercent": 10,
                    "hasPromoDiscount": false
                  },
                  {
                    "type": "CHD",
                    "amount": 50.48,
                    "count": 1,
                    "hasDiscount": true,
                    "publishedFare": 56.09,
                    "discountInPercent": 10,
                    "hasPromoDiscount": false
                  }
                ]
              },
              "businessFare": {
                "fareKey": "0~H~~H10LBUS~BS10~~1~X",
                "fareClass": "H",
                "fares": [
                  {
                    "type": "ADT",
                    "amount": 134.99,
                    "count": 1,
                    "hasDiscount": false,
                    "publishedFare": 134.99,
                    "discountInPercent": 0,
                    "hasPromoDiscount": false
                  },
                  {
                    "type": "CHD",
                    "amount": 134.99,
                    "count": 1,
                    "hasDiscount": false,
                    "publishedFare": 134.99,
                    "discountInPercent": 0,
                    "hasPromoDiscount": false
                  }
                ]
              },
              "leisureFare": {
                "fareKey": "0~H~~H10LLSR~BL10~~1~X",
                "fareClass": "H",
                "fares": [
                  {
                    "type": "ADT",
                    "amount": 93.99,
                    "count": 1,
                    "hasDiscount": false,
                    "publishedFare": 93.99,
                    "discountInPercent": 0,
                    "hasPromoDiscount": false
                  },
                  {
                    "type": "CHD",
                    "amount": 93.99,
                    "count": 1,
                    "hasDiscount": false,
                    "publishedFare": 93.99,
                    "discountInPercent": 0,
                    "hasPromoDiscount": false
                  }
                ]
              }
            }
          ]
        }
      ]
    }

What we get from second piece is basically the same type of information as in first one. One difference is the number of proposed flights. The reason for that is the FlexDaysIn parameter - we set that to 2 which means we wanted to get possible flights for two next days as well.