ParseForge Scrapers

Uber Eats Scraper - Restaurants, Full Menus & Modifiers

parseforge/uber-eats-scraper

E-commerceAutomationLead generation

Scrape Uber Eats restaurants and full menus with prices, ratings, hours, phone, coordinates, ETA and modifiers for any address worldwide. Export CSV, Excel, JSON or XML.

Run this scraper See the API call
Total runs
4
Bookmarked
0
Last modified
2 days ago

This scraper was last updated on .

What does the Uber Eats Scraper - Restaurants, Full Menus & Modifiers return?

ParseForge Banner

๐Ÿ” Uber Eats Scraper

๐Ÿš€ Export Uber Eats restaurants and their complete menus in seconds, as one row per restaurant or one row per dish. 280 Chicago restaurants with every dish, price and photo came back in about 2 minutes in our test, with no login.

This Actor reads the same data the Uber Eats website loads for every store page: the restaurant card, the address and coordinates, the opening hours, the phone number and the full menu with prices, photos and customer like scores. You can search near any address or pair of coordinates in the countries where Uber Eats delivers, narrow the search with a cuisine, a dish or a restaurant name, apply the filters the app offers (rating, offers, delivery time, best overall, pickup), or paste store links you already have.

Every restaurant row has 42 fields and every menu item row has 30. Menus range from 24 to 247 dishes per restaurant in our Chicago test. Turn on Include modifiers and add-ons to also get the option groups behind each dish (sizes, toppings, sides) with their required flags, limits and extra prices.

๐ŸŽฏ Target Audience ๐Ÿ’ก Primary Use Cases
Restaurant owners and chains Benchmark your menu prices and ratings against every competitor in the same delivery zone
Food delivery and ghost kitchen operators Find under-served cuisines and price gaps by neighborhood
Market and location analysts Map restaurant density, cuisines, chains and ratings for any city
Sales and lead teams Build restaurant lead lists with address, phone, cuisine and rating
Data and AI teams Build menu, price and dish datasets across countries and languages
Food brands and CPG teams Track where and how your products are listed and priced

๐Ÿ“‹ What the Uber Eats Scraper does

  1. Takes one or more locations (an address, a city, a postcode or plain latitude,longitude) and turns each into a delivery point.
  2. Runs one search per location and search term (a cuisine, a dish or a brand) and pages through the whole result list Uber Eats builds for that point, about 80 restaurants per request.
  3. Applies the app's own filters before reading: sort order, minimum rating, offers only, delivery under 30 minutes, best overall, delivery or pickup, and restaurants only (shops and pharmacies are dropped by default).
  4. Reads each restaurant once and returns the restaurant with its full menu, or splits the menu into one row per dish.
  5. Optionally reads every dish that has options and adds the modifier groups with prices.
  6. Also accepts Uber Eats store links directly, with no location needed.
  7. Deduplicates restaurants across locations and search terms, so the same store never costs you twice.

๐Ÿ’ก Why it matters: a rating and a photo hide what actually decides an order: what the menu costs, what is on it and who sells it nearby. With the menu, the like scores, the ETA and the coordinates on the same row, you can compare a whole market in one export instead of opening store pages one by one.

๐ŸŽฌ Full Demo (๐Ÿšง Coming soon)

๐Ÿ“Š Output

Restaurant rows carry 42 columns. Menu item rows carry 30. Pick the shape with Output rows.

