DoorDash Scraper avatar

DoorDash Scraper

Pricing

from $1.20 / 1,000 products

Go to Apify Store
DoorDash Scraper

DoorDash Scraper

Delivers structured DoorDash store, menu, product, collection, and deal records for a delivery location, queried by search term, store URL, or collection URL.

Pricing

from $1.20 / 1,000 products

Rating

0.0

(0)

Developer

Farhan Ali

Farhan Ali

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

21 hours ago

Last modified

Categories

Share

DoorDash Scraper creates a structured dataset of DoorDash store, menu, product, collection, and deal records for a US delivery location. Each dataset item can include the item or store name, price, description, category, rating, merchant identifiers, and the resolved delivery location. Query the source using a search term, a DoorDash store or collection URL, or both, control the result limit with maxItems, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, or XML.

Dataset at a glance

PropertyValue
Sourcedoordash.com
Record unitOne store, menu/retail product, product detail, store collection, or deal item
Input methodsDelivery location, search queries, DoorDash start URLs
Main identifiersstoreId, productId, collectionId, url
DeliveryApify Dataset and API
Export formatsJSON, CSV, Excel, XML
Update modelFresh records per Actor run
PricingPay per event, from $1.50 per 1,000 events

Coverage and available records

The Actor resolves records for the delivery location you supply (address, city, or postal code) and returns the following record types, controlled by the extraction toggles:

  • Products (scrapeProducts) — menu items and retail/grocery products. scrapeProductDetails switches to a fuller product payload.
  • Store information (scrapeStoreDetails) — store address, ratings, hours-related flags, and delivery/pickup options.
  • Store collections (scrapeStoreCollections) — menu categories and grocery/retail collections. Collection URLs always extract the opened collection.
  • Deals (scrapeDeals) — featured deal products from the grocery and retail deal surfaces at the delivery location.

Location-specific availability means prices and search results are tied to the resolved delivery pin. A US residential proxy is used by default; results are not currently collected for non-US delivery locations.

Data dictionary

FieldTypeNullableDescriptionExample
recordTypestringNoproduct, product-details, store, or store-collection; drives pay-per-event billingproduct
namestringNoMenu item, product, store, or collection titleBig Mac
descriptionstringYesItem description when exposedTwo beef patties...
pricestringYesLocalized price string$5.99
storeNamestringYesMerchant name for the recordMcDonald's
storeIdstringYesDoorDash store identifier24508264
productIdstringYesProduct identifier104892...
collectionIdstringYesCollection identifier12345
categorystringYesMenu category or retail collection nameBurgers
ratingstringYesItem- or store-level rating text when exposed4.6 (1.2k)
urlstringYesCanonical DoorDash link for the recordhttps://www.doordash.com/...
imageUrlstringYesProduct or store imagehttps://...
searchQuerystringYesSearch term that discovered the recordMcDonald's
sourceQuerystringYesSource query contextMcDonald's
sourcestringYesHow the record was discovered (search, URL type)search

Store records (recordType: store) additionally include address, phone, website, DashPass flags, delivery/pickup options, and business tags. Collection records describe menu categories or retail aisles.

Example dataset record

{
"recordType": "product",
"name": "Big Mac",
"price": "$5.99",
"storeName": "McDonald's",
"storeId": "24508264",
"productId": "1048928277",
"category": "Burgers",
"url": "https://www.doordash.com/store/24508264",
"imageUrl": "https://img.cdn4dd.com/...",
"searchQuery": "McDonald's",
"source": "search"
}

The record above was produced by the input in the next section: a delivery location of 72076 with the search query McDonald's.

Query and input reference

InputTypeRequiredDefaultAccepted valuesDescription
locationstringYes—Any address, city, or postal codeDoorDash drop-off location used to resolve search, availability, and prices
searchQueriesarrayNo—List of search termsCuisine, store name, or item searches
startUrlsarrayNo—DoorDash URLsSearch, store, collection, grocery/retail tab, or product URLs
scrapeProductsbooleanNotruetrue / falseExtract menu and retail products
scrapeProductDetailsbooleanNofalsetrue / falseFuller product payload; charges product-details instead of product
scrapeStoreDetailsbooleanNofalsetrue / falsePush store information records
scrapeStoreCollectionsbooleanNofalsetrue / falsePush category/collection records
scrapeDealsbooleanNofalsetrue / falseExtract featured deal products
maxItemsintegerNo00 = unlimitedMaximum records across all types
proxyConfigurationobjectNoUS residentialApify proxy settingsProxy configuration for the run

