0
votes

I am querying the Uber API endpoint using requests v1.2. (https://api.uber.com/v1.2/requests/estimate)

I am seeing some weird behavior, where UberPool rides returned have more expensive fares than UberX rides. In my personal experience, it is always the reverse in the app... I've checked and double-checked my product ids, etc.

Below is just one example query which returns UberPool estimates that are more expensive than UberX. From what I can tell, it consistently seems to happen for longer distance trips (which still doesn't match what I always see in the Uber app of cheaper UberPool than UberX):

POOL

{'fare': {'breakdown': [{'name': 'Promotion',
                         'type': 'promotion',
                         'value': -4.0},
                        {'name': 'Base Fare',
                         'type': 'base_fare',
                         'value': 64.01}],
          'currency_code': 'USD',
          'display': '$60.01',
          'expires_at': 1543621842,
          'fare_id': '3383930c3076db034e70d03623fa2938e92276e5c47d668f8092c0286c298928',
          'value': 60.01},
 'pickup_estimate': 5,
 'trip': {'distance_estimate': 29.76,
          'distance_unit': 'mile',
          'duration_estimate': 3300}}

This was generated using the v1.2 endpoint and query data parameters of:

data = '{\n       "product_id": "26546650-e557-4a7b-86e7-6a3942445247",\n      "start_latitude": "37.9779776",\n       "start_longitude": "-122.0310733",\n       "end_latitude": "37.7941378",\n       "end_longitude": "-122.4077914"\n     }'

UBERX

{'fare': {'breakdown': [{'name': 'Promotion',
                         'type': 'promotion',
                         'value': -4.0},
                        {'name': 'Base Fare',
                         'type': 'base_fare',
                         'value': 47.36}],
          'currency_code': 'USD',
          'display': '$43.36',
          'expires_at': 1543621878,
          'fare_id': '24098c789d23e5e4c961e268963269ea3313654acc41555b73ef232e6b4219b9',
          'value': 43.36},
 'pickup_estimate': 4,
 'trip': {'distance_estimate': 29.76,
          'distance_unit': 'mile',
          'duration_estimate': 3300}}

This was generated identically except for the product_id being UberX rather than UberPool:

data = '{\n       "product_id": "a1111c8c-c720-46c3-8534-2fcdd730040d",\n      "start_latitude": "37.9779776",\n       "start_longitude": "-122.0310733",\n       "end_latitude": "37.7941378",\n       "end_longitude": "-122.4077914"\n     }'
1

1 Answers

0
votes

I believe I have solved my own question, and wanted to share the answer: the UberPool requests have an implicit argument of "seat_count = 2" that is passed in the dictionary I call "data" above. When I added an explicit argument of "seat_count = 1" into my dictionary, prices became more as expected, with UberPool being cheaper than UberX!

To be clear -- this is still weird behavior on the part of the API, and has been noted by Uber staff. UberPool should never be more expensive than UberX, INCLUDING if you request two seats -- it wouldn't make sense from a product standpoint because why would anyone ever call a circuitous UberPool for themselves and a friend, if the direct UberX is cheaper and faster?