Your cart is empty

Become a Partner

Alps2Alps as an Amitours group company since 2010 has developed into one of the biggest transportation service providers in Alpine region and has become known within the industry for quality and proffesional service for a surprisingly affordable price.

Become a partner and work with us - the industry leader providing excursions and airport transfer services for groups and individuals. Find out about the many services you can offer to your customers and benefit from the sales. Sign up using the form below and we will contact you within 2 working days.

We will set you up with an account, so you can make transfer bookings for your customers with us easily. You can benefit from reduced rates on our transfer services and earn a commission on your transfer bookings. Sign up to become a partner now!

 

Login

Don't have an account?

Sign Up

Integration Options

We can offer various integration options of booking to suit your needs.

One of these options fits you, if you run a website that has visitors who are interested in alpine sports or just travel to Alpine region, but who would like a transfer options to ski resort or airport. Then you can well place our link, banner or form Widget into your page to offer your visitors the chance to book transfers. For each booking you earn a commission on every sale made through your page.

You can choose API integration, if you have your own booking platform for your business. Use our API to integrate our booking engine into your own system and save time in the management and arrangement of your transfer bookings.

We offer a range of linking options for you to be able to sell transfers, as well as you can track every sale and earned commisions in your partner panel. After becoming a partner you will receive your own promo code and API key and access to your partner panel. Just choose from several integration options to use our booking engine.

If you would like more detailed information about benefits or integration, please, email us to info@alps2alps.com.


Your personal link contains you promo code, for example, https://www.alps2alps.com/?promo_code=your_promo_code.

You can share this link or post it in your own page. You will receive commission for every booking made through your link.


Banners

You can use your personal link with one of our banners or request a personal banner. Personal banner is made just for you and will fit perfectly with your webpage or social media page.

Below you can see examples of our banners:


Form Widget

You can use our form widget to insert Alps2Alps booking form straight into your website.

Insert the following code where you want the form to appear (exact location inside the <body> tag) and replace "your_promo_code" with your personal promo code.

<script src="https://www.alps2alps.com/js/widget.min.js" data-promo-code="your_promo_code"></script>

You can see example of the embeded widget below:


API

You can use our API to seamlessly integrate our booking engine into your own system.

Please find the API documentation below.


This API version is deprecated. You can still make API calls, but we encourage upgrading to latest version.
Production base URL: https://www.amitours.com/api
Development base URL: https://sandbox.amitours.com/api

To gain access to your demo account and development API key, go to your Profile > Integration and press the "Get Sandbox Access" button.
To gain access to live API, please contact sales@amitours.com.

POST /token Creates and returns an access token  

Method creates and returns an access token that needs to be used to make authorized API calls.
To make an authorized API call add Authorization: Bearer <token> header to your request.

Access token is valid for one day (24 hours) after creation.

INPUT

{
  "api_key": "your_api_key",
  "api_secret": "your_api_secret"
}

OUTPUT

{
  "token": "your_access_token",
  "created_at": "2024-10-06 20:21:13",
  "current_server_time": "2024-10-06 20:21:13"
}
🔑  GET /transfer/destinations Returns array of all transfer destinations  

Method returns array of all transfer destinations and corresponding route codes. Route codes should be used when creating a transfer and requesting offer selection.

This method requires authorization. Add Authorization: Bearer <token> header to your request.

OUTPUT

{
  "0": "--Airport or Resort--",
  "1": "--From-Airport--",
  "airport-15": "Annecy Meythet Airport",
  "airport-22": "Basel Airport",
  "airport-3": "Chambery Airport",
  "airport-18": "Freidrichshafen Airport",
  "airport-1": "Geneva Airport",
  "airport-2": "Grenoble Airport",
  "airport-25-w": "Turin Airport",
  "2": "",
  "3": "--From-City--",
  "city-36": "Chambery City"
}
🔑  GET /transfer/destinations/{route_code}[?html=1] Returns transfer destinations that are available based on provided route code  

Method returns either array or list containing HTML <option> tags for transfer destinations that are available based on provided route code.

By default this methods returns an array of transfer destinations. To return HTML code you should add the optional parameter html with value 1.
Returned HTML code is ready to be inserted inside <select> tag and is useful if you are updating your form using AJAX.

This method requires authorization. Add Authorization: Bearer <token> header to your request.

OUTPUT

Array