Field Type Description
๐Ÿ–ผ imageUrl string Restaurant hero photo (dish photo in menu item rows)
๐Ÿ“Œ title string Restaurant name (dish name in menu item rows)
๐Ÿšฆ status string Open, or the closed message Uber Eats shows
๐Ÿ”— url string Uber Eats store page
๐Ÿ†” id string Store UUID (dish UUID in menu item rows)
๐Ÿฝ cuisines array Cuisine and category tags
๐Ÿ’ฒ priceRange string Price bucket from $ to $$$$
โญ rating number Average rating out of 5
๐Ÿ”ข ratingCount string Number of ratings as Uber Eats shows it, for example 3000+
๐Ÿ“ address streetAddress city region postalCode country string Full address, split into parts
๐Ÿงญ latitude longitude number Store coordinates
๐Ÿ“ž phone string Store phone number
๐Ÿ•’ openingHours array Opening hours by day range, 24-hour times
โฑ etaText etaMinMinutes etaMaxMinutes mixed Delivery estimate, as text and as numbers
๐Ÿ›ต deliveryFee string Delivery fee text when Uber Eats shows one
๐Ÿท offers array Promotions on the store card ("Buy 1, get 1", "20% off select items")
๐Ÿ”— isChain chainName string Chain flag and parent chain name
๐Ÿ• menu array Categories with dishes: name, description, price, photo, availability, like % and count
๐Ÿ’ฌ topReviews array Public customer reviews the store page shows
๐Ÿ”Ž searchLocation searchTerm string What produced the row
๐Ÿ•’ scrapedAt string When the row was collected
โŒ error string Populated only on failed rows

Menu item rows replace the restaurant columns with the dish (category, description, price, priceFormatted, isAvailable, isSoldOut, likePercent, likeCount, hasModifiers, modifierGroups) and repeat the restaurant name, id, rating, cuisines, address and coordinates on every row.

