Discover/DoorDash API
live

DoorDash APIdoordash.com

Access DoorDash restaurant listings, full menus with prices, delivery fees, ratings, and promotions via 2 endpoints. Covers restaurants across the US.

Endpoint health
verified 5d ago
list_restaurants
get_restaurant
2/2 passing latest checkself-healing
Endpoints
2
Updated
22d ago

What is the DoorDash API?

The DoorDash API provides structured access to restaurant and menu data across the US through 2 endpoints. Use list_restaurants to retrieve restaurant names, ratings, delivery fees, estimated delivery times, and active promotions for a given city or location, and use get_restaurant to pull a complete menu breakdown — including item-level pricing, pickup and delivery availability, store hours, and address details — for any specific DoorDash store.

Try it
Maximum number of restaurants to return
Location slug in format '{city}-{state}-restaurants' (e.g., 'new-york-ny-restaurants', 'los-angeles-ca-restaurants', 'chicago-il-restaurants')
api.parse.bot/scraper/e3310be0-3731-4735-8c75-cec618e4ef6e/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/e3310be0-3731-4735-8c75-cec618e4ef6e/list_restaurants?limit=5&location=new-york-ny-restaurants' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace doordash-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: DoorDash Restaurant API — browse locations and drill into restaurant details."""
from parse_apis.doordash_restaurant_api import DoorDash, FulfillmentType, RestaurantNotFound

client = DoorDash()

# List restaurants in New York, capped at 5 total items
nyc = client.location("new-york-ny-restaurants")
for restaurant in nyc.restaurants(limit=5):
    print(restaurant.name, restaurant.rating, restaurant.delivery_fee)

# Drill into the first restaurant's full details
first = nyc.restaurants(limit=1).first()
if first:
    detail = first.details()
    print(detail.name, detail.price_range, detail.address.display_address)
    print(detail.operation_status.status, detail.delivery.estimated_minutes)

    # Browse the menu categories and items
    for category in detail.menu_items[:3]:
        print(category.category_name)
        for item in category.items[:2]:
            print("  ", item.name, item.price)

    # Check available menus
    for menu in detail.menu.available_menus:
        print(menu.name, menu.display_hours)

# Typed error handling for a bad store_id
try:
    bad = client.location("new-york-ny-restaurants").restaurants(limit=1).first()
    if bad:
        bad.store_id = "0000000"
        bad.details()
except RestaurantNotFound as exc:
    print(f"Restaurant not found: store_id={exc.store_id}")

print("exercised: location.restaurants / restaurant_summary.details / menu browsing / error handling")
All endpoints · 2 totalmissing one? ·

List restaurants available for delivery in a given city/location. Returns restaurant names, ratings, categories, delivery fees, estimated delivery times, and current promotions. Results are parsed from the DoorDash food delivery page for the specified location.

Input
ParamTypeDescription
limitintegerMaximum number of restaurants to return
locationstringLocation slug in format '{city}-{state}-restaurants' (e.g., 'new-york-ny-restaurants', 'los-angeles-ca-restaurants', 'chicago-il-restaurants')
Response
{
  "type": "object",
  "fields": {
    "location": "string, the location slug used for the query",
    "restaurants": "array of restaurant summary objects with store_id, name, slug, url, rating, rating_count, categories, delivery_fee, distance, delivery_time, and promotion",
    "total_found": "integer, number of restaurants returned"
  }
}

About the DoorDash API

Restaurant Discovery

The list_restaurants endpoint accepts a location parameter formatted as a city-state slug (e.g., new-york-ny-restaurants or los-angeles-ca-restaurants) and an optional limit to cap results. Each restaurant object in the response includes a store_id, name, slug, url, rating, rating_count, categories, delivery_fee, distance, and delivery_time. Active promotions are also surfaced per restaurant, making it straightforward to identify discounted delivery or current deals without fetching each store individually.

Restaurant Detail and Full Menus

The get_restaurant endpoint requires a store_id (available from list_restaurants results) and accepts optional fulfillment_type (Delivery or Pickup) and menu_id parameters. The response includes the restaurant's full menu structure: a menu object with id, name, display_hours, categories, and available_menus, plus a flat menu_items array organized by category, each containing category_id, category_name, and an array of items with prices. Separate delivery and pickup objects report real-time availability and estimated wait times.