{
  "5": "--To-Resort--",
  "resort-184": "Brand bei Bludenz",
  "resort-185": "Dalaas \/ Wald ",
  "resort-182": "Gargellen",
  "resort-168": "Ischgl",
  "resort-187": "Kl\u00f6sterle am Arlberg",
  "resort-166": "Lech am Arlberg",
  "resort-179": "Serfaus - Fiss - Ladis",
  "resort-167": "St Anton am Arlberg",
  "resort-188": "St Gallenkirch ",
  "resort-194": "Z\u00fcrs am Arlberg",
  "8": "",
  "9": "--Other--",
  "other": "Other Address"
}

HTML

"--To-Resort--<\/option>Brand bei Bludenz<\/option>Dalaas \/ Wald <\/option>Gargellen<\/option>Ischgl<\/option>Kl\u00f6sterle am Arlberg\/ Kloesterle am Arlberg<\/option>Lech am Arlberg<\/option>Serfaus - Fiss - Ladis<\/option>St Anton am Arlberg<\/option>St Gallenkirch <\/option>Z\u00fcrs am Arlberg\/ Zuers am Arlberg<\/option><\/option>--Other--<\/option>Other Address<\/option>"
🔑  GET /price/route[/destination_code?since=1728246073] Returns base price list for routes  

Method returns an array of base prices based on passenger count for all routes or routes containing a specific destination based on provided destination code.

To return only latest base prices you should add the optional parameter since containing the Unix timestamp of the earliest time to check.

This method requires authorization. Add Authorization: Bearer <token> header to your request.

OUTPUT

{
  "airport-1": {
    "resort-1": [
      {
        "vehicle": "2",
        "pax_min": "1",
        "pax_max": "2",
        "price": "231"
      },
      {
        "vehicle": "3",
        "pax_min": "3",
        "pax_max": "3",
        "price": "248"
      }
    ],
    "resort-2": [
      {
        "vehicle": "2",
        "pax_min": "1",
        "pax_max": "2",
        "price": "277"
      },
      {
        "vehicle": "2",
        "pax_min": "3",
        "pax_max": "3",
        "price": "336"
      }
    ]
  },
  "airport-2": {
    "resort-2": [
      {
        "vehicle": "3",
        "pax_min": "1",
        "pax_max": "2",
        "price": "330"
      },
      {
        "vehicle": "10",
        "pax_min": "3",
        "pax_max": "3",
        "price": "385"
      }
    ]
  }
}
🔑  GET /price/route-markup[/destination_code?since=1728246073&page=1&page_size=1000&date=2024-10-20&vehicle=10] Returns active and upcoming markup rules list for routes  

Method returns an array of all active and upcoming markup rules list for all routes or routes containing a specific destination based on provided destination code.

Returned data is separated into pages and you should query each page by adding the optional parameter page. You can also change the page size by setting the optional parameter page_size, which has a default value of 1000.

To return only latest markup rules you should add the optional parameter since containing the Unix timestamp of the earliest time to check.

To return markup rules valid only for a certain date you should add the optional parameter date using format YYYY-MM-DD.

To return markup rules valid only for a certain vehicle type you should add the optional parameter vehicle containing the vehicle ID.

Please note that the returned values are subject to change and should only be used as a baseline when setting up webhook for pricing changes. To use price markup change webhook, please contact us.

Usage rules:

  • Weekdays are represented by numbers 1 through 7 and correspond to Monday through Sunday accordingly;
  • Level represents markup rule priority - if transfer time matches two rules, higher level rule must be applied;
  • Route direction matters - routes array keys represent departure point and each key contains a list of codes for the arrival point.

This method requires authorization. Add Authorization: Bearer <token> header to your request.

OUTPUT

{
  "pages": 67,
  "page": 1,
  "data": [
    {
      "weekday_from": "6",
      "weekday_to": "6",
      "vehicle": "2",
      "date_from": "2021-12-01",
      "date_to": "2021-12-13",
      "time_from": "00:00:00",
      "time_to": "05:00:00",
      "percentage": "70",
      "level": "1",
      "routes": {
        "airport-1": [
          "resort-1",
          "resort-2",
          "resort-3",
          "resort-4"
        ],
        "airport-2": [
          "resort-1",
          "resort-2",
          "resort-3"
        ]
      }
    },
    {
      "weekday_from": "6",
      "weekday_to": "6",
      "vehicle": "2",
      "date_from": "2021-12-01",
      "date_to": "2021-12-13",
      "time_from": "09:00:00",
      "time_to": "14:00:00",
      "percentage": "80",
      "level": "1",
      "routes": {
        "resort-1": [
          "airport-1",
          "train_station-11"
        ],
        "resort-2": [
          "airport-1",
          "airport-2",
          "airport-3"
        ]
      }
    }
  ]
}
🔑  GET /transfer/max-passenger-count[?from={route_code1}&to={route_code2}] Returns maximal passenger count  

