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

Scrape DoorDash stores near any US address by keyword or cuisine, or from store URLs: full menus with prices, ratings, delivery fees, ETAs, opening hours, phone, address and customer reviews.
Scrape DoorDash restaurants and stores near any address: search by dish, cuisine or store name, or paste store links, and get each store's full menu with prices, rating breakdown, delivery fee, ETA, opening hours, phone, address and featured customer reviews. No login, no browser, results in seconds.
350 5th Ave, New York, NY 10118).pizza, sushi, burgers, Chipotle), and/or paste store URLs.| Field | Description |
|---|---|
address | Delivery address the search, fees and ETAs follow (US, Canada, Australia, New Zealand). |
searchQueries | Keywords, dishes, cuisines or store names. One search per keyword. |
maxStores | Stores to save per keyword (default 10). |
startUrls | Store links (/store/joes-pizza-new-york-145565/, or just 145565) and search links (/search/store/sushi/). |
includeMenu | Add the full menu and featured items (default on). |
scrapeStoreDetails | Off = only the search-list fields, faster and lighter. |
fulfillment | DELIVERY or PICKUP view of the store page. |
includeReviews / maxReviewsPerStore | Save the featured reviews (up to 5 per store) as separate rows. |
{
"address": "350 5th Ave, New York, NY 10118",
"searchQueries": ["pizza", "sushi"],
"maxStores": 50,
"startUrls": [{ "url": "https://www.doordash.com/store/joes-pizza-new-york-145565/" }],
"includeMenu": true,
"includeReviews": true
}
Each store is one row (recordType: "store"). With reviews on, each review is an extra row (recordType: "review").
| Field | Description |
|---|---|
storeId, name, url | DoorDash store id, name and link |
cuisines, description, priceRangeText | Cuisine tags and price level ($ to $$$$) |
rating, ratingCount, reviewCount, starsDistribution | Rating summary and 1–5 star counts |
deliveryFeeText, deliveryFee, deliveryTimeText, distance | Fee, ETA and distance for your address |
isOpen, statusText, hours, doordashHours | Open status and weekly opening hours |
phone, website, address, city, state, latitude, longitude | Contact and location |
isDashPassPartner, offersPickup, offersGroupOrder, offersScheduling | Service flags |
menu, featuredItems, menuItemCount, minItemPrice, averageItemPrice | Menu categories and items, plus price stats |
searchQuery, searchAddress, position | Which search found the store and where it ranked |
Store row (menu trimmed):
{
"recordType": "store",
"storeId": "145565",
"name": "Joe's Pizza",
"url": "https://www.doordash.com/store/145565/",
"cuisines": ["Italian", "Pizzeria", "Pizza", "Salads"],
"rating": 4.5,
"ratingCount": 16793,
"reviewCount": 262,
"starsDistribution": { "1": 837, "2": 458, "3": 660, "4": 1773, "5": 12769 },
"priceRangeText": "$",
"deliveryFeeText": "$0 delivery fee",
"deliveryTimeText": "27 min",
"distance": "1.1 mi",
"isOpen": true,
"statusText": "Accepting DoorDash orders until 3:25 AM",
"isDashPassPartner": true,
"phone": "+16465594878",
"address": "Joe's Pizza, 1435 Broadway, New York, NY 10018",
"latitude": 40.753968,
"longitude": -73.986896,
"hours": { "Monday": ["10 AM - 2:45 AM"], "Friday": ["10 AM - 4:45 AM"] },
"menuItemCount": 24,
"minItemPrice": 3.5,
"averageItemPrice": 22.69,
"menu": [
{
"category": "Whole Pies",
"items": [
{
"id": "2762157",
"name": "Pepperoni Pie",
"description": "Joe's pepperoni pie.",
"price": 34,
"priceText": "$34.00",
"ratingPercent": 87,
"ratingCount": 962,
"badges": ["#1 Most liked"]
}
]
}
],
"searchQuery": "pizza",
"searchAddress": "350 5th Ave, New York, NY 10118, USA",
"position": 1
}
Review row:
{
"recordType": "review",
"storeId": "145565",
"storeName": "Joe's Pizza",
"rating": 5,
"text": "Huge slices, still hot on arrival. Will order again.",
"date": "2026-05-09T09:27:44.918Z",
"reviewerName": "Jane D",
"reviewerContributions": "3 contributions",
"isVerifiedOrder": true,
"itemsMentioned": ["Plain Cheese Pie"],
"ratingLabel": "Loved"
}
You pay per result: $5.00 per 1,000 stores and $0.80 per 1,000 reviews, plus a small amount of platform usage (compute and proxy traffic, about $0.05 to $0.10 per 1,000 stores in our tests). Example: 1,000 stores with full menus cost about $5.10 in total. Reviews are only charged when you switch them on.
Is scraping DoorDash legal? The actor only reads public store pages that anyone can open without an account. Check that your use of the data respects DoorDash's terms and local law, especially for personal data in reviews.
Do I need a DoorDash account or my own proxy? No. No login and no cookies are needed, and proxies are included (datacenter by default, US residential fallback if needed).
How many stores can I get? DoorDash returns up to a few hundred stores per keyword and address. Use several keywords or addresses to cover a whole city.
Why are some fields empty? DoorDash leaves fields out when a store doesn't publish them (website, item photos, ratings for new stores). Grocery and retail stores show no menu items because their catalogs are not included.
Can I schedule it or use the API? Yes. Schedule runs in the console, or start runs and read datasets through the API and integrations.
Why only 5 reviews per store? DoorDash shows logged-out visitors 5 featured reviews per store; the full review list needs a signed-in account, which this actor does not use.
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
Street address to search near (US, Canada, Australia or New Zealand), e.g. "350 5th Ave, New York, NY 10118". A full street address works best. Fees, ETAs and which stores you get follow this address.
searchQueriesarrayOptionalKeywords or cuisines
Dishes, cuisines or store names to search near the address, e.g. pizza, sushi, burgers, Chipotle. Each keyword is one search.
maxStoresintegerOptionaldefault 10Max stores per keyword
How many stores to save for each keyword. Store URLs are always scraped.
startUrlsarrayOptionalStore or search URLs
DoorDash store links such as https://www.doordash.com/store/joes-pizza-new-york-145565/ (or just the store id), and search links such as https://www.doordash.com/search/store/sushi/.
includeMenubooleanOptionaldefault trueInclude the full menu
Add every menu category and item with price, description, image, item rating and badges, plus the featured items.
scrapeStoreDetailsbooleanOptionaldefault trueOpen each store
On: every store comes with menu, phone, address, opening hours, rating breakdown and fees. Off: only the search-list fields (name, rating, fee, ETA, distance, URL), much faster.
fulfillmentenumOptionaldefault "DELIVERY"Delivery or pickup
Which store page view to read. Search fees and ETAs always follow the address.
includeReviewsbooleanOptionaldefault falseSave customer reviews
Also save the customer reviews DoorDash shows on each store page as separate rows (rating, text, date, reviewer first name and initial, items mentioned). Charged per review.
maxReviewsPerStoreintegerOptionaldefault 5Max reviews per store
Up to 5: DoorDash shows logged-out visitors the 5 featured reviews of each store.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter addresses are the default. US residential addresses 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 |
|---|---|---|
| headerImageUrl | any | Image |
| name | any | Store |
| rating | any | Rating |
| ratingCount | any | Ratings |
| priceRangeText | any | Price |
| cuisines | any | Cuisines |
| deliveryFeeText | any | Delivery fee |
| deliveryTimeText | any | ETA |
| distance | any | Distance |
| isOpen | any | Open |
| menuItemCount | any | Menu items |
| minItemPrice | any | Cheapest item |
| averageItemPrice | any | Average item |
| phone | any | Phone |
| address | any | Address |
| searchQuery | any | Query |
| position | any | Position |
| url | any | Store URL |
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 |
|---|---|---|
| Review | One customer review saved (only when reviews are switched on). | $0.0008 |
| Store | One store saved with its menu, prices, fees, hours, address and rating summary. | $0.005 |
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/doordash-scraper').call({
"address": "350 5th Ave, New York, NY 10118",
"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/doordash-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/doordash-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 with menus and 5 reviews each.
Store details, menus and reviews.
Stores offering pickup, with menus.
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.