Uber Eats Scraper

Every restaurant on an Uber Eats page,
as rows.

Paste a city or category listing URL and get every restaurant on it back as rows: the name, its cuisines, the rating and review figure, the price band, a five-part address, an E.164 phone number, and links to the store and its image. Point it at one store instead and you get that single row.

one-time 500 free rows$0.002 per row after14 columnsCSV · XLSX · JSON
How it works

A listing page in,
its restaurants out.

Browse Uber Eats the way a customer would - a city, or a cuisine within a city - then hand us the address from the bar.

  1. STEP 1Sign in to the platform.
  2. STEP 2Open the Uber Eats Scraper.
  3. STEP 3Paste Uber Eats city, category or store URLs, one per line - or upload a CSV, XLSX, TXT or Parquet file.
  4. STEP 4Set a limit per query, or leave it at zero to take everything.
  5. STEP 5Choose your output format.
  6. STEP 6Click Get Data.

One row per restaurant, tagged with the query it came from and numbered in the order Uber Eats listed it. No residential proxy needed - the run goes through our shared pool.

Why teams use it

A delivery market
you can actually sort.

A city URL returns the whole city

Three input shapes, and two of them fan out: a city listing or a category-within-a-city listing returns every restaurant on it, while a store URL returns one. That is the difference between reading a market and reading a card.

The address arrives in five parts

Street, city, region, postcode and country come as five columns rather than one line to parse - and the phone number arrives in E.164, with a leading plus and no punctuation. Both are ready to load without cleaning.

The listing order survives

Rows arrive numbered in the order Uber Eats served them, so what the platform pushed to the top of a city is recoverable after the fact. That ranking is the part a manual copy-paste always loses.

What you get back

Fourteen columns,
one row per restaurant.

What an Uber Eats listing carries about a restaurant: who it is, what it cooks, how it scores, roughly what it costs, where it is and how to reach it.

Two of these columns behave in ways worth knowing before you build on them, so they are called out in the table rather than left for you to trip over. reviews is a display figure, not an exact count. Small restaurants come back with what look like real numbers, but past about a hundred the values arrive rounded - there is nothing between 1000 and 1500, or between 1500 and 2000. Summing that column, or averaging it, treats a rounded band as a measurement.

And price_range is not a reliable currency indicator. It arrives as one or two repeated currency symbols, but the symbol does not track the country column: restaurants with US addresses in Oklahoma came back carrying £ and as well as $. Read it as a coarse price band if you use it at all, and never derive a currency from it.

Everything else is more straightforward. Every field is a string except position, so cast rating before you sort - and note that it is not zero-padded, so 4 and 4.2 both appear. cuisines is a comma-separated list inside one cell, and phone arrives in E.164 with a leading plus.

Data dictionary

Fourteen columns in the file,
fifteen in the JSON.

The export's header row, in order. Where a field is marked optional below, that describes what a restaurant published on its Uber Eats listing - not the scrape.

query
The Uber Eats URL you submitted, repeated on every row that came from it. A city or category URL produces many rows; a store URL produces one.
name
The restaurant name, as Uber Eats lists it. Often carries a branch suffix, as in Famous Cajun/Chinese Grill - Memorial Rd.
cuisines
The cuisine tags Uber Eats files the restaurant under, as a comma-separated list in one cell - Chinese, Asian, Asian Fusion. Split on the comma if you want to group by a single tag.
rating
The star rating, as a string. Not zero-padded: 4 and 4.2 both occur, so cast before you sort or compare.
reviews
The review figure Uber Eats shows. Treat it as a display band, not a count - past roughly a hundred the values arrive rounded, so summing or averaging this column is misleading. See the note below.
price_range
A price band, as one or two repeated currency symbols. The symbol is not a reliable currency: US-addressed rows came back with £ and as well as $. Optional - some listings carry none.
address
The street line of the restaurant's address.
city
The city or town.
region
The state or region code - OK, TX in our runs.
postcode
The postal code.
country
A two-letter country code for the restaurant's address.
phone
The contact number in E.164 - a leading plus followed by digits, with no spaces or punctuation. Ready to dial or to load without cleaning.
url
Link to the store on Uber Eats. This is also accepted as input, so a city run gives you the URLs to pull individual restaurants later.
image
The restaurant's header image, on Uber's image CDN.
position
1-based rank within the query, in the order Uber Eats listed the restaurant. JSON only - the CSV and XLSX exports stop at fourteen columns.