Method returns maximal passenger count. If both route codes are provided, maximal passenger count for that specific route will be returned. If no parameters are present, default maximal passenger count will be returned.

This method requires authorization. Add Authorization: Bearer <token> header to your request.

OUTPUT

49

🔑  POST /transfer Creates transfer and returns transfer and available offer data  

Note that outbound and return datetime refers to date and time of arrival to and departure from airport, city or train station.

All prices are returned as EUR gross value.

This method requires authorization. Add Authorization: Bearer <token> header to your request.

INPUT

{
  "Transfer": {
    "is_return": "1",
    "route_from_code": "airport-38",
    "route_to_code": "resort-332",
    "return_route_to_code": "airport-41",
    "outbound_date": "2017-12-15",
    "outbound_time_hours": "3",
    "outbound_time_minutes": "0",
    "return_date": "2017-12-18",
    "return_time_hours": "21",
    "return_time_minutes": "15",
    "adult_count": "2",
    "children_count": "0",
    "return_adult_count": "2",
    "return_children_count": "0"
  },
  "AdditionalInformation": {
    "booster_seat_count": "0",
    "child_seat_count": "0",
    "ski_count": "0",
    "snowboard_count": "0",
    "return_booster_seat_count": "0",
    "return_child_seat_count": "0",
    "return_ski_count": "0",
    "return_snowboard_count": "0",
    "accommodation_name": "Hotel Name",
    "accommodation_address": "Hotel Address",
    "flight_number": "FL123",
    "return_flight_number": "FL321",
    "additional_information": ""
  }
}

OUTPUT

{
  "Transfer": {
    "id": 43,
    "TransferSelection": {
      "outbound": {
        "identifier": "A1",
        "from": "Bergamo airport (Milan Orio)",
        "to": "Alpe di Pampeago",
        "is_to_resort": 1,
        "flight_date_time": "2017-12-15 13:00:00",
        "requested": {
          "pick_up_date_time": "2017-12-15 13:00:00",
          "price": 186.2,
          "travel_time": "00:20:00",
          "arrival_date_time": "2017-12-15 13:20:00",
          "waiting_time": "",
          "vehicle_type_id": 2
        },
        "off_peak-0": {
          "pick_up_date_time": "2017-12-15 15:00:00",
          "price": 133,
          "travel_time": "00:20:00",
          "arrival_date_time": "2017-12-15 15:20:00",
          "waiting_time": "02:00:00",
          "vehicle_type_id": 2
        },
        "off_peak-1": {
          "pick_up_date_time": "2017-12-15 21:00:00",
          "price": 133,
          "travel_time": "00:20:00",
          "arrival_date_time": "2017-12-15 21:20:00",
          "waiting_time": "08:00:00",
          "vehicle_type_id": 2
        }
      },
      "return": {
        "from": "Alpe di Pampeago",
        "to": "Milano Linate airport",
        "is_to_resort": 0,
        "flight_date_time": "2017-12-17 21:20:00",
        "check_in_date_time": "2017-12-17 19:20:00",
        "requested": {
          "pick_up_date_time": "2017-12-17 19:00:00",
          "price": 133,
          "travel_time": "00:20:00",
          "arrival_date_time": "2017-12-17 19:20:00",
          "waiting_time": "",
          "vehicle_type_id": 2
        },
        "off_peak-0": {
          "pick_up_date_time": "2017-12-17 13:00:00",
          "price": 106.4,
          "travel_time": "00:20:00",
          "arrival_date_time": "2017-12-17 13:20:00",
          "waiting_time": "06:00:00",
          "vehicle_type_id": 2
        },
        "off_peak-1": {
          "pick_up_date_time": "2017-12-17 11:00:00",
          "price": 99.75,
          "travel_time": "00:20:00",
          "arrival_date_time": "2017-12-17 11:20:00",
          "waiting_time": "08:00:00",
          "vehicle_type_id": 2
        }
      }
    }
  }
}
🔑  GET /transfer/{id} Returns previously created transfer and available offer data  

This method requires authorization. Add Authorization: Bearer <token> header to your request.

OUTPUT

