
TikTok Shop Scraper
scrape.ly/store/shelfbright/tiktok-shop-scraperE-commerceSocial media
1 monthly user

Scrape Uber Eats restaurants and stores near any address, by keyword or store type, or from store URLs: full menus with item prices and options, ratings, delivery fees, ETA, opening hours, phone, address and reviews.
Scrape Uber Eats restaurants, grocery and convenience stores near any address, by keyword or store type, or straight from store URLs. Every store comes with its full menu (sections, items, prices, discounts, item ratings and, if you want them, all item options), plus rating, delivery fee, ETA, opening hours, phone, address and reviews. No login, no browser, and 10 stores with full menus take only a few seconds.
pizza, sushi or a store name. Leave it empty to list all stores Uber Eats shows for the address, or pick a store type like Grocery or Pharmacy.| Field | What it does |
|---|---|
address | Address, city or postcode to search near. |
searchQueries | Keywords (dishes, cuisines, store names). Empty means all stores. |
maxStores | Stores to save per keyword (default 10). |
startUrls | Uber Eats store URLs or store UUIDs. |
storeType | Restaurants, Grocery, Convenience, Alcohol, Pharmacy, ... (used when no keyword is set). |
diningMode | DELIVERY or PICKUP. |
scrapeStoreDetails | Open each store for its menu, phone, hours, fees and reviews (default on). |
includeMenuCustomizations | Also load item options such as sizes and toppings (default off). |
excludeStores | Stores to skip. |
latitude / longitude | Exact coordinates instead of the address lookup. |
{
"address": "1600 Pennsylvania Avenue, Washington DC",
"searchQueries": ["Pizza"],
"maxStores": 10,
"startUrls": [{ "url": "https://www.ubereats.com/store/dc-pizza/7jqs2jNeR1OT-9k70p3B2w" }],
"includeMenuCustomizations": false
}
One row per store.
| Field | Description |
|---|---|
title, url, uuid, slug | Store name, link and ids |
ratingValue, ratingCount, rating | Star rating and number of ratings |
address, location, phoneNumber | Full address with coordinates, and phone |
priceBucket, cuisineList, categories | Price level and cuisines |
deliveryFee, deliveryFeeText, etaRange, etaMinutes, distance | Fees and timing for the chosen dining mode |
isOpen, workingHoursTagline, hours | Opening state and hours per day (minutes after midnight) |
menu | Sections with items: title, price, originalPrice, description, imageUrl, calories, rating, numRatings, isSoldOut, promoType, optional customizations |
menuItemCount, minItemPrice, maxItemPrice, averageItemPrice | Menu summary |
storeReviews, featuredReviews | Review text, reviewer first name and date |
parentChain, isChain, merchantType, logoUrl, heroImageUrl | Brand and images |
searchQuery, searchAddress, position, scrapedAt | Where the row came from |
{
"uuid": "ee3aacda-335e-4753-93fb-d93bd29dc1db",
"title": "DC Pizza",
"url": "https://www.ubereats.com/store/dc-pizza/7jqs2jNeR1OT-9k70p3B2w",
"phoneNumber": "+12023311800",
"ratingValue": 4.8,
"ratingCount": "2,000+",
"address": "1103 19th St Nw, Washington, DC 20036",
"location": { "city": "Washington", "region": "DC", "postalCode": "20036", "country": "US", "latitude": 38.9040182, "longitude": -77.0432506 },
"priceBucket": "$$",
"cuisineList": ["Vegetarian", "Italian", "Pizza", "Salads", "Group Friendly"],
"isOpen": true,
"workingHoursTagline": "Open until 10:00 PM",
"etaRange": "Delivered in 14 to 30 min",
"etaMinutes": { "min": 14, "max": 30 },
"deliveryFee": { "amount": 0.0, "currencyCode": "USD", "text": "$0 delivery fee (new users)" },
"distance": "0.6 mi",
"currencyCode": "USD",
"hours": [{ "dayRange": "Sunday", "sectionHours": [{ "startTime": 615, "endTime": 1260, "sectionTitle": "Online Ordering" }] }],
"menuItemCount": 41,
"minItemPrice": 1.55,
"averageItemPrice": 45.21,
"menu": [{
"title": "Wings (Oven Roasted)",
"itemCount": 3,
"items": [{
"title": "10 pc Wings (Oven Roasted)",
"description": "Dressing is always on the side. MUST Choose 2",
"price": 16.54,
"originalPrice": null,
"priceText": "$16.54",
"imageUrl": "https://tb-static.uber.com/prod/image-proc/processed_images/74abe0a444ccb2d6bae42679b0335681/c67fc65e9b4e16a553eb7574fba090f1.jpeg",
"isSoldOut": false,
"hasCustomizations": true,
"rating": "100%",
"numRatings": 7
}]
}],
"storeReviews": [{ "text": "Best pizza I've ever had.", "eaterName": "Jamie R.", "createdAt": "2021-09-05T00:00:00Z" }],
"searchQuery": "Pizza",
"position": 4,
"scrapedAt": "2026-10-15T20:49:19.729Z"
}
You pay $4.00 per 1,000 stores ($0.004 per store), each with its full menu, plus a little platform usage (compute and proxy traffic). A typical run of 1,000 stores with menus costs about $4.10 in total. Item options are included at no extra event cost; they only add a bit of proxy traffic.
Is it legal to scrape Uber Eats? The actor only reads public store pages that anyone can open without an account. Check the site's terms and your local laws for your use case, and handle any personal data (such as reviewer first names) responsibly.
Do I need an Uber Eats account or my own proxy? No. No login is used, and proxies are included. Datacenter addresses are the default; if they get blocked the run switches to residential addresses in the address's country by itself.
How many stores can I get? As many as Uber Eats lists for the address and keyword. Busy city addresses usually list several hundred stores; the run stops cleanly when the list ends and says how many there were.
Why is a field empty? Uber Eats does not show every field for every store, for example the delivery fee for closed stores or calories for most non-US items. Empty values are null.
Can I scrape stores outside the US? Yes. Enter an address in any Uber Eats country or paste store URLs with any country prefix; prices come in the local currency.
Can I schedule it or use the API? Yes. Schedule runs in the console, or start them over the API and fetch the dataset as JSON or CSV.
menuNote when that happens).Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
addressstringOptionalDelivery address
Address, city or postcode to search near, in any Uber Eats country (e.g. "1600 Pennsylvania Avenue, Washington DC" or "10 Downing Street, London"). Leave empty if you only scrape store URLs.
searchQueriesarrayOptionalSearch keywords
Optional dishes, cuisines or store names (e.g. pizza, sushi, McDonald's). Each keyword is searched near the address. Leave empty to list all stores Uber Eats shows for the address.
maxStoresintegerOptionaldefault 10Max stores per keyword
How many stores to save for each keyword (or for the all-stores list). Store URLs are always scraped.
startUrlsarrayOptionalStore URLs
Uber Eats store links such as https://www.ubereats.com/store// (any country prefix like /gb/ or /fr-en/ works) or store UUIDs.
storeTypeenumOptionaldefault "ALL"Store type
Used when no keyword is given: search one kind of store instead of the general list. Best effort, Uber Eats may still mix in other stores.
diningModeenumOptionaldefault "DELIVERY"Dining mode
Delivery or pickup. Fees and ETAs follow this mode.
excludeStoresarrayOptionalSkip stores
Store URLs, store ids (the last part of the URL) or UUIDs to skip, for example stores you already have.
latitudestringOptionalLatitude
Optional. Exact coordinates instead of the address lookup (use with longitude).
longitudestringOptionalLongitude
Optional. Use with latitude.
scrapeStoreDetailsbooleanOptionaldefault trueOpen each store (menu, fees, hours, reviews)
On: every store comes with its full menu, phone, address, hours, fees and reviews. Off: only the search-list fields (name, rating, ETA, fee badge, URL), much faster.
includeMenubooleanOptionaldefault trueInclude the menu
Add every menu section and item with prices, descriptions, images, item ratings and promotions.
includeMenuCustomizationsbooleanOptionaldefault falseInclude item options
Also load each item's options (sizes, toppings, add-ons with prices). Slower: one extra request per item that has options.
localestringOptionalLocale
Optional Uber Eats locale code such as us, gb, fr-en or mx-en. By default it follows the address country or the store URL.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter addresses are the default. Residential addresses in the address's country are used automatically if datacenter addresses get blocked.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| uuid | string | null | |
| title | string | null | |
| url | string | null | |
| ratingValue | number | null | |
| menuItemCount | number | null | |
| menu | array | null | |
| scrapedAt | string | null |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Store | One store saved with its menu, fees, hours, ratings and reviews. | $0.004 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('shelfbright/uber-eats-scraper').call({
"address": "1600 Pennsylvania Avenue, Washington DC",
"searchQueries": [
"Pizza"
],
"maxStores": 10,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run shelfbright/uber-eats-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=shelfbright/uber-eats-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Stores near an address with details and menus.
Restaurants only, with menus and store details.
Full menus including item customizations.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.