Minimal request:

{
"location": "72076",
"searchQueries": ["McDonald's"]
}

Advanced request:

{
"location": "72076",
"searchQueries": ["McDonald's"],
"maxItems": 200,
"scrapeProducts": true,
"scrapeStoreDetails": true,
"scrapeStoreCollections": true,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}

Retrieve the data through the API

  1. Start the Actor with a JSON input containing at least a location.
  2. Wait for the run to finish, or use the synchronous dataset endpoint for smaller jobs.
  3. Read records from the run's default dataset.
  4. Paginate or export the dataset.
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("datascrapers/doordash-scraper").call(
run_input={
"location": "72076",
"searchQueries": ["McDonald's"],
"maxItems": 8,
"scrapeProducts": True,
}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["recordType"], item["name"], item.get("price"))

Apify's generated API tab documents the equivalent calls for other languages.

Data quality and record handling

  • Completeness — fields such as description, price, rating, category, and imageUrl are conditional on what the source exposes for a given record and location.
  • Record-type-specific fields — store and collection records carry fields not present on product records.
  • Deduplication — the Actor does not deduplicate across runs; within a run, a product should appear once per discovery path.
  • Recommended dedup key — combine productId, storeId, and the resolved postal code for recurring monitoring.
  • Retry/error behavior — records that cannot be resolved are skipped; the run continues.
  • Normalization — prices are localized strings; identifiers are passed through as source values.

Export and pipeline examples

DestinationRecommended methodTypical use
PostgreSQL/SupabaseDataset API or webhook consumerPrice history and menu intelligence
Google SheetsApify integrationCompetitive menu tracking
S3/cloud storageScheduled export or integrationArchival snapshots per location

Pricing and cost examples

Billing is pay per event: each dataset record pushed is one charge, and each event type is priced the same. Platform compute is included in the actor usage fee.

EventWhat countsPrice (no plan discount)
productStandard menu or retail product listing$1.50 / 1,000
product-detailsFuller product payload$1.50 / 1,000
storeStore profile record$1.50 / 1,000
store-collectionMenu category or retail collection$1.50 / 1,000
RecordsEstimated base cost
1,000$1.50
10,000$15.00
100,000$150.00

Apify plan discounts reduce the per-event rate (for example Gold plans pay about $1.20 per 1,000 events). Estimates depend on the verified pricing model and the extraction toggles you enable.

Limitations and responsible data use

  • Only publicly accessible DoorDash data is returned.
  • Availability and pricing are location-specific and tied to the delivery pin you provide.
  • Fields may be missing or conditional depending on the store, record type, and region.
  • No historical snapshots are stored unless you keep them yourself.
  • You are responsible for complying with DoorDash's terms and applicable laws.

Dataset questions

What does one dataset item represent?

One store, product, product detail, store collection, or deal item, depending on the extraction toggles enabled.

Which field should I use as a unique identifier?

Use productId for products and storeId for stores; combine them with the resolved postal code for location-aware deduplication.

Are fields nullable or conditional?

Yes. description, price, rating, category, and imageUrl are conditional on the source, and store/collection records carry fields that product records do not.

Can I retrieve the records as CSV or JSON?

Yes. Export the default dataset as JSON, CSV, Excel, or XML, or read it through the Apify Dataset API.

How do I paginate large datasets?

Read items through the Dataset API in pages, or export the full dataset once the run completes.

What counts as a billable result?

Each record pushed to the dataset is one event charge, at the same per-event rate regardless of record type.

  • Instacart Scraper — grocery and store data from Instacart, for the same competitive assortment and pricing analyses.
  • Publix Scraper — grocery product records for price monitoring across delivery regions.
  • OpenTable Scraper — restaurant records with availability for the food-service market.
  • Yelp Scraper — business and rating records that join with DoorDash store identifiers.

Data Scrapers support

Need an additional field, record type, or export workflow? Contact Data Scrapers at stardustspotlight@gmail.com. Include a sample source URL, required fields, expected record volume, and preferred delivery format.