{
  "Transfer": {
    "id": 43,
    "TransferSelection": {
      "outbound": {
        "identifier": "A1",
        "from": "Bergamo airport (Milan Orio)",
        "to": "Alpe di Pampeago",
        "is_to_resort": 1,
        "flight_date_time": "2017-12-15 13:00:00",
        "requested": {
          "pick_up_date_time": "2017-12-15 13:00:00",
          "price": 186.2,
          "travel_time": "00:20:00",
          "arrival_date_time": "2017-12-15 13:20:00",
          "waiting_time": "",
          "vehicle_type_id": 2
        },
        "off_peak-0": {
          "pick_up_date_time": "2017-12-15 15:00:00",
          "price": 133,
          "travel_time": "00:20:00",
          "arrival_date_time": "2017-12-15 15:20:00",
          "waiting_time": "02:00:00",
          "vehicle_type_id": 2
        },
        "off_peak-1": {
          "pick_up_date_time": "2017-12-15 21:00:00",
          "price": 133,
          "travel_time": "00:20:00",
          "arrival_date_time": "2017-12-15 21:20:00",
          "waiting_time": "08:00:00",
          "vehicle_type_id": 2
        }
      },
      "return": {
        "from": "Alpe di Pampeago",
        "to": "Milano Linate airport",
        "is_to_resort": 0,
        "flight_date_time": "2017-12-17 21:20:00",
        "check_in_date_time": "2017-12-17 19:20:00",
        "requested": {
          "pick_up_date_time": "2017-12-17 19:00:00",
          "price": 133,
          "travel_time": "00:20:00",
          "arrival_date_time": "2017-12-17 19:20:00",
          "waiting_time": "",
          "vehicle_type_id": 2
        },
        "off_peak-0": {
          "pick_up_date_time": "2017-12-17 13:00:00",
          "price": 106.4,
          "travel_time": "00:20:00",
          "arrival_date_time": "2017-12-17 13:20:00",
          "waiting_time": "06:00:00",
          "vehicle_type_id": 2
        },
        "off_peak-1": {
          "pick_up_date_time": "2017-12-17 11:00:00",
          "price": 99.75,
          "travel_time": "00:20:00",
          "arrival_date_time": "2017-12-17 11:20:00",
          "waiting_time": "08:00:00",
          "vehicle_type_id": 2
        }
      }
    },
    "is_return": "1",
    "route_from_code": "airport-38",
    "route_to_code": "resort-332",
    "return_route_to_code": "airport-41",
    "outbound_date": "2017-12-15",
    "outbound_time_hours": "3",
    "outbound_time_minutes": "0",
    "return_date": "2017-12-18",
    "return_time_hours": "21",
    "return_time_minutes": "15",
    "adult_count": "2",
    "children_count": "0",
    "return_adult_count": "2",
    "return_children_count": "0"
  },
  "AdditionalInformation": {
    "booster_seat_count": "0",
    "child_seat_count": "0",
    "ski_count": "0",
    "snowboard_count": "0",
    "return_booster_seat_count": "0",
    "return_child_seat_count": "0",
    "return_ski_count": "0",
    "return_snowboard_count": "0",
    "accommodation_name": "Hotel Name",
    "accommodation_address": "Hotel Address",
    "flight_number": "FL123",
    "return_flight_number": "FL321",
    "additional_information": ""
  }
}
🔑  POST /booking Creates booking based on previously created transfer data  

Successful booking response data will contain booking reference and Base64 encoded PDF vouchers for each product, indexed by product references. You can set optional property return_vouchers to 0, if you do not wish to receive the vouchers in response data.

This method requires authorization. Add Authorization: Bearer <token> header to your request.

INPUT

{
  "Booking": {
    "transfer_id": 43,
    "return_vouchers": 1,
    "TransferSelection": {
      "outbound": "requested",
      "return": "off_peak-1",
      "is_manual_pick_up_time": 0,
      "manual_pick_up_time_hours": "",
      "manual_pick_up_time_minutes": ""
    },
    "Customer": {
      "name": "John",
      "last_name": "Smith",
      "email": "john.smith@domain.com",
      "country_code": "+371",
      "mobile_number": "324124698",
      "reference": ""
    }
  }
}

OUTPUT

{
  "Booking": {
    "reference": "AMI3453",
    "AMI3453-P1": ...
    "AMI3453-P2": "..."
  }
}

Production base URL: https://www.amitours.com/api/v2
Development base URL: https://sandbox.amitours.com/api/v2

Accepted Content-Type header values: application/json, application/x-www-form-urlencoded, multipart/form-data.

To gain access to your demo account and development API key, go to your Profile > Integration and press the "Get Sandbox Access" button.
To gain access to live API, please contact sales@amitours.com.

Main Workflow

POST /token Creates and/or returns an access token  

Method creates and returns an access token that needs to be used to make authorized API calls.
To make an authorized API call add Authorization: Bearer <token> header to your request.

Access token is valid for one day (24 hours) after creation.

EXAMPLE INPUT

