# Getting Passes

Once you have the `Availability` the user is interested in, you can then fetch a list of `Pass`es that are available for the given `Product` and `Availability` (and optionally a `BookingOption`).  An example of a `Pass` might be "Adult" or "Child" passes that correspond to a tour. Passes may have different prices.

{% tabs %}
{% tab title="iOS" %}

```swift
Traveler.fetchPasses(product: catalogItem, 
                availability: selectedAvailability,
                      option: nil) { (passes, error) in
                      
}
```

Alternatively you can use the delegate pattern

```swift
Traveler.fetchPasses(product: catalogItem, 
                availability: selectedAvailability,
                      option: nil,
                    delegate: self)
```

```swift
extension MyViewController: PassFetchDelegate {
    func passFetchDidSucceedWith(_ result: [Pass]) {
    
    }
    
    func passFetchDidFailWith(_ error: Error) {
    
    }
}
```

{% endtab %}

{% tab title="Android" %}

```java
Traveler.fetchPasses(catalogItemDetail, availability, null, new FetchPassesCallback() {
    @Override
    void onSuccess(List<Pass> pass) {
    
    }
    
    @Override
    void onError(Error error) {
    
    }
});
```

{% endtab %}
{% endtabs %}