Two traps, both easy to avoid once you know. reviews is a display figure rather than an exact count - past roughly a hundred it arrives rounded, so a sum or an average over that column is measuring Uber Eats' rounding, not its restaurants. And price_range is a band, not a currency: the symbol does not track country, and US-addressed rows came back with £ and alongside $. Beyond that, every field is a string except position, which exists only in the JSON, so a CSV or XLSX export has fourteen columns rather than fifteen. rating is not zero-padded, cuisines is a comma-separated list in one cell, and phone is E.164.

What it accepts

A city, a cuisine,
or a single store.

Three shapes of Uber Eats URL, and two of them return the whole listing. All three come back in the same fourteen columns, one row per restaurant - and none of them needs a residential proxy.

ubereats.com/city/<city> ubereats.com/category/<city>/<cuisine> ubereats.com/store/<slug>/<id> Paste one per line CSV · XLSX · TXT · Parquet upload Limit per query One row per restaurant No residential proxy needed
Common workflows

Three jobs people
most often run here.

A few examples of what a delivery listing is worth once it is a table rather than an endless scroll.

Market mapping

Map a city, then a cuisine within it

Start with the city URL to see everyone who delivers, then narrow to a category URL for the cuisine you care about. The five-part address means you can cut the result by postcode without writing a parser.

Expansion · Market research
Ranking

See what Uber Eats pushes to the top

Rows come numbered in listing order, so you can keep the ranking alongside the rating and the price band. Re-run the same city later and the movement is the interesting part - not the snapshot.

Competitive · Visibility
Lead building

Turn a city into a call list

Name, five-part address and an E.164 phone number arrive as their own columns, so a listing becomes a contactable list without cleaning. If you sell to restaurants - packaging, POS, ingredients - that is the shape you want.

Sales · Prospecting
Pricing

Pay only for the restaurants
you actually pull.

No subscription, no minimum, no recurring bill. Your first 500 rows are on us - after that, pay-as-you-go at the same flat rate as every other scraper here.

Free tier

500 free rows - $0

Every new account, one-time. No credit card required. Per-query limits, file upload and every export format included.

$0 forever
Pay-as-you-go

$0.002 per row, after the free tier

Roughly $2 per 1,000 restaurants. The pre-flight estimator shows the row count and credit cost before a run starts - no surprise bills, no compute units to translate.

Most popular
Volume

Custom · high volume

Volume pricing, dedicated workers and an SLA for mapping many cities on a schedule. Tell us your numbers and we will quote.

Talk to us
10% off your first paid run.Use code LIVESCRAPER10 at checkout.
Sign up
Pairs well with

The same street,
on the other platforms.

One platform is one slice of a delivery market. These three widen it.

The legal bit

Is it legal to scrape
Uber Eats?

Short answer: these listings are public business information - which makes this one of the more straightforward pages on the site.

Everything collected here is shown on a public Uber Eats page to any visitor, signed in or not: the restaurant name, its cuisines, the rating and review figure, the price band, the address, the phone number and the header image. No login, no paywall, nothing behind an account, and no residential proxy required.

This export is about businesses, not people. There are no customer names, no review text, no order histories and no columns for any of them - the restaurant's phone number and address are the contact details it publishes precisely so customers can use them. That keeps this materially lighter on data-protection obligations than a reviews export. If you load these rows into a CRM for outreach, ordinary marketing rules still apply.

As always, Uber's own terms govern automated collection from their site - read them before you scale rather than relying on the fact that the pages are public. We run no third-party trackers on the data layer, and your exports auto-delete after 30 days.

livescraper.app · principles
Public listing pages only
No logins, no accounts touched
Business details, not customer data
No residential proxy required
Exports auto-delete (30 days)
Check Uber's own terms before scaling.
Common questions

Things people
ask before signing up.

The questions we hear most. Anything else? Talk to us - humans, not bots, write the answers.