{
  "api_key": "your_api_key",
  "api_secret": "your_api_secret"
}

EXAMPLE OUTPUT

{
  "token": "your_access_token",
  "created_at": 1728246073,
  "expires_at": 1728332473
}
🔑  GET /destinations Returns all transfer destinations  

Method returns all transfer destination names mapped by corresponding destination codes.

Destination codes must be used for fields route_from_code, route_to_code and return_route_to_code when creating a transfer request.

This method requires authorization. Add Authorization: Bearer <token> header to your request.

EXAMPLE OUTPUT

{
  "airport-15": "Annecy Meythet Airport",
  "airport-22": "Basel Airport",
  "airport-38": "Bergamo airport (Milan Orio)",
  "airport-3": "Chambery Airport",
  ...
  "resort-264": "Zillertal",
  "resort-435": "Zinal",
  "resort-204": "Zug, CH",
  "resort-200": "Zuoz",
  ...
}
🔑  POST /transfer Creates and returns transfer and available offer data  

All prices are returned in EUR.

If the requested transfer is invalid or not available for booking, the response will contain a single parameter - error.

Transfer attributes:

Attribute Required / Optional Default Value
type string optional private Transfer type.
is_return boolean optional 1 Indicator for whether the service is a round-trip.
route_from_code string required Pick-up destination code.
route_to_code string required Drop-off destination code.
return_route_to_code string optional route_from_code Drop-off destination code for return transfer of a round-trip service. Can be used to have a different return destination for a round-trip service.
outbound_date string required
outbound_time_hours integer required
outbound_time_minutes integer required
outbound_selected_time_is_flight boolean optional 1 Indicator for whether the selected time is a flight time (as opposed to actual requested pick-up time).
return_date string optional (required when is_return = 1)
return_time_hours integer optional (required when is_return = 1)
return_time_minutes integer optional (required when is_return = 1)
return_selected_time_is_flight boolean optional 1 Indicator for whether the selected time is a flight time (as opposed to actual requested pick-up time).
adult_count integer required 1
children_count integer optional 0
return_adult_count integer optional (required when is_return = 1) 1
return_children_count integer optional 0

All AdditionalInformation attributes are optional and have no default value:

booster_seat_count integer Child Booster Seat – Suitable for 19kg/42lbs – 36kg/79lbs and 125cm or taller (approx. 6-11yrs).
child_seat_count integer Child Seat – Suitable for 9kg/20lbs to 18kg/40lbs (approx. 1-5yrs)
ski_count integer
snowboard_count integer
return_booster_seat_count integer Child Booster Seat – Suitable for 19kg/42lbs – 36kg/79lbs and 125cm or taller (approx. 6-11yrs).
return_child_seat_count integer Child Seat – Suitable for 9kg/20lbs to 18kg/40lbs (approx. 1-5yrs)
return_ski_count integer
return_snowboard_count integer
accommodation_name string
accommodation_address string
accommodation_coordinates string Expected coordinate format is comma separated decimal degrees, for example, 46.341883, 11.539972
flight_number string
return_flight_number string
additional_information string

This method requires authorization. Add Authorization: Bearer <token> header to your request.

MINIMAL ONE-WAY EXAMPLE INPUT

{
  "Transfer": {
    "is_return": 0,
    "route_from_code": "airport-1",
    "route_to_code": "resort-22",
    "outbound_date": "2023-12-23",
    "outbound_time_hours": 11,
    "outbound_time_minutes": 5,
    "adult_count": 2
  },
  "AdditionalInformation": []
}

MINIMAL ROUND-TRIP EXAMPLE INPUT

{
  "Transfer": {
    "route_from_code": "airport-1",
    "route_to_code": "resort-22",
    "outbound_date": "2023-12-23",
    "outbound_time_hours": 11,
    "outbound_time_minutes": 5,
    "return_date": "2024-01-05",
    "return_time_hours": 21,
    "return_time_minutes": 0,
    "adult_count": 2,
    "return_adult_count": 2
  },
  "AdditionalInformation": []
}

Full Example

EXAMPLE INPUT

