DoorDash Grocery & Retail Scraper — Prices, Deals, Stock, UPC avatar

DoorDash Grocery & Retail Scraper — Prices, Deals, Stock, UPC

Pricing

$1.50 / 1,000 product rows

Go to Apify Store
DoorDash Grocery & Retail Scraper — Prices, Deals, Stock, UPC

DoorDash Grocery & Retail Scraper — Prices, Deals, Stock, UPC

Scrape full product catalogs of DoorDash grocery, convenience, pharmacy, alcohol, pet and retail stores: price, regular vs sale price, % off, stock status, verified UPC/GTIN, size, category, image. Whole stores or every store of a chain in a region (US, Canada, Australia, NZ). No login.

Pricing

$1.50 / 1,000 product rows

Rating

0.0

(0)

Developer

Yugenox Corp

Yugenox Corp

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

12 days ago

Last modified

Share

DoorDash Grocery & Retail Product Scraper

Scrape the full product catalog of any DoorDash grocery, convenience, pharmacy, alcohol, pet, beauty or retail store: price, regular vs. sale price, % off, stock status, UPC / GTIN, pack size, category, description and image for every product.

Point it at a store link and get the whole shelf (a 45,000-product Walmart in about 3 minutes), or let it find every store of a chain in a region — "every Shoppers Drug Mart in Ontario", "all 7-Elevens in California" — for store-to-store price comparison. No DoorDash account needed.

What you get

One row per product per store:

FieldExampleNotes
name, sizeDoritos Sweet Chili Heat Tortilla Chips (235 g), 235 gsize parsed from the listing
price, priceText, currency5.98, CA$5.98, CADcurrent shelf price on DoorDash
regularPrice, isOnSale, discountPct10.97, true, 45struck-through regular price when on sale
stockStatus, stockBadge, isOutOfStockIN_STOCK, Many in stockIN_STOCK / LOW_STOCK / OUT_OF_STOCK, or empty when the store shows no stock info
gtin060410054420UPC-A / EAN-13, only when the retailer's SKU really is one (check digit verified)
merchantSku060410054420the retailer's own product code (UPC for many chains, internal SKU for others)
unitPriceText, priceUnit, purchaseType, approxWeightCA$4.20/kg, /ea, EACH_PRICED_BY_WEIGHT, Approx 0.11 kg eachproduce, deli and meat sold by weight
category, categoryIdSnacks, 758the store aisle the product was found in
description, imageUrl, badges…, image link, ["Value size"]
storeId, storeName, storeAddress, city, country, businessNameon every row, so multi-store datasets are ready to pivot
itemId, ddSic, menuId, scrapedAtstable ids for tracking prices over time

Plus, optionally, one summary row per store (dataType: "store"): address, rating, all categories, how many products the store lists vs. how many were collected (completenessPct), on-sale and out-of-stock counts, and any category that could not be read.

How to use it

A whole store — paste the store link from your browser:

{ "storeUrls": ["https://www.doordash.com/en-CA/convenience/store/dollarama-oakville-24915989/"] }

Only some aisles — add category names (or paste a category link):

{ "storeUrls": ["https://www.doordash.com/convenience/store/7-eleven-los-angeles-24954368/"], "categories": ["Drinks", "Snacks"] }

Every store of a chain in a region:

{ "brands": ["Shoppers Drug Mart"], "regions": ["Ontario"], "cities": ["Toronto", "North York"], "maxStores": 50, "categories": ["Personal Care"] }

Deals and product tracking across stores:

{ "brands": ["Walmart"], "regions": ["ON"], "maxStores": 20, "onlyOnSale": true, "keywords": ["coca-cola", "pepsi"] }

Input options

  • Store URLs or IDs — store links (any language/country version), category links, or numeric store ids.
  • Brands / Regions / Cities — find stores for you. Regions are state/province codes or names (ON, Ontario, NY, California) or Canada / USA. Brands must match the store name on DoorDash.
  • Max stores found by brand / region — default 10.
  • Categories — store aisles to include (empty = whole store).
  • Keywords — keep products whose name contains any of the words.
  • Only products on sale, Skip out-of-stock products.
  • Max products per store, Max products in total.
  • Include product descriptions, Add one summary row per store.
  • Proxy — datacenter by default; the Actor switches to residential automatically if it is rate-limited and your Apify plan includes residential proxies.

Common alternative names are accepted too (startUrls, url, storeIds, brand, state, city, category, keyword, maxResults, limit, maxProductsPerStore…), so an input written for another tool usually just works.

What happens when things go wrong

The run always finishes with a status message that says what it got. If DoorDash rate-limits or blocks, the Actor retries on fresh IPs, moves to residential proxies (or, if your plan has none, slows down and waits the rate limit out), and if that fails too it stops early with everything collected so far (Partial — …). If the run hits its time limit, everything already fetched is saved. A category that could not be read is listed in the store summary row (categoriesFailed) and lowers completenessPct, so a partial catalog never looks complete. You are only ever charged for product rows that are in your dataset.

Output example

