POST /api/doordash/stores
Price: 20 credits
Get full DoorDash (doordash.com) store/restaurant details by store id (or store URL): name, description, price range, rating and review count, address, phone, website, cuisines, delivery fee, ETA, opening hours, DoorDash ordering hours, photos, one menu with categories, items, prices, dietary tags and item ratings, the list of the store's menus, plus a review summary (star breakdown) and a few customer reviews.
Fetch a single DoorDash (doordash.com) store by id (e.g. '19906') or a full store URL. The categories hold the menu named in menu_id and menu_name; menus lists every menu of the store (for example breakfast, lunch and dinner), and each other one is fetched by passing its id as menu_id. A convenience or retail store (e.g. 28586914) returns its header, hours and one menus entry but no categories, also when that menu id is passed; a store with a very large catalog (e.g. 34744855) returns its header only: everything below the header, menus included, is empty.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)store string required — DoorDash store id or a full store URL (examples: "19906", "https://www.doordash.com/store/katzs-delicatessen-new-york-19906/"; minLength: 1)menu_id string nullable — DoorDash menu id of this store, one of the ids in menus; omitted, the store's current menu (examples: "1117216"; pattern: ^\d+$)@type string (default: "DoordashStore")id string requiredname string requiredurl string nullabledescription string nullableprice_range integer nullableprice_range_display string nullablerating number nullablerating_count integer nullablerating_count_display string nullablecurrency string nullabletimezone string nullablestore_bio string nullableimage string nullablesquare_cover string nullablebanner string nullableimages array (default: [])phone string nullablewebsite string nullablebusiness_id string nullablebusiness_name string nullablecuisines array (default: [])is_convenience boolean nullableis_open boolean nullableis_inactive boolean nullableoperation_status string nullableoffers_delivery boolean (default: false)offers_pickup boolean (default: false)is_dashpass_partner boolean (default: false)delivery_fee_text string nullable — The delivery-fee text DoorDash shows a visitor who has not entered an address, typically a first-order promotion such as '$0 delivery fee, first order'.delivery_minutes string nullablepickup_minutes string nullableasap_minutes integer nullablephoto_count_text string nullableaddress object nullable@type string (default: "DoordashAddress")street string nullablecity string nullablestate string nullabledisplay_address string nullablecountry_code string nullablelatitude number nullablelongitude number nullablehours array (default: [])@type string (default: "DoordashHours")day string requiredslots array (default: [])ordering_hours array (default: [])@type string (default: "DoordashHours")day string requiredslots array (default: [])menu_id string nullablemenu_name string nullablemenus array (default: [])@type string (default: "DoordashMenu")id string requiredname string nullablehours string nullablecategory_count integer (default: 0)item_count integer (default: 0)categories array (default: [])@type string (default: "DoordashMenuCategory")id string requiredname string requireddescription string nullableitems array (default: [])@type string (default: "DoordashMenuItem")id string requiredname string requireddescription string nullableprice number nullable — The item's listed price in the store currency, as DoorDash lists it. Without a promotion it is the price charged per item. On a percent-off promotion it is the price before the discount (equal to strikethrough_price). On a 'N for $X' promotion it is the bundle price $X. The amount charged per item under a promotion is charged_unit_price.display_price string nullable — The price text as DoorDash shows it: the charged amount on a percent-off promotion ('$28.80'), the bundle text on a 'N for $X' promotion ('2 for $14.00'), '$7.19+' when the price depends on an option.strikethrough_price number nullable — Present only on promoted items: the amount DoorDash shows crossed out, the undiscounted price of one item on a percent-off promotion and of the whole bundle quantity on a 'N for $X' promotion (28.0 beside '2 for $14.00').charged_unit_price number nullable — The amount actually charged per item. Equal to price without a promotion; the discounted amount shown in display_price on a percent-off promotion; $X divided by N on a 'N for $X' promotion (7.0 for '2 for $14.00').image string nullablecallout string nullablerating_display string nullablelike_percent integer nullablerating_count integer nullableserving_size string nullabledietary_tags array (default: [])badges array (default: [])review_summary object nullable@type string (default: "DoordashReviewSummary")average_rating number nullablerating_count integer nullablereview_count integer nullablestars_breakdown array (default: [])@type string (default: "DoordashStarBucket")stars integer requiredrating_count integer (default: 0)reviews array (default: [])@type string (default: "DoordashReview")consumer_review_uuid string requiredreviewer_display_name string nullablereviewer_id string nullablenum_stars integer nullablereview_text string nullablemarked_up_review_text string nullablereviewed_at integer nullableis_verified boolean (default: false)source string nullableitems array (default: [])422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — Store not found (well-formed id but no such store on DoorDash), or menu_id is not one of its menus Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.