scraper.mindq.ru

← все платформы

DoorDash

URL шаблон: https://www.doordash.com/store/{slug}/{store_id}/

Источник данных: ScraperAPI render=true → HTML с RSC payload (Next.js App Router)

Стратегия парсинга

  1. GET через ScraperAPI с `render=true` — нужен JS-рендер для Next.js.
  2. Из HTML вытягиваем все вызовы `self.__next_f.push([1, "..."])` — RSC chunks.
  3. В одном из чанков (декодируем unicode-escape) ищем маркер `{"__typename":"StorePageFeedResult"`.
  4. От маркера парсим JSON по балансировке скобок до закрывающей `}`.
  5. Из объекта `feed` извлекаем `storeHeader`, `menuBook`, `mxInfo`, `reviewPreview`, `itemLists`.

Поля ресторана

полеоткуда / какпример
store_idfeed.storeHeader.id946296
menu_idfeed.menuBook.id23475357
namefeed.storeHeader.name'Boston Pizza'
descriptionfeed.storeHeader.description'Italian-American chain...'
price_rangefeed.storeHeader.priceRangeDisplayString'$$'
ratingfeed.reviewPreview.consumerReviewData.avgRating4.2
num_ratingsfeed.reviewPreview.consumerReviewData.numRatings1234
num_ratings_strfeed.reviewPreview...numRatingsDisplayString'1.2K+'
is_openfeed.mxInfo.operationInfo.operationStatusInfo.operationStatus == OPENtrue
open_statusfeed.mxInfo.operationInfo.operationStatusInfo.description'Closes at 11 PM'
is_dashpassfeed.storeHeader.isDashpassPartnertrue
offers_deliveryfeed.storeHeader.offersDeliverytrue
offers_pickupfeed.storeHeader.offersPickuptrue
offers_cateringfeed.storeHeader.offersCateringfalse
hours_todayfeed.menuBook.displayOpenHours'11:00 AM – 11:00 PM'
hours_weekfeed.mxInfo.operationInfo.storeOperationHourInfo.hours{monday:'11:00–23:00',...}
address / street / city / state / countryfeed.mxInfo.address.*'1234 Main St, Toronto, ON, CA'
coordinatesfeed.mxInfo.address.{lat,lng}{lat:..., lng:...}
phonefeed.mxInfo.phoneno'+1416...'
websitefeed.mxInfo.website'https://bostonpizza.com'

Поля меню (для каждого блюда)

полеоткуда / какпример
categoryitemList.name'Pizza'
descriptionitemList.descriptionnull или текст категории
nameitem.name'Pepperoni Pizza'
descriptionitem.description'Italian style pepperoni...'
priceitem.displayPrice'$15.99'
old_priceitem.displayStrikethroughPricenull или цена
image_urlitem.imageUrl'https://doordash.com/cdn/...jpg'

Пример запроса

{
    "platform": "doordash",
    "url": "https://www.doordash.com/store/slug/store_id/"
}

Опции options.scraperapi описаны в общей документации.

Нюансы