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.

Production base URL: https://www.alps2alps.com/b2b/api
Development base URL: https://test.alps2alps.com/b2b/api

To gain access to your demo account and development API key, 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": "2023-09-24 16:01:07",
  "current_server_time": "2023-09-24 16:01:07"
}
🔑  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=1695571267] 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=1695571267&page=1&page_size=1000] 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.

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": "..."
  }
}