This is an API that will return fare information for Uber and Lyft's services, where the user only has to input their pickup and destiantion once. It was adapted from my Python script that I wrote at StarterHacks 2020 into a Flask endpoint. Currently it prints out the results, I will be adjusting it so that it delivers accuate JSON data soon.
Edit: API now returns JSON in following format(You can use an online pretty print service to view this example):
{"data": {"Lyft Info": {"cost_estimates": [{"ride_type": "lyft", "estimated_duration_seconds": 445, "estimated_cost_cents_max": 1200, "is_valid_estimate": true, "currency": "CAD", "estimated_cost_cents_min": 1000, "display_name": "Lyft"}, {"ride_type": "lyft_plus", "estimated_duration_seconds": 445, "estimated_cost_cents_max": 2100, "is_valid_estimate": true, "currency": "CAD", "estimated_cost_cents_min": 1800, "display_name": "Lyft XL"}, {"ride_type": "lyft_premier", "estimated_duration_seconds": 445, "estimated_cost_cents_max": 2100, "is_valid_estimate": true, "currency": "CAD", "estimated_cost_cents_min": 1800, "display_name": "Lux"}, {"ride_type": "lyft_lux", "estimated_duration_seconds": 445, "estimated_cost_cents_max": 2800, "is_valid_estimate": true, "currency": "CAD", "estimated_cost_cents_min": 2400, "display_name": "Lux Black"}, {"ride_type": "lyft_luxsuv", "estimated_duration_seconds": 445, "estimated_cost_cents_max": 4000, "is_valid_estimate": true, "currency": "CAD", "estimated_cost_cents_min": 3600, "display_name": "Lux Black XL"}]}, "Uber Info": {"status": "success", "data": {"cityId": 13, "prices": [{"vehicleViewDisplayName": "UberX", "fare": {"flagThreshold": 300, "roundDown": false, "tollsApply": true, "bookingFee": 0, "allowFareEstimate": true, "lostLockFee": 25, "minimum": 5.25, "perDistanceUnit": 0.81, "fareType": "time_plus_distance", "serviceFeePercent": 0, "safeRideFee": 2.75, "fareUnavailable": false, "freeLockFee": 10, "riderCancellationEnabled": false, "isDistanceUnitMetric": true, "reservationFee": 0, "perAdditionalPoolChainPickup": null, "calculationType": "time_plus_distance", "privatePropertyLockFee": 10, "base": 2.5, "inNoParkingZoneFee": 5, "riderCancellation": 2, "speedThresholdMps": 0, "gratuityAccepted": false, "stolenVehicleFee": 50, "outOfServiceAreaFee": 25, "perWaitMinute": 0.36, "perMinute": 0.18, "baseTimeMinutes": 30, "autoOrManual": "auto", "cancellation": 5, "uberServicePercent": 0.25}, "capacity": 4, "fareString": "CA$9-11", "min": 9, "currencyCode": "CAD", "isCoupledUFP": true, "taxiFareInfo": null, "vehicleViewId": 331, "iso2": "CA", "singleLocationSpecificDisclaimer": "", "legalDisclaimer": null, "advancedFare": {"cancellationV2Enabled": true, "kickoffThresholdMins": "0.00", "cancellationGracePeriodLimitingEnabled": false, "enroutePerMinute": 0.25, "timeAndDistanceBasedCancelEnabled": false, "enrouteReverseFallbackScalar": 1.2, "enrouteFareEnabled": false, "minDriverCancellation": 5, "cancellationGracePeriodThresholdSec": 120, "enrouteFeeCoupledTiers": [{"fare": 1.25, "kickoffDistanceThresholdMeter": 2200}], "minCancellation": 5, "driverCancelTimeThresholdSec": 300, "riderRemotePickupFareKickoffTimeThresholdSec": null, "cancellationCap": 5, "enrouteFareCap": null, "enroutePerDistanceUnit": 0.62, "cancellationGracePeriodLimit": 2}, "locationSpecificDisclaimer": "", "fareType": "time_plus_distance", "total": 11, "tripTime": {"chargeForWaitTimeEnabled": true, "waitTimeThresholdSec": 120}, "currencyLocale": "en"}, {"vehicleViewDisplayName": "Pool - Unavailable", "fare": {"flagThreshold": 100, "roundDown": false, "tollsApply": true, "bookingFee": 0, "allowFareEstimate": false, "lostLockFee": 25, "minimum": 5.25, "perDistanceUnit": 0.81, "fareType": "time_plus_distance", "serviceFeePercent": 0, "safeRideFee": 2.75, "fareUnavailable": false, "freeLockFee": 10, "riderCancellationEnabled": true, "isDistanceUnitMetric": true, "reservationFee": 0, "perAdditionalPoolChainPickup": null, "calculationType": "time_plus_distance", "privatePropertyLockFee": 10, "base": 2.5, "inNoParkingZoneFee": 5, "riderCancellation": 2, "speedThresholdMps": 10, "gratuityAccepted": false, "stolenVehicleFee": 50, "outOfServiceAreaFee": 25, "perWaitMinute": "", "perMinute": 0.18, "baseTimeMinutes": 30, "autoOrManual": "auto", "cancellation": 5, "uberServicePercent": 0.25}, "capacity": 2, "fareString": "CA$9-11", "min": 9, "currencyCode": "CAD", "isCoupledUFP": true, "taxiFareInfo": null, "vehicleViewId": 4131, "iso2": "CA", "singleLocationSpecificDisclaimer": "", "legalDisclaimer": null, "advancedFare": {"cancellationV2Enabled": true, "kickoffThresholdMins": "0.00", "cancellationGracePeriodLimitingEnabled": true, "enroutePerMinute": null, "timeAndDistanceBasedCancelEnabled": false, "enrouteReverseFallbackScalar": null, "enrouteFareEnabled": false, "minDriverCancellation": 5, "cancellationGracePeriodThresholdSec": 60, "enrouteFeeCoupledTiers": [{"fare": 1.25, "kickoffDistanceThresholdMeter": 2200}], "minCancellation": 3, "driverCancelTimeThresholdSec": 120, "riderRemotePickupFareKickoffTimeThresholdSec": null, "cancellationCap": 20, "enrouteFareCap": null, "enroutePerDistanceUnit": 0, "cancellationGracePeriodLimit": 1}, "locationSpecificDisclaimer": "", "fareType": "time_plus_distance", "total": 11, "tripTime": {"chargeForWaitTimeEnabled": null, "waitTimeThresholdSec": 120}, "currencyLocale": "en"}, {"vehicleViewDisplayName": "WAV", "fare": {"flagThreshold": 100, "roundDown": false, "tollsApply": true, "bookingFee": 0, "allowFareEstimate": true, "lostLockFee": 25, "minimum": 5.25, "perDistanceUnit": 0.81, "fareType": "time_plus_distance", "serviceFeePercent": 0, "safeRideFee": 2.75, "fareUnavailable": false, "freeLockFee": 10, "riderCancellationEnabled": false, "isDistanceUnitMetric": true, "reservationFee": 0, "perAdditionalPoolChainPickup": null, "calculationType": "time_plus_distance", "privatePropertyLockFee": 10, "base": 2.5, "inNoParkingZoneFee": 5, "riderCancellation": 2, "speedThresholdMps": 0, "gratuityAccepted": false, "stolenVehicleFee": 50, "outOfServiceAreaFee": 25, "perWaitMinute": "", "perMinute": 0.18, "baseTimeMinutes": 30, "autoOrManual": "auto", "cancellation": 5, "uberServicePercent": 0}, "capacity": 4, "fareString": "CA$9-11", "min": 9, "currencyCode": "CAD", "isCoupledUFP": true, "taxiFareInfo": null, "vehicleViewId": 10071, "iso2": "CA", "singleLocationSpecificDisclaimer": "", "legalDisclaimer": null, "advancedFare": {"cancellationV2Enabled": true, "kickoffThresholdMins": "0.00", "cancellationGracePeriodLimitingEnabled": false, "enroutePerMinute": null, "timeAndDistanceBasedCancelEnabled": false, "enrouteReverseFallbackScalar": null, "enrouteFareEnabled": false, "minDriverCancellation": 5, "cancellationGracePeriodThresholdSec": 300, "enrouteFeeCoupledTiers": null, "minCancellation": 5, "driverCancelTimeThresholdSec": 300, "riderRemotePickupFareKickoffTimeThresholdSec": null, "cancellationCap": 5, "enrouteFareCap": null, "enroutePerDistanceUnit": 0, "cancellationGracePeriodLimit": 2}, "locationSpecificDisclaimer": "", "fareType": "time_plus_distance", "total": 11, "tripTime": {"chargeForWaitTimeEnabled": null, "waitTimeThresholdSec": 120}, "currencyLocale": "en"}, {"vehicleViewDisplayName": "Assist", "fare": {"flagThreshold": 100, "roundDown": false, "tollsApply": true, "bookingFee": 0, "allowFareEstimate": true, "lostLockFee": 25, "minimum": 5.25, "perDistanceUnit": 0.81, "fareType": "time_plus_distance", "serviceFeePercent": 0, "safeRideFee": 2.75, "fareUnavailable": false, "freeLockFee": 10, "riderCancellationEnabled": false, "isDistanceUnitMetric": true, "reservationFee": 0, "perAdditionalPoolChainPickup": null, "calculationType": "time_plus_distance", "privatePropertyLockFee": 10, "base": 2.5, "inNoParkingZoneFee": 5, "riderCancellation": 2, "speedThresholdMps": 0, "gratuityAccepted": false, "stolenVehicleFee": 50, "outOfServiceAreaFee": 25, "perWaitMinute": "", "perMinute": 0.18, "baseTimeMinutes": 30, "autoOrManual": "auto", "cancellation": 5, "uberServicePercent": 0.15}, "capacity": 4, "fareString": "CA$9-11", "min": 9, "currencyCode": "CAD", "isCoupledUFP": true, "taxiFareInfo": null, "vehicleViewId": 11271, "iso2": "CA", "singleLocationSpecificDisclaimer": "", "legalDisclaimer": null, "advancedFare": {"cancellationV2Enabled": true, "kickoffThresholdMins": "0.00", "cancellationGracePeriodLimitingEnabled": false, "enroutePerMinute": null, "timeAndDistanceBasedCancelEnabled": false, "enrouteReverseFallbackScalar": null, "enrouteFareEnabled": false, "minDriverCancellation": 5, "cancellationGracePeriodThresholdSec": 300, "enrouteFeeCoupledTiers": null, "minCancellation": 5, "driverCancelTimeThresholdSec": 300, "riderRemotePickupFareKickoffTimeThresholdSec": null, "cancellationCap": 5, "enrouteFareCap": null, "enroutePerDistanceUnit": 0, "cancellationGracePeriodLimit": 2}, "locationSpecificDisclaimer": "", "fareType": "time_plus_distance", "total": 11, "tripTime": {"chargeForWaitTimeEnabled": null, "waitTimeThresholdSec": 120}, "currencyLocale": "en"}, {"vehicleViewDisplayName": "Comfort", "fare": {"flagThreshold": 300, "roundDown": false, "tollsApply": true, "bookingFee": 0, "allowFareEstimate": true, "lostLockFee": 25, "minimum": 11.72, "perDistanceUnit": 0.93, "fareType": "time_plus_distance", "serviceFeePercent": 0.28, "safeRideFee": 3.58, "fareUnavailable": false, "freeLockFee": 10, "riderCancellationEnabled": false, "isDistanceUnitMetric": true, "reservationFee": 0, "perAdditionalPoolChainPickup": null, "calculationType": "time_plus_distance", "privatePropertyLockFee": 10, "base": 3.75, "inNoParkingZoneFee": 5, "riderCancellation": 2, "speedThresholdMps": 0, "gratuityAccepted": false, "stolenVehicleFee": 50, "outOfServiceAreaFee": 25, "perWaitMinute": 0.61, "perMinute": 0.26, "baseTimeMinutes": 30, "autoOrManual": "auto", "cancellation": 5, "uberServicePercent": 0.28}, "capacity": 4, "fareString": "CA$12-15", "min": 12, "currencyCode": "CAD", "isCoupledUFP": true, "taxiFareInfo": null, "vehicleViewId": 20019873, "iso2": "CA", "singleLocationSpecificDisclaimer": "", "legalDisclaimer": null, "advancedFare": {"cancellationV2Enabled": true, "kickoffThresholdMins": "0.00", "cancellationGracePeriodLimitingEnabled": false, "enroutePerMinute": 0.26, "timeAndDistanceBasedCancelEnabled": false, "enrouteReverseFallbackScalar": 1.2, "enrouteFareEnabled": false, "minDriverCancellation": 10, "cancellationGracePeriodThresholdSec": 120, "enrouteFeeCoupledTiers": [{"fare": 1.25, "kickoffDistanceThresholdMeter": 2200}], "minCancellation": 5, "driverCancelTimeThresholdSec": 600, "riderRemotePickupFareKickoffTimeThresholdSec": 0, "cancellationCap": 20, "enrouteFareCap": 20, "enroutePerDistanceUnit": 0.93, "cancellationGracePeriodLimit": 2}, "locationSpecificDisclaimer": "", "fareType": "time_plus_distance", "total": 15, "tripTime": {"chargeForWaitTimeEnabled": true, "waitTimeThresholdSec": 120}, "currencyLocale": "en"}, {"vehicleViewDisplayName": "UberXL", "fare": {"flagThreshold": 300, "roundDown": false, "tollsApply": true, "bookingFee": 0, "allowFareEstimate": true, "lostLockFee": 25, "minimum": 8, "perDistanceUnit": 1.55, "fareType": "time_plus_distance", "serviceFeePercent": 0, "safeRideFee": 3, "fareUnavailable": false, "freeLockFee": 10, "riderCancellationEnabled": false, "isDistanceUnitMetric": true, "reservationFee": 0, "perAdditionalPoolChainPickup": null, "calculationType": "time_plus_distance", "privatePropertyLockFee": 10, "base": 5, "inNoParkingZoneFee": 5, "riderCancellation": 2, "speedThresholdMps": 0, "gratuityAccepted": false, "stolenVehicleFee": 50, "outOfServiceAreaFee": 25, "perWaitMinute": 0.4, "perMinute": 0.36, "baseTimeMinutes": 30, "autoOrManual": "auto", "cancellation": 5, "uberServicePercent": 0.25}, "capacity": 6, "fareString": "CA$15-19", "min": 15, "currencyCode": "CAD", "isCoupledUFP": true, "taxiFareInfo": null, "vehicleViewId": 1776, "iso2": "CA", "singleLocationSpecificDisclaimer": "", "legalDisclaimer": null, "advancedFare": {"cancellationV2Enabled": true, "kickoffThresholdMins": "0.00", "cancellationGracePeriodLimitingEnabled": false, "enroutePerMinute": null, "timeAndDistanceBasedCancelEnabled": false, "enrouteReverseFallbackScalar": null, "enrouteFareEnabled": false, "minDriverCancellation": 5, "cancellationGracePeriodThresholdSec": 120, "enrouteFeeCoupledTiers": null, "minCancellation": 5, "driverCancelTimeThresholdSec": 300, "riderRemotePickupFareKickoffTimeThresholdSec": null, "cancellationCap": 5, "enrouteFareCap": null, "enroutePerDistanceUnit": 0, "cancellationGracePeriodLimit": 2}, "locationSpecificDisclaimer": "", "fareType": "time_plus_distance", "total": 19, "tripTime": {"chargeForWaitTimeEnabled": true, "waitTimeThresholdSec": 120}, "currencyLocale": "en"}, {"vehicleViewDisplayName": "Select", "fare": {"flagThreshold": 300, "roundDown": false, "tollsApply": true, "bookingFee": 0, "allowFareEstimate": true, "lostLockFee": 25, "minimum": 11.72, "perDistanceUnit": 1.49, "fareType": "time_plus_distance", "serviceFeePercent": 0, "safeRideFee": 3.58, "fareUnavailable": false, "freeLockFee": 10, "riderCancellationEnabled": false, "isDistanceUnitMetric": true, "reservationFee": 0, "perAdditionalPoolChainPickup": null, "calculationType": "time_plus_distance", "privatePropertyLockFee": 10, "base": 5, "inNoParkingZoneFee": 5, "riderCancellation": 2, "speedThresholdMps": 0, "gratuityAccepted": false, "stolenVehicleFee": 50, "outOfServiceAreaFee": 25, "perWaitMinute": 0.61, "perMinute": 0.55, "baseTimeMinutes": 30, "autoOrManual": "auto", "cancellation": 5, "uberServicePercent": 0.25}, "capacity": 4, "fareString": "CA$17-21", "min": 17, "currencyCode": "CAD", "isCoupledUFP": true, "taxiFareInfo": null, "vehicleViewId": 3342, "iso2": "CA", "singleLocationSpecificDisclaimer": "", "legalDisclaimer": null, "advancedFare": {"cancellationV2Enabled": true, "kickoffThresholdMins": "0.00", "cancellationGracePeriodLimitingEnabled": false, "enroutePerMinute": 0.55, "timeAndDistanceBasedCancelEnabled": false, "enrouteReverseFallbackScalar": null, "enrouteFareEnabled": false, "minDriverCancellation": 5, "cancellationGracePeriodThresholdSec": 120, "enrouteFeeCoupledTiers": null, "minCancellation": 5, "driverCancelTimeThresholdSec": 300, "riderRemotePickupFareKickoffTimeThresholdSec": null, "cancellationCap": 5, "enrouteFareCap": null, "enroutePerDistanceUnit": 1.49, "cancellationGracePeriodLimit": 2}, "locationSpecificDisclaimer": "", "fareType": "time_plus_distance", "total": 21, "tripTime": {"chargeForWaitTimeEnabled": true, "waitTimeThresholdSec": 120}, "currencyLocale": "en"}, {"vehicleViewDisplayName": "Black", "fare": {"flagThreshold": 200, "roundDown": false, "tollsApply": true, "bookingFee": 0, "allowFareEstimate": true, "lostLockFee": 25, "minimum": 15.75, "perDistanceUnit": 2.23, "fareType": "time_plus_distance", "serviceFeePercent": 0, "safeRideFee": 0, "fareUnavailable": false, "freeLockFee": 10, "riderCancellationEnabled": false, "isDistanceUnitMetric": true, "reservationFee": 0, "perAdditionalPoolChainPickup": null, "calculationType": "time_plus_distance", "privatePropertyLockFee": 10, "base": 8.75, "inNoParkingZoneFee": 5, "riderCancellation": 2, "speedThresholdMps": 0, "gratuityAccepted": false, "stolenVehicleFee": 50, "outOfServiceAreaFee": 25, "perWaitMinute": 0.85, "perMinute": 0.85, "baseTimeMinutes": 30, "autoOrManual": "auto", "cancellation": 10, "uberServicePercent": 0.25}, "capacity": 4, "fareString": "CA$21-27", "min": 21, "currencyCode": "CAD", "isCoupledUFP": true, "taxiFareInfo": null, "vehicleViewId": 15, "iso2": "CA", "singleLocationSpecificDisclaimer": "", "legalDisclaimer": null, "advancedFare": {"cancellationV2Enabled": true, "kickoffThresholdMins": "0.00", "cancellationGracePeriodLimitingEnabled": false, "enroutePerMinute": null, "timeAndDistanceBasedCancelEnabled": false, "enrouteReverseFallbackScalar": null, "enrouteFareEnabled": false, "minDriverCancellation": 20, "cancellationGracePeriodThresholdSec": 300, "enrouteFeeCoupledTiers": null, "minCancellation": 10, "driverCancelTimeThresholdSec": 900, "riderRemotePickupFareKickoffTimeThresholdSec": null, "cancellationCap": 20, "enrouteFareCap": null, "enroutePerDistanceUnit": 0, "cancellationGracePeriodLimit": 2}, "locationSpecificDisclaimer": "", "fareType": "time_plus_distance", "total": 27, "tripTime": {"chargeForWaitTimeEnabled": true, "waitTimeThresholdSec": 300}, "currencyLocale": "en"}, {"vehicleViewDisplayName": "Black SUV", "fare": {"flagThreshold": 2000, "roundDown": false, "tollsApply": true, "bookingFee": 0, "allowFareEstimate": true, "lostLockFee": 25, "minimum": 25.75, "perDistanceUnit": 2.29, "fareType": "time_plus_distance", "serviceFeePercent": 0, "safeRideFee": 0, "fareUnavailable": false, "freeLockFee": 10, "riderCancellationEnabled": false, "isDistanceUnitMetric": true, "reservationFee": 0, "perAdditionalPoolChainPickup": null, "calculationType": "time_plus_distance", "privatePropertyLockFee": 10, "base": 15.75, "inNoParkingZoneFee": 5, "riderCancellation": 2, "speedThresholdMps": 0, "gratuityAccepted": false, "stolenVehicleFee": 50, "outOfServiceAreaFee": 25, "perWaitMinute": 0.89, "perMinute": 0.89, "baseTimeMinutes": 30, "autoOrManual": "auto", "cancellation": 10, "uberServicePercent": 0.28}, "capacity": 6, "fareString": "CA$29-34", "min": 29, "currencyCode": "CAD", "isCoupledUFP": true, "taxiFareInfo": null, "vehicleViewId": 16, "iso2": "CA", "singleLocationSpecificDisclaimer": "", "legalDisclaimer": null, "advancedFare": {"cancellationV2Enabled": true, "kickoffThresholdMins": "0.00", "cancellationGracePeriodLimitingEnabled": false, "enroutePerMinute": null, "timeAndDistanceBasedCancelEnabled": false, "enrouteReverseFallbackScalar": null, "enrouteFareEnabled": false, "minDriverCancellation": 25, "cancellationGracePeriodThresholdSec": 300, "enrouteFeeCoupledTiers": null, "minCancellation": 10, "driverCancelTimeThresholdSec": 900, "riderRemotePickupFareKickoffTimeThresholdSec": null, "cancellationCap": 25, "enrouteFareCap": null, "enroutePerDistanceUnit": 0, "cancellationGracePeriodLimit": 2}, "locationSpecificDisclaimer": "", "fareType": "time_plus_distance", "total": 34, "tripTime": {"chargeForWaitTimeEnabled": true, "waitTimeThresholdSec": 300}, "currencyLocale": "en"}], "cityName": "Toronto", "isDestinationWithinCA": false}}}}