{
  "Transfer": {
    "is_return": 1,
    "route_from_code": "airport-1",
    "route_to_code": "resort-22",
    "return_route_to_code": "airport-3",
    "outbound_date": "2023-12-23",
    "outbound_time_hours": 11,
    "outbound_time_minutes": 5,
    "outbound_selected_time_is_flight": 1,
    "return_date": "2024-01-05",
    "return_time_hours": 21,
    "return_time_minutes": 0,
    "return_selected_time_is_flight": 1,
    "adult_count": 2,
    "children_count": 1,
    "return_adult_count": 2,
    "return_children_count": 1
  },
  "AdditionalInformation": {
    "booster_seat_count": 1,
    "child_seat_count": 0,
    "ski_count": 1,
    "snowboard_count": 0,
    "return_booster_seat_count": 1,
    "return_child_seat_count": 0,
    "return_ski_count": 1,
    "return_snowboard_count": 1,
    "accommodation_name": "Hotel Name",
    "accommodation_address": "Hotel Address",
    "accommodation_coordinates": "46.341883, 11.539972",
    "flight_number": "FL123",
    "return_flight_number": "FL321",
    "additional_information": ""
  }
}

EXAMPLE OUTPUT

{
  "Transfer": {
    "id": 123456,
    "type": "private",
    "discount_applied": 1,
    "TransferSelection": {
      "outbound": {
        "from": "Geneva Airport",
        "to": "Auris en Oisans Grandes Rousses",
        "flight_date_time": "2023-12-23 11:05:00",
        "selected_time_is_flight": 1,
        "offers": {
          "requested-2": {
            "pick_up_date_time": "2023-12-23 11:05:00",
            "price": 601.8,
            "travel_time": "03:50:00",
            "arrival_date_time": "2023-12-23 14:55:00",
            "waiting_time": "",
            "vehicle_type_id": 2
          },
          "off_peak-0-2": {
            "pick_up_date_time": "2023-12-23 14:00:00",
            "price": 559.3,
            "travel_time": "03:50:00",
            "arrival_date_time": "2023-12-23 17:50:00",
            "waiting_time": "02:55:00",
            "vehicle_type_id": 2
          },
          "off_peak-1-2": {
            "pick_up_date_time": "2023-12-23 13:00:00",
            "price": 529,
            "travel_time": "03:50:00",
            "arrival_date_time": "2023-12-23 16:50:00",
            "waiting_time": "03:55:00",
            "vehicle_type_id": 2
          },
          ...
          "requested-4": {
            "pick_up_date_time": "2023-12-23 11:05:00",
            "price": 1054,
            "travel_time": "03:50:00",
            "arrival_date_time": "2023-12-23 14:55:00",
            "waiting_time": "",
            "vehicle_type_id": 4
          }
        }
      },
      "return": {
        "from": "Auris en Oisans Grandes Rousses",
        "to": "Chambery Airport",
        "flight_date_time": "2024-01-05 21:00:00",
        "selected_time_is_flight": 1,
        "check_in_date_time": "2024-01-05 19:00:00",
        "offers": {
          "requested-2": {
            "pick_up_date_time": "2024-01-05 16:50:00",
            "price": 238.85,
            "travel_time": "02:10:00",
            "arrival_date_time": "2024-01-05 19:00:00",
            "waiting_time": "",
            "vehicle_type_id": 2
          },
          ...
          "requested-4": {
            "pick_up_date_time": "2024-01-05 16:50:00",
            "price": 534.65,
            "travel_time": "02:10:00",
            "arrival_date_time": "2024-01-05 19:00:00",
            "waiting_time": "",
            "vehicle_type_id": 4
          }
        }
      }
    }
  }
}
🔑  GET /transfer/{id} Returns previously created transfer request and available offer data  

Note that transfer request offers expire 24 hours after creation.

This method requires authorization. Add Authorization: Bearer <token> header to your request.

EXAMPLE OUTPUT