Supporting Data Fields

Beyond menu data, get_restaurant returns a ratings object with average, count, display, and an is_new flag. The address object provides street, city, state, display_address, and lat/lng coordinates. The restaurant's phone number and categories array (cuisine types) are also included. This makes the endpoint useful for building location-aware or category-filtered restaurant directories without separate geocoding calls.

Reliability & maintenanceVerified

The DoorDash API is a managed, monitored endpoint for doordash.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when doordash.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official doordash.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
5d ago
Latest check
2/2 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a delivery fee comparison tool across multiple restaurants in a given city using delivery_fee and delivery_time fields from list_restaurants.
  • Aggregate menu item prices across competing restaurants in the same cuisine category for market analysis.
  • Track active promotions and discounts on DoorDash by city to surface current deals in a consumer-facing app.
  • Populate a restaurant directory with address coordinates, phone numbers, and cuisine categories from get_restaurant.
  • Monitor pickup vs. delivery availability and estimated wait times for a set of store IDs.
  • Extract structured menu data — including category breakdowns and item-level pricing — for restaurant analytics or competitive research.
  • Identify newly listed restaurants on DoorDash using the is_new flag in the ratings object.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does DoorDash have an official developer API?+
DoorDash has a Drive API aimed at merchants and logistics integrations (https://developer.doordash.com), but it is oriented toward delivery dispatch and order management for business partners, not public restaurant data, menus, or consumer-side listings.
What does `get_restaurant` return for menus, and can I request a specific menu version?+
By default it returns the current active menu. The response includes a menu object with id, name, display_hours, and an available_menus list. If you want a specific menu version — such as a breakfast or late-night menu — you can pass a menu_id from that available_menus list as an input parameter.
Does the API cover DoorDash restaurants outside the United States?+
The API currently covers US locations. The location parameter uses US city-state slugs. You can fork this API on Parse and revise it to add support for Canadian or Australian location slugs if DoorDash operates there in your target market.
Are individual menu item reviews or customer photos available?+
Not currently. The API returns aggregate ratings at the restaurant level (average, count, display) but does not expose per-item reviews, review text, or customer-uploaded photos. You can fork this API on Parse and revise it to add an endpoint targeting item-level review data if that surface is available.
How does pagination work for `list_restaurants`?+
The endpoint returns a total_found integer indicating how many restaurants were returned. You can control the number of results with the limit parameter. There is no built-in offset or cursor parameter exposed — if you need to page through large result sets, you would fork the API on Parse and revise to add offset-based pagination.
Page content last updated . Spec covers 2 endpoints from doordash.com.
Related APIs in Food DiningSee all →
ubereats.com API
Search for restaurants by cuisine or location and browse their menus, prices, ratings, and delivery times. Get detailed information about specific restaurants and menu items to find exactly what you want to order.
chownow.com API
Search for nearby restaurants, view their operating hours and delivery zones, and browse complete menus with all items, modifiers, and prices. Access detailed restaurant information and locations to find exactly what you're looking for on the ChowNow marketplace.
deliveroo.co.uk API
Search for restaurants and retrieve menus from Deliveroo UK. Look up restaurants by keyword and postcode, or fetch full menu details for any Deliveroo restaurant by URL.
postmates.com API
Browse and search Postmates restaurants to discover menus, items, and detailed restaurant information all in one place. Get category suggestions, view complete menus, and access specific item details to find exactly what you're looking for.
dennys.com API
Find Denny's restaurant locations near you by searching through states, cities, and zip codes, and browse their complete menu with detailed item information organized by category. Discover specific dishes, filter by tags, and get full details about any Denny's location to plan your visit.
resy.com, opentable.com API
Search and compare restaurants across Resy and OpenTable by cuisine, location, and price range, then sort results by price or ratings to find the best dining option. Retrieve comprehensive restaurant details including addresses, contact information, descriptions, and customer ratings all in one place.
food.grab.com API
Search for GrabFood restaurants by location and retrieve complete menu listings with prices and details for any store. Access real-time restaurant information and full dining options using a guest token obtained from the browser.
Thuisbezorgd.nl API
Search for restaurants on Thuisbezorgd.nl by location and cuisine type. Retrieve delivery times, ratings, fees, and menu details for restaurants across the Netherlands, with support for address lookup and cuisine filtering.