---
title: "Search the DoorDash store directory"
method: GET
path: "/datasets/doordash-stores/search"
tags: ["Datasets"]
---

# Search the DoorDash store directory

`GET /datasets/doordash-stores/search`

## Request

- Base URL: `https://api.crawlora.net/api/v1`
- URL: `https://api.crawlora.net/api/v1/datasets/doordash-stores/search`
- Auth: API key in header `x-api-key`

Searches the DoorDash merchant-location directory (dataset id `doordash-stores`). Identity and marketplace fields (name, marketplace tags, price range, ratings, DashPass eligibility) are available for each store; contact, address, and coordinates can be missing for a store that has not been fully processed yet. `display_status`, `display_asap_time`, `asap_available`, and `pickup_available` are a point-in-time observation of the PICKUP surface at crawl time, not a durable capability. Geographic coverage is best-effort. Supports full-text `q`, `country`/`state`/`city`/`tag` filters, `dash_pass_only`, `min_price`/`max_price`/`min_rating`, `lat`/`lon`/`radius_m` radius filtering, and `sort` (relevance, rating, distance, distance_asc). `sort=relevance` ranks by text-match score when `q` is supplied; without `q` it sorts by store name. Use `pagination=cursor` and the returned `next_cursor` to enumerate beyond the 10,000-result offset window against a point-in-time snapshot. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).

## Query parameters

- `q` string
- `country` string
- `state` string
- `city` string
- `tag` string
- `dash_pass_only` boolean
- `min_price` integer
- `max_price` integer
- `min_rating` number
- `lat` number
- `lon` number
- `radius_m` integer
- `sort` 'relevance' | 'rating' | 'distance' | 'distance_asc'
- `pagination` 'offset' | 'cursor'
- `cursor` string
- `page` integer
- `page_size` integer

## Headers

- `x-api-key` string, required

## Response `200`

OK

- DatasetsDoorDashStoresSearchResponseDoc
  - `code` integer
  - `data` DatasetsDoorDashStoreSearchResponse
    - `dataset` string
    - `has_more` boolean
    - `items` EsDoorDashStoreDatasetItem[]
      - `address` string
      - `asap_available` boolean
      - `average_rating` number
      - `city` string
      - `city_region` string
      - `country` string
      - `cover_image_url` string
      - `crawled_at` string
      - `dash_pass_eligible` boolean
      - `discovery_city` string: Discovery geography identifies the GeoNames seed cell that produced this observation. It is not a claim that the store's postal city matches the seed city's name; hydrated City/State come from the store-info card.
      - `discovery_country` string
      - `discovery_state` string
      - `display_asap_time` string
      - `display_status` string
      - `distance_meters` number
      - `first_seen_at` string
      - `has_phone` boolean
      - `has_website` boolean
      - `id` string
      - `last_seen_at` string
      - `latitude` number
      - `location` EsGeoPoint
        - `lat` number: Latitude in decimal degrees.
        - `lon` number: Longitude in decimal degrees.
      - `longitude` number
      - `name` string
      - `number_of_ratings` integer
      - `phone` string
      - `pickup_available` boolean
      - `postal_code` string
      - `price_range` integer
      - `run_id` string
      - `schema_version` integer
      - `search_text` string
      - `state` string
      - `store_id` string
      - `street` string
      - `tags` string[]: Tags is the marketplace's own comma-split tag list, kept as a keyword so it can back a terms facet; SearchText is the free-text projection over name + address + tags.
      - `top_items` EsDoorDashStoreTopItem[]: TopItems is a bounded preview of the merchant's menu, stored unindexed.
        - `image_url` string
        - `item_id` string
        - `name` string
        - `price` string
      - `url` string
      - `website` string
    - `next_cursor` string
    - `page` integer
    - `page_size` integer
    - `pagination` string
    - `sort` string
    - `total` integer
  - `msg` string

## Other responses

- `400`: Bad Request
- `429`: Too Many Requests
- `500`: Internal Server Error

---

[API](https://skmtc.dev/crawlora/apis/crawlora-api.md) · [All operations](https://skmtc.dev/crawlora/apis/crawlora-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crawlora/apis/crawlora-api/revisions/afac9b012a27?raw)
