Finding Rail Passes

Rail passes offer flexible travel across Europe. Instead of booking specific train tickets, passengers buy a pass that allows travel on multiple days within a validity period. Suited for multi-city trips or flexible itineraries.

What are Rail Passes?

Rail passes are flexible travel products that let passengers travel on multiple days within a set period. Popular examples include:

  • Interrail/Eurail Global Pass: Travel across 33 European countries
  • Interrail/Eurail One Country Passes: Travel within a single country

Passes work well when:

  • Travelers want flexibility (not locked to specific trains)
  • Planning multi-city trips
  • Traveling extensively over several days or weeks

For single, fixed journeys, regular tickets are usually better. See Finding Journeys for ticket booking.

Understanding Pass Bundles

The API returns passes as bundles (PassBundle), which are optimized combinations of passes for your passengers. The API automatically finds the cheapest combination that covers everyone.

The API considers passenger ages, nationalities, and countries of residence to find the best deals.

Pass optimization

The API finds the cheapest combination of passes automatically. Including passenger nationality and countryResidence helps the API determine which passes are available (some passes are only for residents of certain countries).

Getting Pass Bundles

Use the getPassBundles query to find available passes for your passengers:

Example: Get all available passes
graphql
query GetInterrailBundles {
  getPassBundles(passengers: [{ type: ADULT }, { type: YOUTH, age: 9 }]) {
    id
    class
    product
    price {
      amount
      currency
    }
    travelDayCount
    validityPeriod
  }
}
query GetInterrailBundles {
  getPassBundles(passengers: [{ type: ADULT }, { type: YOUTH, age: 9 }]) {
    id
    class
    product
    price {
      amount
      currency
    }
    travelDayCount
    validityPeriod
  }
}

Filtering Pass Results

If you're looking for specific types of passes, use filters to narrow results:

Filter by Product

Filter by pass product type (e.g., Interrail Global Pass, Eurail One Country Pass):

Example: Get only Interrail Global Passes
graphql
query GetInterrailBundles {
  getPassBundles(
    passengers: [{ type: ADULT }]
    filter: { product: "interrail-global-pass" }
  ) {
    id
    class
    product
    price {
      amount
      currency
    }
    travelDayCount
    validityPeriod
  }
}
query GetInterrailBundles {
  getPassBundles(
    passengers: [{ type: ADULT }]
    filter: { product: "interrail-global-pass" }
  ) {
    id
    class
    product
    price {
      amount
      currency
    }
    travelDayCount
    validityPeriod
  }
}

Filter by Class

Filter by travel class (first class or second class):

Example: Get only first class passes
graphql
query GetInterrailBundles {
  getPassBundles(passengers: [{ type: ADULT }], filter: { class: "1stclass" }) {
    id
    class
    product
    price {
      amount
      currency
    }
    travelDayCount
    validityPeriod
  }
}
query GetInterrailBundles {
  getPassBundles(passengers: [{ type: ADULT }], filter: { class: "1stclass" }) {
    id
    class
    product
    price {
      amount
      currency
    }
    travelDayCount
    validityPeriod
  }
}

Filter by Campaign

Pass providers occasionally run promotional campaigns (e.g., Black Friday sales). By default, only non-campaign passes are returned. To include campaign passes, specify the campaign code:

Campaign conditions

Campaign passes often have specific conditions (refundability, validity periods, etc.). Check the pass details before selling campaign passes to ensure you understand the terms.

Example: Get Black Friday campaign passes
graphql
query GetInterrailBundles {
  getPassBundles(
    passengers: [{ type: ADULT }]
    filter: { campaignCode: "black-friday", product: "interrail-global-pass" }
  ) {
    id
    class
    product
    price {
      amount
      currency
    }
    travelDayCount
    validityPeriod
  }
}
query GetInterrailBundles {
  getPassBundles(
    passengers: [{ type: ADULT }]
    filter: { campaignCode: "black-friday", product: "interrail-global-pass" }
  ) {
    id
    class
    product
    price {
      amount
      currency
    }
    travelDayCount
    validityPeriod
  }
}

Comparing Passes to Tickets

A common question: should travelers buy a pass or individual tickets? The API can help answer this.

Use getPassBundlesForJourneyOffer to find passes that work for a specific journey. The API ensures:

  • Passes are valid in all countries traveled through
  • Passes have enough travel days for the journey
  • Passes match the passenger requirements

This lets you show travelers both options and help them choose:

Example: Compare passes to tickets for a journey
graphql
query GetApplicablePassBundles {
  getPassBundlesForJourneyOffer(
    journeyOffer: "61452363-c759-4257-9c47-af536ee77f05"
    passengers: [{ type: ADULT }]
  ) {
    id
    class
    product
    price {
      amount
      currency
    }
    travelDayCount
    validityPeriod
  }
}
query GetApplicablePassBundles {
  getPassBundlesForJourneyOffer(
    journeyOffer: "418c2b62-da74-4ae6-91d5-4008c32b55d2"
    passengers: [{ type: ADULT }]
  ) {
    id
    class
    product
    price {
      amount
      currency
    }
    travelDayCount
    validityPeriod
  }
}

Compare the pass price to the ticket price to help travelers decide. Passes are usually better for multi-city trips, while tickets are better for single journeys.

Using the Rail Pass List Embed

For a ready-made user interface, consider using the Rail Pass List Embed. The embed provides a fully responsive list of rail passes that can be added to any website without any programming. You can configure which passes to show and users can select one of the passes to complete the purchase.

html
<aa-passbundle-list
  publicApiKey="my-api-key"
  product="interrail-global-pass"
  currency="EUR"></aa-passbundle-list>
<aa-passbundle-list
  publicApiKey="my-api-key"
  product="interrail-global-pass"
  currency="EUR"></aa-passbundle-list>

Next Steps

Once you've found a pass bundle, see Booking Rail Passes to complete the purchase.