{
  "Transfer": {
    "id": 123456,
    "type": "private",
    "discount_applied": 1,
    "TransferSelection": {
      "outbound": {
        "from": "Geneva Airport",
        "to": "Auris en Oisans Grandes Rousses",
        "flight_date_time": "2023-12-23 11:05:00",
        "selected_time_is_flight": 1,
        "offers": {
          "requested-2": {
            "pick_up_date_time": "2023-12-23 11:05:00",
            "price": 601.8,
            "travel_time": "03:50:00",
            "arrival_date_time": "2023-12-23 14:55:00",
            "waiting_time": "",
            "vehicle_type_id": 2
          },
          "off_peak-0-2": {
            "pick_up_date_time": "2023-12-23 14:00:00",
            "price": 559.3,
            "travel_time": "03:50:00",
            "arrival_date_time": "2023-12-23 17:50:00",
            "waiting_time": "02:55:00",
            "vehicle_type_id": 2
          },
          "off_peak-1-2": {
            "pick_up_date_time": "2023-12-23 13:00:00",
            "price": 529,
            "travel_time": "03:50:00",
            "arrival_date_time": "2023-12-23 16:50:00",
            "waiting_time": "03:55:00",
            "vehicle_type_id": 2
          },
          ...
          "requested-4": {
            "pick_up_date_time": "2023-12-23 11:05:00",
            "price": 1054,
            "travel_time": "03:50:00",
            "arrival_date_time": "2023-12-23 14:55:00",
            "waiting_time": "",
            "vehicle_type_id": 4
          }
        }
      },
      "return": {
        "from": "Auris en Oisans Grandes Rousses",
        "to": "Chambery Airport",
        "flight_date_time": "2024-01-05 21:00:00",
        "selected_time_is_flight": 1,
        "check_in_date_time": "2024-01-05 19:00:00",
        "offers": {
          "requested-2": {
            "pick_up_date_time": "2024-01-05 16:50:00",
            "price": 238.85,
            "travel_time": "02:10:00",
            "arrival_date_time": "2024-01-05 19:00:00",
            "waiting_time": "",
            "vehicle_type_id": 2
          },
          ...
          "requested-4": {
            "pick_up_date_time": "2024-01-05 16:50:00",
            "price": 534.65,
            "travel_time": "02:10:00",
            "arrival_date_time": "2024-01-05 19:00:00",
            "waiting_time": "",
            "vehicle_type_id": 4
          }
        }
      }
    },
    "is_return": 1,
    "route_from_code": "airport-1",
    "route_to_code": "resort-22",
    "return_route_to_code": "airport-3",
    "outbound_date": "2023-12-23",
    "outbound_time_hours": 11,
    "outbound_time_minutes": 5,
    "outbound_selected_time_is_flight": 1,
    "return_date": "2024-01-05",
    "return_time_hours": 21,
    "return_time_minutes": 0,
    "return_selected_time_is_flight": 1,
    "adult_count": 2,
    "children_count": 1,
    "return_adult_count": 2,
    "return_children_count": 1
  },
  "AdditionalInformation": {
    "booster_seat_count": 1,
    "child_seat_count": 0,
    "ski_count": 1,
    "snowboard_count": 0,
    "return_booster_seat_count": 1,
    "return_child_seat_count": 0,
    "return_ski_count": 1,
    "return_snowboard_count": 1,
    "accommodation_name": "Hotel Name",
    "accommodation_address": "Hotel Address",
    "accommodation_coordinates": "46.341883, 11.539972",
    "flight_number": "FL123",
    "return_flight_number": "FL321",
    "additional_information": ""
  }
}
🔑  POST /booking Creates booking based on previously created transfer data  

Successful booking response data will contain booking reference and Base64 encoded PDF vouchers for each product, indexed by product references. You can set optional property return_vouchers to 0, if you do not wish to receive the vouchers in response data and decrease response time. Vouchers can be requested through the API at a later time and will also be delivered to your account's email address upon booking creation.

This method requires authorization. Add Authorization: Bearer <token> header to your request.

EXAMPLE INPUT

{
  "Booking": {
    "transfer_id": 123456,
    "return_vouchers": 1,
    "TransferSelection": {
      "outbound": "off_peak-0-2",
      "return": "requested-4"
    },
    "Customer": {
      "name": "John",
      "last_name": "Smith",
      "email": "john.smith@domain.com",
      "country_code": "+371",
      "mobile_number": "324124698",
      "reference": ""
    }
  }
}

EXAMPLE OUTPUT

{
  "Booking": {
    "reference": "AMI3453",
    "vouchers": {
      "AMI3453-P1": ...
      "AMI3453-P2": "..."
    }
  }
}
🔑  GET /booking/{reference} Returns previously created booking data  

This method requires authorization. Add Authorization: Bearer <token> header to your request.

EXAMPLE OUTPUT

{
  "Booking": {
    "reference": "AMI3453",
    "vouchers": {
      "AMI3453-P1": ...
      "AMI3453-P2": "..."
    }
  }
}

Resources

🔑  GET /destinations/{code} Returns transfer destinations from/to another destination  

Method returns transfer destination names mapped by corresponding destination codes that create a valid route with the destination based on the provided code.

This method requires authorization. Add Authorization: Bearer <token> header to your request.

EXAMPLE OUTPUT

{
  "resort-262": "Adelboden",
  "resort-226": "Bern",
  "resort-267": "Chateau d'Oex",
  "resort-229": "Chur",
  ...
}
🔑  GET /routes Returns all transfer routes  

Method returns an array of destination codes for each of destinations representing all valid routes.

This method requires authorization. Add Authorization: Bearer <token> header to your request.

EXAMPLE OUTPUT

