Discover/Toasttab API
live

Toasttab APIorder.toasttab.com ↗

Fetch complete menus, categories, and every menu item with prices, descriptions, images, and stock status for any Toast-hosted restaurant.

Endpoint health
verified 2h ago
list_menu_items
1/1 passing latest checkself-healing
Endpoints
1
Updated
2h ago

What is the Toasttab API?

The order.toasttab.com API exposes 1 endpoint — list_menu_items — that returns the full online-ordering menu for any restaurant hosted on Toast's order page. A single call delivers all menus, groups, and a flat list of every item across all categories, each row carrying 7+ fields including price, description, and group context. No secondary requests or joins are required.

This call costs1 credit / call— charged only on success
Try it
The restaurant's slug from its Toast online-ordering URL, i.e. the path segment after order.toasttab.com/online/ (lowercase letters, digits, hyphens). One shape: zingsters-4169-cushing-parkway.
→ api.parse.bot/scraper/149c81fe-f702-41f9-9c82-a5c9c2e97777/<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/149c81fe-f702-41f9-9c82-a5c9c2e97777/list_menu_items?restaurant_slug=zingsters-4169-cushing-parkway' \
  -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 order-toasttab-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: Toast Online Ordering Menu API — fetch a restaurant's full menu."""
from parse_apis.order_toasttab_com_api import ToastMenu, RestaurantNotFound

client = ToastMenu()

# Fetch the complete menu catalog for a restaurant by its URL slug.
try:
    catalog = client.menu_catalogs.get(restaurant_slug="zingsters-4169-cushing-parkway")
except RestaurantNotFound:
    print("Restaurant not found for that slug")
    raise

print(f"{catalog.restaurant.name} ({catalog.total_count} items)")

# Walk menus and their category groups.
for menu in catalog.menus:
    print(f"\nMenu: {menu.name}")
    for group in menu.groups:
        print(f"  {group.name} — {group.item_count} items")

# Browse individual items: price, stock status, and image.
for item in catalog.items[:5]:
    stock = "in stock" if not item.out_of_stock else "OUT OF STOCK"
    print(f"  {item.name}: ${item.price:.2f} ({stock})")
    if item.image_url:
        print(f"    image: {item.image_url[:80]}…")

print("\nexercised: menu_catalogs.get")
All endpoints · 1 totalmissing one? ·

Returns the complete online-ordering menu for one Toast restaurant in a single round trip. The result is item-grained: `items` is a flat list of every menu item across all menus and groups, each row carrying its own menu_id/menu_name and group_id/group_name so no join is needed; `menus` is the menu → group outline with per-group item counts; `total_count` is the site's own published item total and `returned_count` is how many rows were extracted (they should match; a mismatch means the site changed shape). `price` is the first entry of `prices` in USD; `description` and `image_url` are null when the restaurant has not set them; `item_tags` is an empty array when no dietary tags are set. `has_modifiers` indicates the item has optional/required modifier choices (modifier details are not returned). Items the restaurant has hidden by time-based availability are excluded, matching what a guest sees. There is no pagination. An unknown slug returns a stale_input/input_not_found error.

Input
ParamTypeDescription
restaurant_slugrequiredstringThe restaurant's slug from its Toast online-ordering URL, i.e. the path segment after order.toasttab.com/online/ (lowercase letters, digits, hyphens). One shape: zingsters-4169-cushing-parkway.
Response
{
  "type": "object",
  "fields": {
    "items": "flat array of every menu item: item_id, name, description, price (number, USD), prices (array of numbers), default_modifiers_price, has_modifiers, out_of_stock, unit_of_measure, master_id, item_tags (array of strings), image_url (nullable), menu_id, menu_name, group_id, group_name",
    "menus": "array of menus, each with menu_id, name, description, and groups[] (group_id, name, description, item_count)",
    "restaurant": "object: restaurant_id (Toast restaurant GUID), name, slug (echo of the input)",
    "total_count": "integer: the site's published count of items across all menus",
    "returned_count": "integer: number of rows in items"
  },
  "sample": {
    "data": {
      "items": [
        {
          "name": "Zing-1",
          "price": 13.49,
          "prices": [
            13.49
          ],
          "item_id": "28afc75d-854c-40ac-a94f-688f89d97b93",
          "menu_id": "bbeae570-243f-4fa4-85e3-c0c83ccf116a",
          "group_id": "937219c9-3833-451b-85bd-214aa14ee2b4",
          "image_url": "https://d1w7312wesee68.cloudfront.net/IKguknDF6JiRbHDY2piG01lNKFghW2e0Gyuh0WSQUoI/resize:fit:1080:1080/plain/s3://toasttab/menu_service/restaurants/6d256cc1-4597-4882-ab61-63505a34784b/MenuItem/56abcaf0-7334-4184-97c9-ad5e01715da4.png",
          "item_tags": [],
          "master_id": "1600000000027185810",
          "menu_name": "Menu",
          "group_name": "Burgers",
          "description": "Chicken ZINGER, comes with Pickle, Coleslaw, Cheese and our signature and Zing sauces",
          "out_of_stock": false,
          "has_modifiers": true,
          "unit_of_measure": "NONE",
          "default_modifiers_price": 0
        },
        {
          "name": "Seasoned Fries ",
          "price": 4.99,
          "prices": [
            4.99
          ],
          "item_id": "4bc54c0e-0c88-4000-b021-6e9f5de7749d",
          "menu_id": "bbeae570-243f-4fa4-85e3-c0c83ccf116a",
          "group_id": "976575f0-0e29-439a-b22f-c7a57e99fd7d",
          "image_url": null,
          "item_tags": [],
          "master_id": "1600000004871239494",
          "menu_name": "Menu",
          "group_name": "Sides",
          "description": null,
          "out_of_stock": false,
          "has_modifiers": false,
          "unit_of_measure": "NONE",
          "default_modifiers_price": 0
        }
      ],
      "menus": [
        {
          "name": "Menu",
          "groups": [
            {
              "name": "Burgers",
              "group_id": "937219c9-3833-451b-85bd-214aa14ee2b4",
              "item_count": 18,
              "description": null
            },
            {
              "name": "Tender Only",
              "group_id": "198aecc4-eaa3-4b49-b1e2-ee190c9b350e",
              "item_count": 3,
              "description": null
            }
          ],
          "menu_id": "bbeae570-243f-4fa4-85e3-c0c83ccf116a",
          "description": null
        }
      ],
      "restaurant": {
        "name": "Zingsters - Fremont",
        "slug": "zingsters-4169-cushing-parkway",
        "restaurant_id": "6d256cc1-4597-4882-ab61-63505a34784b"
      },
      "total_count": 45,
      "returned_count": 45
    },
    "status": "success"
  }
}

About the Toasttab API

What the API Returns

The list_menu_items endpoint accepts one required parameter — restaurant_slug — which is the path segment from the restaurant's Toast ordering URL (e.g. zingsters-4169-cushing-parkway from order.toasttab.com/online/zingsters-4169-cushing-parkway). The response comes back in a single round trip with three top-level objects: restaurant, menus, and items.

Item-Level Data

The items array is a flat list of every menu item across all menus and categories. Each row includes item_id, name, description, price (a numeric USD value), prices (an array covering any size or variant tiers), and default_modifiers_price. Crucially, each item also carries menu_id, menu_name, group_id, and group_name, so you can filter or group items by category without traversing the menu tree separately.

Menu and Restaurant Structure

The menus array provides the structural view: each menu entry has a menu_id, name, description, and a groups array. Each group carries group_id, name, description, and item_count. The restaurant object echoes back the restaurant_id (the Toast GUID), name, and slug. The response also includes total_count (the published item count from the source) and returned_count (actual rows in items), making it straightforward to detect any discrepancy.

Coverage and Scope

The API works against any restaurant with a publicly accessible online-ordering page on order.toasttab.com. Coverage depends on what the restaurant has published on its Toast ordering page — if a menu or item is not live for online ordering, it will not appear in the response.

Reliability & maintenanceVerified

The Toasttab API is a managed, monitored endpoint for order.toasttab.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when order.toasttab.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 order.toasttab.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
2h ago
Latest check
1/1 endpoint 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
  • Aggregate and compare menus across multiple Toast-hosted restaurant locations using the restaurant_slug parameter.
  • Build a nutrition or allergen cross-reference tool using description and name fields from the items array.
  • Monitor price changes over time by polling price and prices fields for specific item_id values.
  • Populate a third-party food delivery or ordering interface with live menu data including group names and item counts.
  • Audit menu consistency across franchise locations by comparing items arrays from different slugs.
  • Detect out-of-stock or removed items by comparing total_count against returned_count between polling intervals.
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 Toast have an official developer API?+
Yes. Toast publishes a developer platform at developer.toasttab.com, which offers APIs primarily aimed at point-of-sale integrations for restaurant partners. Access requires a Toast partner account and is not open to the public for arbitrary menu reads.
What does `list_menu_items` return for restaurants with multiple menus (e.g. lunch and dinner)?+
All menus are returned in the same response. The menus array lists each menu with its own menu_id and groups, and every item in the flat items array carries menu_id and menu_name, so you can filter items to a specific menu entirely client-side without making additional requests.
Does the API return modifier options or add-on pricing for items?+
The items array includes default_modifiers_price, which reflects the base price contribution of any default modifiers. Full modifier groups and their individual options (e.g. specific toppings, sizes with distinct prices) are not broken out as separate fields in the current response. You can fork this API on Parse and revise it to add a modifier-detail endpoint if that granularity is needed.
Does the API cover restaurants not hosted on order.toasttab.com?+
No — the API is scoped to restaurants with a public online-ordering page on the order.toasttab.com domain. Restaurants using Toast's POS but not its online ordering, or those on other ordering platforms, are not covered. You can fork this API on Parse and revise it to target other ordering platforms as separate endpoints.
How fresh is the menu data?+
The response reflects the current published state of the restaurant's online-ordering menu at request time. There is no caching layer introduced by the API itself, but menu updates made by the restaurant may take a short time to propagate on the source before they appear in a new API response.
Page content last updated . Spec covers 1 endpoint from order.toasttab.com.
Related APIs in Food DiningSee all →
toasttab.com API
Search for restaurants on ToastTab.com by location and keyword. Retrieve restaurant profiles, contact details, hours, and full menus — including item names, prices, descriptions, and customization options.
order.store API
Access data from order.store.
menupages.com API
Access restaurant menu data from MenuPages including all categories, items with descriptions and prices, plus customization options and modifiers. Search for specific menus or individual menu items to build restaurant catalogs, comparison tools, or delivery app integrations.
osteriasugliscavi.com API
osteriasugliscavi.com API
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.
doordash.com API
Search for restaurants on DoorDash and view their menus, hours, and current promotions to find exactly what you're looking for. Get detailed information about any restaurant including pricing, availability, and active discounts across the US.
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.
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.