This endpoint will poll Karhoo’s quote engine continuously and return a list of quotes related to the QuoteSearch provided. Quotes will expire after 300 seconds. The SDK handles this for you and will refresh the quote search before the expiry time.

quotes(quotesSearch: QuotesSearch) : PollCall<Quotes>

The QuoteSearch model takes an optional ‘scheduledDate’. If scheduledDate is nil, the QuoteService will look for ASAP quotes. These quotes will contain a quoted time of arrival (QTA) estimate and are for users that require a vehicle as soon as possible. Providing a scheduledDate will return prebook quotes for that date.


  • quoteSearch: QuoteSearch


  • PollCall<Quotes>


K3001 Could not get estimates
K3002 Could not get estimates (no availability found within requested area)
K3003 Could not get estimates (could not find specified quote)



let quoteService = Karhoo.getQuotesService()

// create request
let quoteSearch = QuoteSearch(origin: originLocationDetails,
                              destination: destinationLocationDetails, 
                              dateScheduled: scheduledDate)

// create observer
let quoteSearchObserver = Observer<Quotes> { [weak self] result in
    switch result {
        case .success(let quotes):
            print("Quotes: \(quotes.all)")
        case .failure(let error):
            // handle error (KarhooError)

// create observable
let quotesObservable = quotesService.quotes(quoteSearch: quoteSearch).observable()

// subscribe observer to observable
quotesObservable.subscribe(observer: quoteSearchObserver)

// unsubscribe observer from observable when finished
quotesObservable.unsubscribe(observer: quoteSearchObserver)


// Create observer 
val observer = object : Observer<Resource<QuoteList>> {
    override fun onValueChanged(value: Resource<QuoteList>) {
        when (value) {
            is Resource.Success -> updateVehicles(value.data)
            is Resource.Failure -> handleAvailabilityError(value.error)

// Create request
val quotesSearch = QuotesSearch(origin: LocationInfo,
                destination: LocationInfo,
                date: Date?)

// Poll for quotes
val quotesObservable = quotesService
   .apply { subscribe(observer) }

//unsubscribe when done