UberEats API endpoint
Returns restaurants delivering to a location: name, rating, review count, delivery estimate, cuisine tags, and image. Pass a keyword to search by name/cuisine/dish, or omit it to browse the general feed for that location.
/ubereats/searchQuery parameters:
latitude (required) — delivery search center latitude, e.g. 37.7749.longitude (required) — delivery search center longitude, e.g. -122.4194.query (optional) — keyword, e.g. pizza. Omit to browse the location feed.offset (optional, default 0) — result offset for the location feed. Used only when query is omitted.limit (optional, default 20, max 50) — number of restaurants to return.cursor (optional) — opaque pagination cursor from a previous keyword-search response. Used only when query is set.Response includes cityName (location feed only), restaurants[], offset, cursor, and hasMore. Each restaurant has storeUuid, name, slug, url, rating, reviewCount, deliveryEtaText, imageUrl, latitude, longitude, cuisineTags[], isSponsored, and currencyCode.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| storeUuid | 20 | “03ff567d-d8e4-5c66-8cc8-163217874b6a” and 19 other values |
| name | 20 | “CVS” and 19 other values |
| slug | 20 | |
| url | 20 | ubereats.com |
| rating | 19 | 4.2 to 5, median 4.7 |
| reviewCount | 16 | 110 to 15,000, median 700 |
| deliveryEtaText | 20 | “12 min” and 14 other values |
| imageUrl | 20 | tb-static.uber.com |
| latitude | 20 | |
| longitude | 20 | |
| currencyCode | 20 | USD in all 20 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| latitude | number | Yes | Delivery search center latitude | 37.7749 | |
| longitude | number | Yes | Delivery search center longitude | -122.4194 | |
| query | string | No | Keyword — restaurant name, cuisine, or dish | pizza | |
| offset | integer | No | Result offset for the location feed (used only when query is omitted). Default 0 | ||
| limit | integer | No | Number of restaurants to return, clamped to 50. Default 20 | ||
| cursor | string | No | Opaque pagination cursor from a previous keyword-search response | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/ubereats/search?latitude=37.7749&longitude=-122.4194&query=coffee&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"cityName": "san_francisco",
"restaurants": [
{
"storeUuid": "259fe6e9-9e3a-429d-ae24-be5eda54ba64",
"name": "Udupi Palace",
"slug": "udupi-palace-mission",
"url": "https://www.ubereats.com/store/udupi-palace-mission",
"rating": 4.5,
"reviewCount": 2000,
"deliveryEtaText": "21 min",
"imageUrl": "https://tb-static.uber.com/prod/image-proc/processed_images/example.jpeg",
"latitude": 37.7567,
"longitude": -122.421,
"currencyCode": "USD"
}
],
"offset": 0,
"hasMore": true
}
}Request schema
No body schema
Response schema
#/definitions/ubereats.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | ubereats.SearchResponse | No | ||||
| data.cityName | string | No | Name of the city feed that was returned, such as `san_francisco`. Set for location feeds only. | |||
| data.cursor | string | No | Cursor to pass in the next keyword search request to get more results. | |||
| data.hasMore | boolean | No | Whether more restaurants are available beyond this response. | |||
| data.offset | integer | No | Offset of the first restaurant returned. | |||
| data.restaurants | array | No | Restaurants matching the search, or found in the location feed. | |||
| data.restaurants[].cuisineTags | array | No | Cuisine labels shown on the restaurant card. | |||
| data.restaurants[].currencyCode | string | No | Currency code used for the restaurant's prices, such as `USD`. | |||
| data.restaurants[].deliveryEtaText | string | No | Estimated delivery time as shown on the card, such as `21 min`. | |||
| data.restaurants[].imageUrl | string | No | URL of the restaurant's card image. | |||
| data.restaurants[].isSponsored | boolean | No | Whether Uber Eats shows the restaurant as a sponsored listing. | |||
| data.restaurants[].latitude | number | No | Latitude of the restaurant, in decimal degrees. | |||
| data.restaurants[].longitude | number | No | Longitude of the restaurant, in decimal degrees. | |||
| data.restaurants[].name | string | No | Restaurant name as shown on the feed card. | |||
| data.restaurants[].rating | number | No | Average customer rating of the restaurant. | |||
| data.restaurants[].reviewCount | integer | No | Number of customer reviews the restaurant has. | |||
| data.restaurants[].slug | string | No | URL slug of the restaurant's Uber Eats page. | |||
| data.restaurants[].storeUuid | string | No | Uber Eats store UUID. Use it with the store endpoints. | |||
| data.restaurants[].url | string | No | URL of the restaurant's page on Uber Eats. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/ubereats/search?latitude=37.7749&longitude=-122.4194&query=coffee&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"