Uber APIUber.com ↗
Search Uber locations, get route distance and ETA estimates, resolve place details, and list available ride products for any coordinates via a simple REST API.
What is the Uber API?
The Uber.com API exposes 4 endpoints covering location search, place resolution, ride estimates, and product availability. Use search_locations to find pickup and dropoff points by name or address, then resolve coordinates with get_place_details, and pass those coordinates to get_ride_estimate to retrieve route distance in meters and miles alongside ETA in seconds and minutes.
curl -X POST 'https://api.parse.bot/scraper/008cb765-ed13-4ef6-803d-0a57049962d8/search_locations' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"query": "Times Square",
"latitude": "40.7580",
"longitude": "-73.9855"
}'Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace uber-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.uber_ride_estimate_api import Uber, LocationSummary, Location, RideEstimate, ProductAvailability, PlaceType
uber = Uber()
# Search for locations near Times Square
for location in uber.locationsummaries.search(query="Times Square", latitude="40.7580", longitude="-73.9855"):
print(location.address_line1, location.address_line2, location.id)
# Get full details with coordinates
details = location.details(place_type=PlaceType.DESTINATION)
print(details.title, details.full_address, details.latitude, details.longitude)
print(details.address_components.city, details.address_components.postal_code)
break
# Get ride estimate between two points
estimate = uber.rideestimates.get(
pickup_latitude="40.7580",
pickup_longitude="-73.9855",
dropoff_latitude="40.6413",
dropoff_longitude="-73.7781",
)
print(estimate.distance_miles, estimate.eta_minutes)
print(estimate.pickup.latitude, estimate.pickup.longitude)
print(estimate.dropoff.latitude, estimate.dropoff.longitude)
# Get available ride products for a location
availability = uber.productavailabilities.get(latitude="40.7580", longitude="-73.9855")
print(availability.defaulted, availability.latitude)
for product in availability.products:
print(product.name, product.display_name, product.capacity, product.product_tier.display_name)
Search for locations by name or address within a geographic context. Returns a list of matching places with IDs usable with get_place_details to retrieve coordinates. Results are biased toward the provided latitude/longitude.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Address or place name to search for (e.g. 'Times Square', 'JFK Airport', '123 Main St'). |
| latitude | string | Latitude of the search context area. Results are biased toward this location. |
| longitude | string | Longitude of the search context area. Results are biased toward this location. |
{
"type": "object",
"fields": {
"query": "string - the search query that was used",
"latitude": "number - latitude of search context",
"locations": "array of location objects with id, address_line1, address_line2, categories, provider, type, and tag",
"longitude": "number - longitude of search context"
},
"sample": {
"data": {
"query": "Times Square",
"latitude": 40.758,
"locations": [
{
"id": "32b3a157-8e07-3215-ab38-7c080b9219a5",
"tag": null,
"type": "LOCATION",
"provider": "uber_places",
"categories": [
"LANDMARK",
"place"
],
"address_line1": "Times Square",
"address_line2": "Times Square, New York City, NY"
}
],
"longitude": -73.9855
},
"status": "success"
}
}About the Uber API
Location Search and Place Resolution
The search_locations endpoint accepts a free-text query (an address, landmark, or place name) and optional latitude/longitude context to bias results geographically. Each result in the locations array includes an id, address_line1, address_line2, categories, provider, type, and tag. That id feeds directly into get_place_details, which resolves full coordinates (latitude, longitude), a full_address, and structured address_components including CITY, COUNTRY_CODE, POSTAL_CODE, STREET_NAME, and FIRST_LEVEL_SUBDIVISION_CODE. The optional place_type param accepts pickup or destination to contextualize the lookup.
Route Estimates
get_ride_estimate takes four required coordinate inputs — pickup_latitude, pickup_longitude, dropoff_latitude, and dropoff_longitude — and returns eta_seconds, eta_minutes, distance_meters, and distance_miles for the route. This endpoint is useful for computing travel time between any two geographic points before a ride is requested, and works with coordinates obtained from get_place_details or any known lat/lng pair.
Ride Product Availability
get_ride_products returns the Uber vehicle types available at a given location, specified by latitude and longitude. Each product object in the products array includes name, display_name, description, capacity, image_url, product_display_type, and product_tier. The defaulted boolean in the response indicates whether the returned products come from a default fallback market rather than a specific Uber service area, which is useful for detecting out-of-coverage coordinates.
The Uber API is a managed, monitored endpoint for Uber.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when Uber.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official Uber.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Calculate route distance and ETA between two addresses using get_ride_estimate before booking a ride
- List available Uber vehicle types and passenger capacities at a given airport or venue with get_ride_products
- Resolve a human-readable address to exact coordinates via search_locations and get_place_details for downstream routing
- Detect whether a location falls within an active Uber market by checking the defaulted flag from get_ride_products
- Build a trip cost estimator that pairs ETA and distance data with external pricing logic
- Populate autocomplete dropdowns for pickup and dropoff fields using search_locations with geo-biased results
- Extract structured address components (postal code, city, country code) from a place name using get_place_details
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Uber have an official developer API?+
What does get_ride_estimate return beyond a simple ETA?+
eta_seconds and eta_minutes for travel time, plus distance_meters and distance_miles for the full route. The response also echoes back the pickup and dropoff coordinate objects so you can confirm the inputs that were used. It does not return fare estimates or surge pricing — that data is not covered by this endpoint.Does the API return fare prices or surge multipliers?+
How do I know if get_ride_products results are real for my location?+
defaulted boolean in the response. When defaulted is true, the returned products come from a generic fallback market rather than a specific service area matched to your coordinates. This typically means the supplied lat/lng is outside an active Uber coverage zone.