How do I scrape Uber Eats?+
Using the Uber Eats Scraper: Sign in to the platform. Open the Uber Eats Scraper. Paste Uber Eats city, category or store URLs, one per line - or upload a CSV, XLSX, TXT or Parquet file. Set a limit per query, or leave it at zero to take everything. Choose your output format. Click Get Data.
What can I use as input?+
Three shapes of Uber Eats URL. A city listing and a category-within-a-city listing both return every restaurant on the page; a store URL returns that one restaurant. Paste them one per line or upload a CSV, XLSX, TXT or Parquet file - you can mix all three in the same run, and the url column that comes back is itself valid input.
Why are the review numbers so round?+
Because Uber Eats displays a rounded figure rather than an exact count, and the export carries what the page shows. Small restaurants come back with what look like real numbers, but past about a hundred the values arrive in bands - there is nothing between 1000 and 1500, or between 1500 and 2000. Treat the column as a size indicator, not a measurement: summing it or averaging it is measuring the rounding. If you need an exact count, cross-check against a source that publishes one.
Can I use price_range to work out the currency?+
No, and this is worth knowing before you build on it. The column arrives as one or two repeated currency symbols, but the symbol does not track the country column - restaurants with US addresses in Oklahoma came back carrying £ and € as well as $. Read it as a coarse price band if you use it at all, and take the currency from the country column or from the address instead.
Do I need a residential proxy?+
No. The run goes through our shared proxy pool and never your real IP, and that is enough for Uber Eats. This is a genuine difference from our Deliveroo scrapers, which sit behind Cloudflare and do need a residential exit for live results.
How many columns do I get?+
Fourteen in the file and fifteen in the JSON, which adds position - the 1-based rank within the query, in the order Uber Eats listed the restaurant. Everything is a string except position, so cast rating and reviews before you sort or compare them. Note that rating is not zero-padded: 4 and 4.2 both occur.
Does it return the menu or dish prices?+
No. The export describes the restaurant as the listing presents it - including a coarse price band for the restaurant as a whole - but there is no dish, no menu item and no individual price anywhere in it, and no column for one.
How much does it cost?+
The first 500 rows are free and one-time, with no credit card. After that it is $0.002 per row - about $2 per 1,000 restaurants - which is the same flat rate as every other scraper on the platform. The estimator shows the cost of a run before it starts.

Turn a delivery city
into a table you can sort.

Your first 500 rows are free - no card, no subscription. After that it is $0.002 per row, flat.

Activates instantly · no card required

Scrape Uber Eats restaurants

An Uber Eats city page is a delivery market in a scroll: every restaurant that delivers to an area, with its cuisines, its rating, its price band and its address, shown a card at a time. The Uber Eats Scraper turns that page into rows. You submit a city URL, a category-within-a-city URL or a single store URL - one per line, or as a CSV, XLSX, TXT or Parquet upload - and each restaurant comes back as a record with the name, a comma-separated cuisine list, the rating and review figure, the price band, a five-part address, an E.164 phone number and links to the store and its image. Fourteen columns in the file, fifteen in the JSON, one row per restaurant.

Two of those columns need a word of warning, and it is better said here than discovered halfway through an analysis. reviews is a display figure rather than an exact count: past roughly a hundred the values arrive rounded, with nothing between 1000 and 1500 or between 1500 and 2000, so summing or averaging that column measures Uber Eats' rounding rather than its restaurants. And price_range is not a currency - it arrives as one or two repeated symbols, and US-addressed rows came back carrying £ and alongside $, so the symbol does not track the country column.

The rest is straightforward and ready to load. Every field is a string except position, so cast rating before sorting and note that it is not zero-padded - 4 and 4.2 both occur. The address arrives split into street, city, region, postcode and country, which is what makes a postcode-level view of a delivery market a sort rather than a parsing job, and the phone number arrives in E.164 with a leading plus and no punctuation. Rows are numbered in listing order, so what the platform pushed to the top of a city survives into the spreadsheet.

Unlike our Deliveroo scrapers, this one needs no residential proxy - the shared pool is enough. Start free: your first 500 rows cost nothing and need no credit card, and after that it is $0.002 per row, flat.