Real sample records
{
  "imageUrl": "https://tb-static.uber.com/prod/image-proc/processed_images/f7d462cb04f580428f99aca9d5d9c86e/db809eadd12d21eb61044e0f3bf7c9b7.jpeg",
  "title": "Bonchon Chicken (325 5th Ave)",
  "status": "Open",
  "url": "https://www.ubereats.com/store/bonchon-chicken-325-5th-ave/L066F9L1TBSUMe6PUZONgw",
  "id": "2f4eba17-d2f5-4c14-9431-ee8f51938d83",
  "slug": "bonchon-chicken-325-5th-ave",
  "cuisines": [
    "Wings",
    "Asian",
    "Chicken",
    "Family Friendly",
    "Korean"
  ],
  "priceRange": "$",
  "rating": 4.8,
  "ratingCount": "10000+",
  "address": "325 5th Ave, New York, NY 10016",
  "streetAddress": "325 5th Ave",
  "city": "New York",
  "region": "NY",
  "postalCode": "10016",
  "country": "US",
  "latitude": 40.7474696,
  "longitude": -73.9850699,
  "phone": "+12126868282",
  "isOpen": "Yes",
  "isOrderable": "Yes",
  "openingHoursSummary": "Open until 1:00 AM",
  "openingHours": [
    {
      "days": "Sunday - Thursday",
      "slots": [
        {
          "section": "N/A",
          "opens": "10:30",
          "closes": "01:00"
        }
      ]
    }
  ],
  "etaText": "17โ€“32 Min",
  "etaMinMinutes": 17,
  "etaMaxMinutes": 32,
  "deliveryFee": "Not Disclosed",
  "distance": "0.7 mi",
  "currency": "USD",
  "isChain": "Yes",
  "chainName": "BonChon",
  "storeType": "DEFAULT",
  "offers": [
    "Buy 1, get 1"
  ],
  "diningModes": [
    "DELIVERY",
    "PICKUP"
  ],
  "menuCategoryCount": 10,
  "menuItemCount": 70,
  "menu": [
    {
      "category": "Buy 1, get 1 free",
      "items": [
        {
          "id": "34d1034d-40c9-560e-958e-c54bd79dc48f",
          "name": "Grape Juice Can",
          "description": "N/A",
          "price": 5.79,
          "priceFormatted": "$5.79",
          "imageUrl": "https://tb-static.uber.com/prod/image-proc/processed_images/c10c7f65348e1d5edd628b2ad20e016f/5143f1e218c67c20fe5a4cd33d90b07b.jpeg",
          "isAvailable": "Yes",
          "isSoldOut": "No",
          "hasModifiers": "No",
          "likePercent": 91,
          "likeCount": 37
        },
        {
          "id": "dea74955-a779-5114-bf00-588bcf8772c4",
          "name": "Pear Juice Can",
          "description": "N/A",
          "price": 5.79,
          "priceFormatted": "$5.79",
          "imageUrl": "https://tb-static.uber.com/prod/image-proc/processed_images/b416aed6edfea626dbfd837c40a4f38e/5143f1e218c67c20fe5a4cd33d90b07b.jpeg",
          "isAvailable": "Yes",
          "isSoldOut": "No",
          "hasModifiers": "No",
          "likePercent": 96,
          "likeCount": 54
        }
      ]
    }
  ],
  "topReviews": [
    {
      "author": "Rachel C.",
      "date": "2026-07-23T00:31:52Z",
      "text": "This was probably the best order Iโ€™ve ever had from Bonchon after being a loyal customer for almost 10 years."
    }
  ],
  "searchLocation": "Times Square, New York",
  "searchTerm": "pizza",
  "scrapedAt": "2026-09-28T22:18:28.086Z",
  "error": null
}
{
  "imageUrl": "https://tb-static.uber.com/prod/image-proc/processed_images/6f67fd8dc603a197abf91eba0288129f/fb86662148be855d931b37d6c1e5fcbe.jpeg",
  "title": "Joe's Pizza - Time's Square (1435 Broadway)",
  "status": "Open",
  "url": "https://www.ubereats.com/store/joes-pizza-times-square-1435-broadway/F9A-B2bKRg-ikAd0B8uzgg",
  "id": "17d03e07-66ca-460f-a290-077407cbb382",
  "slug": "joes-pizza-times-square-1435-broadway",
  "cuisines": [
    "Pizza",
    "American",
    "Italian",
    "Group Friendly"
  ],
  "priceRange": "$",
  "rating": 4.6,
  "ratingCount": "15000+",
  "address": "1435 Broadway, New York, NY 10018",
  "streetAddress": "1435 Broadway",
  "city": "New York",
  "region": "NY",
  "postalCode": "10018",
  "country": "US",
  "latitude": 40.7546509,
  "longitude": -73.9868254,
  "phone": "+16465594878",
  "isOpen": "Yes",
  "isOrderable": "Yes",
  "openingHoursSummary": "Open until 3:00 AM",
  "openingHours": [
    {
      "days": "Sunday - Wednesday",
      "slots": [
        {
          "section": "N/A",
          "opens": "10:00",
          "closes": "03:00"
        }
      ]
    }
  ],
  "etaText": "30โ€“30 Min",
  "etaMinMinutes": 30,
  "etaMaxMinutes": 30,
  "deliveryFee": "$3.99 Delivery Fee",
  "distance": "0.2 mi",
  "currency": "USD",
  "isChain": "Yes",
  "chainName": "joe's pizza nyc (parent)",
  "storeType": "DEFAULT",
  "offers": [],
  "diningModes": [
    "DELIVERY",
    "PICKUP"
  ],
  "menuCategoryCount": 3,
  "menuItemCount": 24,
  "menu": [
    {
      "category": "Salads",
      "items": [
        {
          "id": "06741353-8cb0-4be9-982d-b781867cad78",
          "name": "House Salad (Small)",
          "description": "Fresh mixed greens.",
          "price": 11,
          "priceFormatted": "$11.00",
          "imageUrl": "https://tb-static.uber.com/prod/image-proc/processed_images/a0d4e45600bc020112eeda9ac43862fb/3093d07d5a810674a6d7adf26679874b.jpeg",
          "isAvailable": "Yes",
          "isSoldOut": "No",
          "hasModifiers": "No",
          "likePercent": 79,
          "likeCount": 337
        },
        {
          "id": "41096540-6745-4b31-9b24-11d02dec318b",
          "name": "House Salad (Family)",
          "description": "Feeds four to five people.",
          "price": 32,
          "priceFormatted": "$32.00",
          "imageUrl": "https://tb-static.uber.com/prod/image-proc/processed_images/2142f841b70f29d2e8fb0b3d052946ef/c67fc65e9b4e16a553eb7574fba090f1.jpeg",
          "isAvailable": "Yes",
          "isSoldOut": "No",
          "hasModifiers": "Yes",
          "likePercent": 81,
          "likeCount": 70
        }
      ]
    }
  ],
  "topReviews": [
    {
      "author": "Charles K.",
      "date": "2023-06-04T00:00:00Z",
      "text": "Outstanding true NY style pizza. The cheese pizza is my pick.  The crust is always crispy and chewy, the cheese to sauce ratio is just right, and the ingredients are of a good quality. Joe's is a favorite for a reason."
    }
  ],
  "searchLocation": "Times Square, New York",
  "searchTerm": "pizza",
  "scrapedAt": "2026-09-28T22:18:27.798Z",
  "error": null
}