{
"dataType": "product",
"storeId": "31135053",
"storeName": "Walmart",
"itemId": "19624445413",
"name": "Janes Pub Style Chicken Burgers (700 g)",
"size": "700 g",
"price": 5.98,
"priceText": "CA$5.98",
"currency": "CAD",
"regularPrice": 10.97,
"regularPriceText": "CA$10.97",
"isOnSale": true,
"discountPct": 45,
"stockStatus": "IN_STOCK",
"stockBadge": "Many in stock",
"isOutOfStock": false,
"badges": ["45% off"],
"merchantSku": "6000199788985",
"gtin": null,
"description": "Janes Pub Style Chicken burgers are fully cooked and breaded, made with white meat…",
"imageUrl": "https://img.cdn4dd.com/cdn-cgi/image/fit=contain,width=1200,height=672,format=auto/https://doordash-static.s3.amazonaws.com/media/photosV2/5702ac90-8899-4bec-a900-06c3379deddf-retina-large.jpg",
"purchaseType": "UNIT",
"soldByWeight": false,
"category": "Meat",
"storeAddress": "2525 St Clair Ave W, Toronto ON M6N 4Z5, Canada",
"city": "Toronto",
"country": "CA",
"businessName": "Walmart",
"storeUrl": "https://www.doordash.com/convenience/store/31135053/",
"scrapedAt": "2026-09-24T09:00:01.678Z"
}

Store summary row:

{
"dataType": "store",
"storeName": "Walmart",
"status": "complete",
"completenessPct": 100,
"itemsListed": 45308,
"uniqueItemsFound": 45299,
"itemsSaved": 45299,
"onSaleCount": 4238,
"outOfStockCount": 44,
"categoriesTotal": 39,
"categoriesCrawled": 39,
"categoriesFailed": [],
"storeAddress": "2525 St Clair Ave W, Toronto ON M6N 4Z5, Canada",
"rating": 4.6,
"ratingCount": 3475
}

Use cases

  • Price monitoring & MAP / price-parity checks — track what a brand's products sell for at every Shoppers, Walmart, 7-Eleven or Safeway on DoorDash.
  • Promotion intelligence — which products are on sale, how deep the discount is, and where.
  • Assortment & availability — which products each store carries, and what is out of stock.
  • Product matching — gtin joins DoorDash listings with your own catalog, other retailers or other marketplaces.
  • Retail & grocery research — dollar-store, pharmacy and convenience pricing across cities, provinces and states.

FAQ

Which stores work? DoorDash's retail storefronts — grocery (Walmart, Safeway, Fred Meyer, Metro, Sobeys, FreshCo, No Frills, Food Basics…), convenience (7-Eleven, Circle K…), pharmacy (Shoppers Drug Mart, Walgreens, Rexall, Chemist Warehouse…), alcohol (LCBO, Wine Rack, The Beer Store…), pet (PetSmart, Pet Valu…), dollar stores (Dollarama, Dollar Tree, Dollar General), office, beauty and hardware — in the US, Canada, Australia and New Zealand. Restaurant menus are not a product catalog; use a DoorDash restaurant scraper for those.

How many products per store, and how fast? Everything the store lists on DoorDash — from a few hundred at a convenience store to 45,000+ at a large Walmart. A convenience store takes seconds; a 45,000-product supercenter about 3 minutes.

Why is gtin empty for some stores? Some retailers list products under their own internal codes instead of UPCs (Walmart Canada, Safeway, 7-Eleven, Walgreens, LCBO). The Actor verifies every code and only fills gtin with genuine UPC / EAN numbers; the retailer's code is always in merchantSku.

Are these the in-store prices? They are the prices DoorDash shows to any visitor for that store. They can differ from shelf prices in the physical store, and member / loyalty prices are only flagged (hasLoyaltyPrice) when DoorDash shows them.

What does completenessPct mean? The share of the products the store says it lists that were collected. If a category could not be read even after retries, it is named in categoriesFailed and completeness is reduced accordingly — nothing is dropped silently.

The brand search finds fewer stores than I expected. It uses DoorDash's published store lists, which are incomplete for a few regions. You can always add any store directly by its link or id.

Do I need a DoorDash account or cookies? No.

Do I need residential proxies? No, but they help with big runs. The default datacenter proxy works, and DoorDash rate-limits it on large stores, so the Actor switches to residential proxies on its own if your Apify plan includes them. If it doesn't, the Actor stays on datacenter IPs at a slower, steadier pace, waits out rate limits and retries failed categories a second time, and the run's status message tells you if anything was still missed and what to change.

Is it legal to scrape DoorDash? This Actor collects only public data: the store details and product listings (names, prices, stock, product codes, images) that DoorDash shows to any visitor without signing in. Scraping publicly available data is generally legal, but how you use the results is up to you: follow the laws that apply to you, such as GDPR, PIPEDA and CCPA, and DoorDash's terms, and check with a lawyer if you are unsure about your use case. Apify's guide Is web scraping legal? is a good starting point.

Does it access any private data? No. It reads only the public store and product pages any visitor can open: store name, address and rating, and the products the store lists. It never signs in, uses no DoorDash account or cookies, and collects nothing about customers, orders, Dashers or payments.

How much does it cost? You pay per product row saved to your dataset. Store summary rows are free, and rows removed by your filters (on sale only, in stock only, keywords) are never charged. If a run stops early, you pay only for the products that were delivered.