Discover/Vercel API
live

Vercel APIevals-dashdish.vercel.app ↗

Search Dashdish restaurants and retrieve full menu items with prices, sizes, ratings, and delivery details via two simple REST endpoints.

Endpoint health
verified 2h ago
search_stores
get_store_menu
2/2 passing latest checkself-healing
Endpoints
2
Updated
2h ago

What is the Vercel API?

The Dashdish API exposes two endpoints — search_stores and get_store_menu — covering the full catalog of roughly 140 restaurants listed on Dashdish. search_stores returns store identifiers, delivery times, delivery fees, and average ratings. get_store_menu returns every published menu item for a given store, including item name, base price, a formatted price string, rating, and a three-tier size breakdown.

This call costs10 credits / call— charged only on success
Try it
Free-text store name filter, matched case-insensitively as a substring of the store name. Omitted = all stores.
→ api.parse.bot/scraper/6cc99fad-c0d0-4e3c-b4b5-5baa4c276e5a/<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/6cc99fad-c0d0-4e3c-b4b5-5baa4c276e5a/search_stores?query=Mashaallah' \
  -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 evals-dashdish-vercel-app-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: Dashdish SDK — search restaurants, browse menus."""
from parse_apis.evals_dashdish_vercel_app_api import Dashdish, StoreNotFound

client = Dashdish()

# Search for stores by name and list the first few results.
for store in client.stores.list(query="Halal", limit=3):
    print(store.name, store.average_rating, store.delivery_time)

# Drill into the first matching store's full menu.
store = client.stores.list(query="Mashaallah", limit=1).first()
if store is not None:
    print(f"\nMenu for {store.name}:")
    for item in store.menu_items.list(limit=5):
        print(f"  {item.name}  {item.price_display}  rating={item.rating}")
        # Each item lists available sizes with calories and surcharge.
        for sz in item.sizes:
            print(f"    {sz.size}: {sz.calories} cal, surcharge ${sz.surcharge:.2f}")

    # Filter menu items by name substring.
    biryani = store.menu_items.list(item_name="Biryani", limit=1).first()
    if biryani is not None:
        print(f"\nFound: {biryani.name} at {biryani.price_display}")

# Point lookup using a store_id discovered earlier.
if store is not None:
    try:
        refreshed = client.store(store_id=store.store_id)
        print(f"\nDirect lookup: {refreshed.name}")
    except StoreNotFound:
        print("Store no longer available")

print("\nexercised: stores.list / menu_items.list / store (point lookup)")
All endpoints · 2 totalmissing one? ·

Returns the restaurants/stores listed on the Dashdish home feed, one row per store, optionally narrowed by a case-insensitive substring match on the store name. The whole catalog (around 140 stores) is returned in one call with no pagination; omitting the query returns every store. Each row carries the store_id accepted by get_store_menu, the displayed distance, delivery time and delivery-fee line, and the displayed average rating (null when the store shows no rating). An empty stores array with total 0 means no store name contained the query.

Input
ParamTypeDescription
querystringFree-text store name filter, matched case-insensitively as a substring of the store name. Omitted = all stores.
Response
{
  "type": "object",
  "fields": {
    "query": "the filter that was applied, or null",
    "total": "number of stores returned after filtering",
    "stores": "array of store rows: store_id (pass to get_store_menu), name, distance, delivery_time, delivery_fee, average_rating (number or null), num_ratings_display (e.g. '(20+)' or null), is_currently_available"
  },
  "sample": {
    "data": {
      "query": "Mashaallah",
      "total": 1,
      "stores": [
        {
          "name": "Mashaallah Halal Food Pakistani Food",
          "distance": "1.0 mi",
          "store_id": "card.store:store:24618495",
          "delivery_fee": "$0 delivery fee, first order",
          "delivery_time": "32 min",
          "average_rating": 4,
          "num_ratings_display": "(20+)",
          "is_currently_available": true
        }
      ]
    },
    "status": "success"
  }
}

About the Vercel API

Restaurant Search

search_stores returns the complete Dashdish store catalog in a single call — around 140 stores with no pagination. Each row in the stores array includes a store_id (in the form card.store:store:<digits>), name, distance, delivery_time, delivery_fee, and average_rating. Pass the optional query parameter to filter by a case-insensitive substring of the store name; omit it entirely to receive every store. The total field always reflects the filtered count.

Menu Items

get_store_menu takes a store_id from the previous call and returns all menu items published on that store's page. Each item in the items array carries name, price (numeric, base/regular price), price_display (formatted as $x.xx), rating, image_url, and a sizes array. The sizes array contains three entries per item — Small (the regular/base tier, is_regular: true), Medium, and Large — each with its own price. Use the optional item_name parameter to filter results to items whose names contain a given substring.

Response Structure Notes

average_rating in search_stores may be null for stores with no published ratings. store_name is returned alongside results in get_store_menu so callers can display the restaurant name without a separate lookup. Filtering in both endpoints is substring-based and case-insensitive, meaning a query of chicken will match "Chicken Biryani", "Crispy Chicken", and similar names.

Reliability & maintenanceVerified

The Vercel API is a managed, monitored endpoint for evals-dashdish.vercel.app — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when evals-dashdish.vercel.app 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 evals-dashdish.vercel.app 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
2h 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 menu comparison tool that shows base prices and size-tier pricing across multiple Dashdish restaurants for a given dish name.
  • Aggregate delivery fees and estimated delivery times across all ~140 stores to surface the fastest or cheapest options.
  • Generate a searchable restaurant directory filtered by name substring and ranked by average_rating.
  • Compile a dataset of menu item ratings per restaurant to identify highest-rated dishes across the catalog.
  • Power a food-budget app that looks up price and sizes data for specific items before checkout.
  • Monitor price changes over time by periodically calling get_store_menu and comparing the numeric price field.
  • Build a dietary search tool that filters menu items by name keyword (e.g., 'vegan', 'gluten') using the item_name parameter.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Dashdish have an official public developer API?+
Dashdish does not publish an official public developer API or documented developer portal for third-party access to its restaurant and menu data.
What does `get_store_menu` return for item sizes, and how do the prices differ?+
Each menu item's sizes array contains three entries: Small (the base/regular tier, marked is_regular: true), Medium, and Large. Each size entry carries its own price, so the numeric price field at the item level reflects the Small/regular price. The size-tier prices let you see the full pricing ladder without a separate call.
Does the API cover order placement, cart management, or user accounts?+
No. The API covers store discovery via search_stores and menu data via get_store_menu — both read-only. Order placement, cart management, checkout, and user account data are not included. You can fork this API on Parse and revise it to add endpoints for those capabilities if the underlying data becomes accessible.
Is there pagination when retrieving the full store catalog?+
No pagination is needed. search_stores returns the entire catalog — roughly 140 stores — in a single response. The total field in the response confirms how many stores matched the optional query filter.
Does the API return cuisine type, opening hours, or geographic coordinates for stores?+
Not currently. search_stores returns store_id, name, distance, delivery_time, delivery_fee, and average_rating — cuisine type, opening hours, and coordinates are not part of the response. You can fork this API on Parse and revise it to add those fields if they are available on individual store pages.
Page content last updated . Spec covers 2 endpoints from evals-dashdish.vercel.app.
Related APIs in Food DiningSee all →