Menu item row:

{
  "imageUrl": "https://tb-static.uber.com/prod/image-proc/processed_images/2142f841b70f29d2e8fb0b3d052946ef/c67fc65e9b4e16a553eb7574fba090f1.jpeg",
  "title": "House Salad (Family)",
  "restaurantName": "Joe's Pizza - Time's Square (1435 Broadway)",
  "category": "Salads",
  "menuName": "Menu",
  "description": "Feeds four to five people.",
  "price": 32,
  "priceFormatted": "$32.00",
  "currency": "USD",
  "isAvailable": "Yes",
  "isSoldOut": "No",
  "likePercent": 81,
  "likeCount": 70,
  "hasModifiers": "Yes",
  "dietaryLabels": [],
  "modifierGroups": [
    {
      "group": "Choice of Add On",
      "required": "No",
      "min": 0,
      "max": 1,
      "options": [
        {
          "name": "Mozzarella",
          "price": 4,
          "isSoldOut": "No"
        }
      ]
    }
  ],
  "id": "41096540-6745-4b31-9b24-11d02dec318b",
  "restaurantId": "17d03e07-66ca-460f-a290-077407cbb382",
  "restaurantUrl": "https://www.ubereats.com/store/joes-pizza-times-square-1435-broadway/F9A-B2bKRg-ikAd0B8uzgg",
  "restaurantRating": 4.6,
  "restaurantCuisines": [
    "Pizza",
    "American",
    "Italian",
    "Group Friendly"
  ],
  "restaurantAddress": "1435 Broadway, New York, NY 10018",
  "restaurantCity": "New York",
  "restaurantCountry": "US",
  "latitude": 40.7546509,
  "longitude": -73.9868254,
  "searchLocation": "N/A",
  "searchTerm": "N/A",
  "scrapedAt": "2026-09-28T22:19:17.496Z",
  "error": null
}

โœจ Why choose this Actor

  • ๐Ÿฝ Restaurants and dishes in one Actor. One row per restaurant with the menu nested, or one row per dish with the restaurant on every row.
  • ๐Ÿงฉ Modifiers and add-ons. Sizes, toppings and sides with required flags, limits and prices, on request.
  • ๐ŸŒ Any Uber Eats country. Search by address or coordinates and choose English or the local language.
  • ๐ŸŽ› The app's own filters. Rating, offers, delivery time, best overall, delivery or pickup and restaurants only.
  • ๐Ÿ”— Two ways in. Search near a place, or paste store links.
  • ๐Ÿงน Clean rows. Prices as numbers, hours in 24-hour time, no duplicated restaurants, no empty cells (missing values say Not Disclosed or N/A).

๐Ÿ“ˆ How it compares to alternatives

This Actor Typical Uber Eats scrapers
Output shapes Restaurant rows or dish rows Usually restaurant rows only
Menu modifiers Yes, on request Rarely
Filters Sort, rating, offers, under 30 min, best overall, pickup, store type Usually a search term only
Several locations and terms in one run Yes, deduplicated One at a time
Store links Yes, no location needed Varies
Ceiling About 450 restaurants per search point, the depth Uber Eats itself lists Same source

Uber Eats ranks and cuts its own result list per delivery point, so a very large city needs several search points or several terms to be covered. The Actor tells you what each row came from (searchLocation, searchTerm) so you can see coverage. Fees, ETAs and availability reflect the delivery point and the moment of the run.

๐Ÿš€ How to use

  1. Create a free Apify account with $5 credit: sign up here.
  2. Open the Actor and add one or more Locations (for example Times Square, New York or 40.7128,-74.0060).
  3. Optionally add Search terms such as pizza, sushi or a restaurant name.
  4. Choose Output rows: one row per restaurant or one row per menu item.
  5. Set Max Items and press Start. Free plans are limited to 10 items as a preview.
  6. Download the dataset as CSV, Excel, JSON or XML, or read it through the API.

