Scraping the Uber Eats API
If you need to scrape Uber Eats restaurant data without violating their Terms of Service (or wasting time with a broken web scraping platform), we’ll show you how to legally extract restaurant & food delivery data from the Uber Eats website into Excel & CSV files.
You’ll be able to scrape the full list of restaurants from any local market in only a few minutes. You can also download additional desired data from the delivery platform, such as menu data for individual restaurants, promotions & offers.
Scrape Restaurant Search Results
If you’d like to perform some market research on a particular area, you may want to start with scraping all of the restaurants in a particular area. You can easily do this by recording your web traffic and simply browsing through search results on Uber Eats.
1. Browse Uber Eats Restaurants
To get started, head to the Uber Eats Website and navigate to any area you want to scrape the data for. Enter in any desired filters you’d like on the website as you would normally do.
Once you see the restaurants (or other data) show on the screen that you want to scrape, right click on the page and hit “Inspect” to open developer tools. This will begin recording your web traffic now so we can legally scrape a recording of your web traffic instead of the Uber Eats website as to not violate their Terms of Service.
Now refresh the page to force Uber Eats to resend a new batch of data to your browser once you’re recording. Then scroll down through the page so you keep loading more and more restaurants. You may need to hit “Load More” (or similar) at the bottom of each scroll to load additional data.
2. Export HAR File
When you’re done, go to the “Network” tab in your browser’s developer tools and look for a down arrow labeled “Export HAR…” and click it to generate a HAR file containing the raw data that Uber Eats sent to your browser. Upload that file to the HAR File Web Scraper and look for the group ending in api/getFeedV1
(or similar):
3. Download Uber Eats Restaurants
Once the parse finishes, you should see a collection labeled data › feedItems › store
or similar. You may need to scroll or look for it, as the JSON structure from Uber Eats can be a bit complex.
You’ll see data about each restaurant including interesting fields like:
- Restaurant Uber Eats URL
- Restaurant Title
- Average Star Rating
- Image URL
- Eyeball Count (Probably View Count)
- Request Count (Probably Click Count)
- Delivery ETA Times
- Latitude & Longitude Coordinates
- Brand / Chain Name
- Available Offers
There are many other collections on the data page you can scroll through. Some will contain listings from specialty shops (like wine and alcohol) and others will contain special deals and offers for local Uber Eats restaurants:
Scrape Restaurant Details
If you need to extract data from a specific restaurant, such as scrape food items from the menu, then check out the video on the top of this page. You’ll need to manually visit each restaurant to load the menu data into your browser, then use the same HAR file approach to get the data out.
1. Browse Restaurants
If you need to scrape a group of restaurants, you’ll want to first use the search page as described earlier so you can easily navigate back and forth between the different restaurants, as you’ll need to visit them in your browser to load the data. So run a search for the restaurants you want to scrape, being as specific as possible.
Once you’ve narrowed down the search results, right click on the web page (on the search results page) then hit “Inspect” to open up developer tools. This will begin recording your web traffic so you can copy the raw data that the Uber Eats API sends to your browser.
Now click on the first restaurant you want to scrape and wait a few seconds for the data to load. If you want to verify the data was loaded, look for the “Network” tab in developer tools and type in getStore
under the filter. You should see a network request with JSON data showing all of the restaurant details, including menu data.
To scrape additional restaurants, just use the back button in your browser to go back to the search results page, click on another restaurant to load the data, and repeat this process. Make sure the “Preserve log” option is checked under the Network tab in developer tools.
2. Export a HAR File
Once you’ve browsed through all of the restaurants you want to scrape, look for the down arrow under the “Network” tab in developer tools labeled “Export HAR…” and click that icon to download a HAR file containing all of the raw JSON data that was sent to your browser.
Upload that file to the HAR File Web Scraper and look for the group ending in getStoreV1
(or similar) as shown in the screenshot above. You can click on the blue links on that group to download the raw JSON to your downloads folder, or click on the “Parse Group” button to combine the results together into downloadable files.
3. Download Menu & Restaurant Data
Once you parse the group of requests, you’ll be able to download menu data, restaurant details, and much more from the collections shown on that page. Feel free to browse around and see what’s available.
Restaurant Menu Data
To download the menu data from the restaurants, look for the data › catalogSectionsMap › payload › standardItemsPayload › catalogItems
collection which will contain the combined menu items of all restaurants browsed. When you click “Download CSV” you’ll see a reference to the parent restaurant so you can segment the items out by restaurant.
Some fields of interest you can download from the store menu items are:
- Menu Item Title
- Unique ID
- Image URL
- Item Description
- Price
- Has Customizations?
- Available?
Restaurant Details Data
To download restaurant-level details, like store hours, phone number, address and more look for the <root>
collection, which will contain a row for each restaurant.
Some columns of interest are as follows:
- Restaurant Name
- Unique ID
- URL Slug
- City Slug
- Is 3rd Party Delivery?
- Price Level
- Phone Number
- Current Store Hours
- Street Address
- ZIP Code
- Latitude & Longitude Coordinates
- Neighborhood
- Delivery Time Estimate
- Average Rating
- Review Count