{
  "airport-1": [
    "resort-1",
    "resort-2",
    ...
    "resort-499",
    "resort-500"
  ],
  ...
  "resort-418": [
    "airport-39",
    "airport-40",
    "airport-41"
  ],
  ...
}
🔑  GET /routes/{code_a}/{code_b} Returns route configuration  

Method returns route configuration.

Information provided by route configuration can be used to avoid sending transfer requests that are not available for online booking.

Following parameters will be returned:

max_passengers integer Largest allowed passenger count for a transfer booking.

This method requires authorization. Add Authorization: Bearer <token> header to your request.

EXAMPLE OUTPUT

{
  "max_passengers": 49
}
🔑  GET /vehicles Returns all vehicles  

Method returns a list of available vehicles mapped by corresponding IDs.

Each vehicle list object contains the following attributes:

id integer Used to indicate the vehicle in transfer offers in the field vehicle_type_id.
name string
description string
image_link string
max_passengers integer Maximum passenger count the vehicle can carry.
can_transport_skis boolean Indicator for whether the vehicle can fit and carry any ski equipment.

This method requires authorization. Add Authorization: Bearer <token> header to your request.

EXAMPLE OUTPUT

{
  "2": {
    "id": "2",
    "name": "Standard\/economy",
    "description": "VW Passat, Volvo V70, Pegueot 508 or similar vehicle",
    "image_link": "https:\/\/www.alps2alps.com\/img\/vehicles\/2.png",
    "max_passengers": "3",
    "can_transport_skis": "0"
  },
  ...
  "16": {
    "id": "16",
    "name": "49-seater bus",
    "description": "Mercedes, Scania, Volvo or similar",
    "image_link": "https:\/\/www.alps2alps.com\/img\/vehicles\/16.png",
    "max_passengers": "49",
    "can_transport_skis": "1"
  }
}

Additional Methods

🔑  POST /client-link Creates and returns a link to a filled in Alps2Alps booking form  

Transfer attributes:

Attribute Required / Optional Default Value
is_return boolean optional 1 Indicator for whether the service is a round-trip.
route_from_code string required Pick-up destination code.
route_to_code string required Drop-off destination code.
return_route_to_code string optional route_from_code Drop-off destination code for return transfer of a round-trip service. Can be used to have a different return destination for a round-trip service.
outbound_date string required
outbound_time_hours integer required
outbound_time_minutes integer required
outbound_selected_time_is_flight boolean optional 1 Indicator for whether the selected time is a flight time (as opposed to actual requested pick-up time).
return_date string optional (required when is_return = 1)
return_time_hours integer optional (required when is_return = 1)
return_time_minutes integer optional (required when is_return = 1)
return_selected_time_is_flight boolean optional 1 Indicator for whether the selected time is a flight time (as opposed to actual requested pick-up time).
adult_count integer required 1
children_count integer optional 0
return_adult_count integer optional (required when is_return = 1) 1
return_children_count integer optional 0

This method requires authorization. Add Authorization: Bearer <token> header to your request.

MINIMAL ONE-WAY EXAMPLE INPUT

{
  "Transfer": {
    "is_return": 0,
    "route_from_code": "airport-1",
    "route_to_code": "resort-22",
    "outbound_date": "2023-12-23",
    "outbound_time_hours": 11,
    "outbound_time_minutes": 5,
    "adult_count": 2
  }
}

MINIMAL ROUND-TRIP EXAMPLE INPUT

{
  "Transfer": {
    "route_from_code": "airport-1",
    "route_to_code": "resort-22",
    "outbound_date": "2023-12-23",
    "outbound_time_hours": 11,
    "outbound_time_minutes": 5,
    "return_date": "2024-01-05",
    "return_time_hours": 21,
    "return_time_minutes": 0,
    "adult_count": 2,
    "return_adult_count": 2
  }
}

Full Example

EXAMPLE INPUT

{
  "Transfer": {
    "is_return": 1,
    "route_from_code": "airport-1",
    "route_to_code": "resort-22",
    "return_route_to_code": "airport-3",
    "outbound_date": "2023-12-23",
    "outbound_time_hours": 11,
    "outbound_time_minutes": 5,
    "outbound_selected_time_is_flight": 1,
    "return_date": "2024-01-05",
    "return_time_hours": 21,
    "return_time_minutes": 0,
    "return_selected_time_is_flight": 1,
    "adult_count": 2,
    "children_count": 1,
    "return_adult_count": 2,
    "return_children_count": 1
  }
}

EXAMPLE OUTPUT

{
  "link": "https:\/\/www.alps2alps.com\/en\/booking\/b2b2c?key=abcdefghijklmnopqrstuvwxyz20231011150637"
}