Example input:

{
  "locations": ["Times Square, New York"],
  "searchTerms": ["pizza"],
  "outputMode": "restaurants",
  "maxItems": 100
}

๐Ÿ’ผ Business use cases

๐Ÿ“Š Competitor and price benchmarking

Pull every restaurant of your cuisine within a delivery zone and compare menu prices, ratings and offers side by side. Repeat weekly to see who changes prices.

๐Ÿ—บ Market and site selection

Export restaurants for several neighborhoods, then count cuisines, chains and ratings per area with the coordinates on every row.

๐Ÿ“‡ Lead generation

Build a restaurant list with address, phone, cuisine, chain flag and rating for sales outreach, POS, supplier or marketing offers.

๐Ÿค– Menu and dish datasets

Use dish rows with descriptions, prices, photos and like scores to train models, build dish search or study how the same dish is priced across cities and countries.

๐Ÿ”Œ Automating Uber Eats Scraper

Schedule the Actor on Apify and send the results wherever you work:

  • Make and Zapier: trigger a scenario when a run finishes and add the rows to your tools.
  • Slack: post a message when a competitor adds an offer.
  • Airbyte: load the dataset into your warehouse.
  • GitHub: open an issue or commit the export.
  • Google Drive and Sheets: save every run as a spreadsheet.

๐ŸŒŸ Beyond business use cases

  • Research: study food access, cuisine mix and price levels across neighborhoods and countries.
  • Personal: compare what a dish costs in every restaurant near you before you order.
  • Non-profit: map where healthy or affordable options exist in a community.
  • Experimentation: prototype a food recommender or a menu search on real data.

๐Ÿค– Ask an AI assistant about this scraper

Use the buttons on the Apify page to open this Actor in ChatGPT, Claude or Perplexity and ask how to build your input, how to read the menu structure or how to load the dataset into your stack.

โ“ Frequently Asked Questions

๐Ÿ• What does one row contain? By default, one restaurant with 42 fields and its whole menu nested inside. Switch to menu items and you get one row per dish with 30 fields.

๐Ÿ“ How do I choose where to search? Add an address, city, postcode or latitude,longitude to Locations. Uber Eats returns the restaurants that deliver to that point.

๐Ÿ”Ž Can I search for a cuisine or a brand? Yes. Add Search terms such as ramen, vegan or a restaurant name. One search runs for each location and term.

๐Ÿ”— Can I scrape specific restaurants? Yes. Paste Uber Eats store links in Store URLs. No location is needed for links.

๐Ÿงฉ What are modifiers? The options behind a dish, such as size, toppings and sides, with how many you must or may pick and the extra price. Turn on Include modifiers and add-ons. It makes one extra request per dish that has options, so it is slower.

๐ŸŒ Which countries work? Any country where Uber Eats delivers. If a point is outside the delivery area the Actor logs it and returns nothing for that point. Choose English or the local language for interface texts.

๐Ÿ’ฒ Are prices numbers? Yes. price is in major currency units (14.99) and priceFormatted keeps the text Uber Eats shows ("$14.99"). The currency code is on every row.

๐Ÿ›ต Why is the delivery fee sometimes Not Disclosed? Uber Eats only shows a fee on the store page when one applies to that delivery point and account. When it shows nothing, the Actor says so instead of guessing.

๐Ÿช Why do I only get restaurants? Uber Eats mixes shops, pharmacies and convenience stores into the same feed. Store type defaults to restaurants only. Choose All stores to keep everything.

๐Ÿ“ˆ How many restaurants can I get from one search? Uber Eats lists about 450 restaurants for one search point. For a whole city, add several locations or terms and the Actor removes duplicates.

โฑ How fast is it? About 280 restaurants with full menus in 2 minutes in our Chicago test.

๐Ÿ›ก Do I need a proxy? Uber Eats refuses plain cloud connections, so the Actor uses Apify residential proxy by default. It reads about 55 KB per restaurant with its menu. Datacenter proxy works for small runs but is blocked often, so keep residential for anything serious.

๐Ÿ”Œ Integrate with any app

Use the Apify API, webhooks and the integrations catalog to connect the dataset to Make, Zapier, Slack, Airbyte, Google Sheets, your database or your own code.

๐Ÿ”— Recommended Actors

๐Ÿ’ก Pro Tip: browse the complete ParseForge collection.

๐Ÿ†˜ Need Help? Open our contact form

โš ๏ธ Disclaimer: this Actor is an independent tool and is not affiliated with, endorsed by or sponsored by Uber Technologies, Inc. It only collects publicly available data.

What input does the Uber Eats Scraper - Restaurants, Full Menus & Modifiers accept?

FieldTypeWhat it doesDefault
startUrls array Uber Eats store links, for example https://www.ubereats.com/store/joes-pizza-times-square-1435-broadway/F9A-B2bKRg-ikAd0B8uzgg . Links from any country domain path work. not set
searchTerms array Cuisine, dish or restaurant name, for example pizza, sushi, McDonald's. One search runs per term and location. Empty means every restaurant Uber Eats lists there. ["pizza"]
locations array Street address, city, postcode or plain coordinates as latitude,longitude (for example 40.7128,-74.0060). Uber Eats returns the restaurants that deliver to that point. ["Times Square, New York"]
maxItems integer Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000 10
outputMode string (2 options) Restaurants gives one row per restaurant, with the menu nested inside. Menu items gives one row per dish, with the restaurant details repeated on every row. Max Items counts rows of the type you pick. restaurants
includeMenu boolean Nest the whole menu (categories, dishes, prices, photos, likes) inside each restaurant row. Turn it off for a faster, lighter restaurant directory. Menu items mode always reads the menu. true
includeModifiers boolean Also read every dish that has options (sizes, toppings, sides) and add its modifier groups with required flags, limits and prices. Slower, because it makes one extra request per dish. false
language string (2 options) English translates the interface texts (dining modes, hours labels, category names Uber Eats localizes). Local uses the language of the country you search in, as the Uber Eats site does there. Restaurant and dish names are always the ones the restaurant wrote. english
sortBy string (3 options) Order in which Uber Eats lists the restaurants. Recommended
minRating string (6 options) Keep only restaurants rated at least this high. not set
offersOnly boolean Keep only restaurants running an offer or promotion. false
under30Minutes boolean Keep only restaurants Uber Eats estimates to deliver in under 30 minutes. false
topEatsOnly boolean Keep only restaurants Uber Eats badges as Best overall, where the market has that badge. false
diningMode string (2 options) Delivery or pickup. Pickup changes which restaurants are listed and the ETA shown. DELIVERY
storeType string (2 options) Uber Eats mixes shops, pharmacies and convenience stores into the same feed. Restaurants only drops them; All keeps everything. restaurants
maxStoresPerSearch integer Optional cap on the restaurants read for each location and search term, so one big city does not use the whole Max Items budget. Leave empty for no cap. not set
proxyConfiguration object Residential proxy is the reliable choice. Datacenter IPs work for small runs but Uber Eats blocks them often. {"useApifyProxy":true,"apifyProxyGroups"

How much does the Uber Eats Scraper - Restaurants, Full Menus & Modifiers cost?

from $3.50 per 1,000 results

Charged forWhat it isPrice each
Result item One restaurant or one menu item delivered to the dataset $0.0035 to $0.005

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

How do I call the Uber Eats Scraper - Restaurants, Full Menus & Modifiers API?

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST ยท run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~uber-eats-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "searchTerms": [
      "pizza"
    ],
    "locations": [
      "Times Square, New York"
    ],
    "maxItems": 10,
    "outputMode": "restaurants",
    "includeMenu": true
  }'

What example inputs can I use?

Use these inputs to see how a run is configured.

input.json
{
  "searchTerms": [
    "pizza"
  ],
  "locations": [
    "Times Square, New York"
  ],
  "maxItems": 10,
  "outputMode": "restaurants",
  "includeMenu": true
}

What do users say about the Uber Eats Scraper - Restaurants, Full Menus & Modifiers?

No reviews yet. Be the first.

How do I report an issue with the Uber Eats Scraper - Restaurants, Full Menus & Modifiers?

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

What related scrapers can I use?

Run Uber Eats Scraper - Restaurants, Full Menus & Modifiers on Apify All scrapers