← Back to all apps

Zomato

Foodby Zomato
Launched Mar 6, 2026 on ChatGPT

Whether you're chasing dreams, running meetings, or taking a break

  • Zomato is built for the ones who don't slow down. Craving biryani between brainstorms? A cheesy burger after a long day? Or just a salad and chai to keep things steady? With lightning-fast delivery from over 3 lakh restaurants, your fuel is never far. Order in seconds, track every bite, and keep going. Hustle harder - we've got the food.
7ChatGPT Tools
ZomatoDeveloper
FoodCategory

Available Tools

Create Cart

create_cart
Full Description

Use this to create a cart for a user with the given items. The menu items cannot be from multiple restaurants. The provided menu items must only have a single variant selected, if multiple variants are available, the user must select one variant for each item. Always return the cart amount as well as the items in the cart as a summary after successful creation.

Location Requirement: Before executing this tool, the agent MUST ensure that a valid user location has already been resolved using one of the following tools: 1. get_saved_addresses_for_user 2. search_addresses_for_user

The agent MUST reuse the selected location from those tools by passing either:

  • address_id (preferred when a saved address is selected), OR
  • precise_location (when the location was selected from search results).

The agent MUST NOT call this tool if neither address_id nor precise_location is available from a previously selected address.

Note for downstream consumers (including LLMs): Always trust the total_amount field returned in the Cart object. Do not attempt to recalculate the total from the item prices, as the backend may apply offers, discounts, or other adjustments. IMPORTANT: The final cart bill details should always be shown to the user before proceeding with checkout.

Parameters (2 required, 4 optional)
Required
itemsarray

List of items to be added to the cart.

res_idinteger

Restaurant ID for which the cart is being created.

Optional
address_idstring

Address ID of the user's saved delivery address. This should be obtained from the `get_saved_addresses_for_user` tool. If a saved address was selected earlier, always prefer passing `address_id`.

Default: null
payment_typestring

Payment method type for the cart. Use 'pay_later' unless user specifically wants to pay using UPI QR

Default: null
precise_locationobject

Precise delivery location selected by the user when no saved address is used. This location must come from the `search_addresses_for_user` tool results. If `address_id` is provided it will be used first. If `address_id` is not provided, `precise_location` is required.

Default: null
promo_codestring

Promo code name to be applied to the cart, if available.

Default: null

Get Menu Items Listing

get_menu_items_listing
Full Description

Returns a mapping of menu dish names to their categories for a given restaurant. Use this API to get the categories of a restaurant's menu first instead of fetching the entire menu to limit data.

Use this tool to:

  • Search for a particular menu dish by name in a restaurant
  • List all available menu dishes for a restaurant
  • Find out if a restaurant has a particular menu dish
  • Determine which category a menu dish belongs to
  • Present a summary of all menu dishes and their categories

For detailed data about a menu dish (tags, reviews, subcategories, etc.), use get_restaurant_menu_by_category.

If neither address_id nor precise_location is available, the agent must resolve the location before calling this tool.

Pass menu_filter to filter menu items based on price, rating, and flash sale availability.

  • if user had initial intent of seeing items less than 300 rupees and greater than 100 rupees, set menu_filter.min_price to 100 and menu_filter.max_price to 300.
  • if user had initial intent of seeing items in flash sale or 50% off deals, set menu_filter.flash_sale to True.
Parameters (1 required, 3 optional)
Required
res_idinteger

Restaurant ID of the restaurant, can get id from `get_restaurants_for_keyword` tool.

Optional
address_idstring

Address ID of the user's saved delivery address. This should be obtained from the `get_saved_addresses_for_user` tool. If a saved address was selected earlier, always prefer passing `address_id`.

Default: null
menu_filterobject

Filter to apply on menu items

Default: null
precise_locationobject

Precise delivery location selected by the user when no saved address is used. This location must come from the `search_addresses_for_user` tool results. If `address_id` is provided it will be used first. If `address_id` is not provided, `precise_location` is required.

Default: null

Get Order History

get_order_history
Full Description

This api is responsible for returning a user's order history in a location. It also supports pagination and searching order history on basis of a search query. Do not ask the user for pagination or entering a search query on this API unless the user explicitly asks for it. Returns: OrderHistory: A list of orders that the user has placed. This also contains postback parameters and a has more flag that can be used to fetch more results. postback_params and has_more in the response will always be passed to the next request if user is asking for more results. this will either return OrderHistory or an error message if the location cannot be resolved.

Parameters (0 required, 8 optional)
Optional
address_idstring

Address ID of the user's saved delivery address. This should be obtained from the `get_saved_addresses_for_user` tool. If a saved address was selected earlier, always prefer passing `address_id`.

Default: null
end_datestring

Optional end date for filtering orders (format: YYYY-MM-DD).

has_moreboolean

Indicates if there are more results to fetch.

Default: False
postback_paramsstring

Additional parameters for the request.

precise_locationobject

Precise delivery location selected by the user when no saved address is used. This location must come from the `search_addresses_for_user` tool results. If `address_id` is provided it will be used first. If `address_id` is not provided, `precise_location` is required.

Default: null
request_typestring

The type of request being made, e.g., 'initial' or 'load_more'.

Default: initial
search_querystring

Optional search query to filter order history.

start_datestring

Optional start date for filtering orders (format: YYYY-MM-DD).

Get Restaurant Menu By Categories

get_restaurant_menu_by_categories
Full Description

Retrieves menu items for a specific restaurant, filtered by categories.

Use this API to get dishes from a restaurant's menu for multiple categories. Call this tool to get detailed information about menu items including names, prices, tags, descriptions, and reviews.

Location Requirement: Before executing this tool, the agent MUST ensure that a valid user location has already been resolved using one of the following tools: 1. get_saved_addresses_for_user 2. search_addresses_for_user

The agent MUST reuse the selected location from those tools by passing either:

  • address_id (preferred when a saved address is selected), OR
  • precise_location (when the location was selected from search results).

The agent MUST NOT call this tool if neither address_id nor precise_location is available from a previously selected address.

Pass menu_filter to filter menu items based on price, rating, and flash sale availability.

  • If the user had initial intent of seeing items less than 300 rupees and greater than 100 rupees, set:

menu_filter.min_price = 100 and menu_filter.max_price = 300.

  • If the user had initial intent of seeing items in flash sale or 50% off deals, set:

menu_filter.flash_sale = True.

Parameters (2 required, 3 optional)
Required
categoriesarray

Categories to filter menu items by. Get available categories from `get_menu_items_listing` tool.

res_idinteger

Restaurant ID of the restaurant, can get id from `get_restaurants_for_keyword`.

Optional
address_idstring

Address ID of the user's saved delivery address. This should be obtained from the `get_saved_addresses_for_user` tool. If a saved address was selected earlier, always prefer passing `address_id`.

Default: null
menu_filterobject

Filter to apply on menu items

Default: null
precise_locationobject

Precise delivery location selected by the user when no saved address is used. This location must come from the `search_addresses_for_user` tool results. If `address_id` is provided it will be used first. If `address_id` is not provided, `precise_location` is required.

Default: null

Get Restaurants For Keyword

get_restaurants_for_keyword
Full Description

Main tool to do a general search for restaurants or to search restaurants based on a keyword. If no keyword is provided, this tool returns nearby recommended restaurants. Only get user's location using get_saved_addresses_for_user tool. DO NOT ASK THE USER TO INPUT THEIR LATITUDE AND LONGITUDE DIRECTLY.

Location Requirement: Before executing this tool, the agent MUST ensure that a valid user location has already been resolved using one of the following tools: 1. get_saved_addresses_for_user 2. search_addresses_for_user

The agent MUST reuse the selected location from those tools by passing either:

  • address_id (preferred when a saved address is selected), OR
  • precise_location (when the location was selected from search results).

The agent MUST NOT call this tool if neither address_id nor precise_location is available from a previously selected address.

Pass the keyword in the query parameter in the following formats:

  • if the user is searching for "give me restaurants serving pizza", pass "pizza" as the keyword
  • if the user is searching for "show me restaurants serving pizza in 5km radius", pass "pizza from restaurants under 5km" as the keyword
  • if the user is searching for "show me restaurants serving pizza under 500 rupees", pass "pizza" as the keyword and apply a filter of max_price 500
  • if the user is searching for "show me restaurants serving pizza with 4 star rating", pass "pizza" as the keyword and apply a filter of min_rating 4
  • if the user is searching for "show me restaurants serving pizza with 4 star rating in 5km radius", pass "pizza under 5km" as the keyword and apply a filter of min_rating 4
  • if the user is searching for "show me restaurants serving pizza within 50 minutes", pass "pizza from restaurants under 50 minutes" as the keyword
  • if the user is searching for "show me restaurants serving pizza under 500 with 4 star rating", pass "pizza" as the keyword and apply a filter of min_rating 4 and max_price 500
  • if the user is searching for "show me restaurants serving pizza under 500 and above 300 with 4.5 star rating", pass "pizza" as the keyword and apply a filter of min_rating 4.5 and min_price 300 and max_price 500
  • if the user is searching for "show me restaurants serving pizza and burger", pass "pizza and burger" as the keyword
  • if the user is searching for "give me pizza from dominos", pass "pizza from dominos" as the keyword
  • if the user is searching for "give me {cuisine_name} serving restaurants", pass "{cuisine_name}" as the keyword, where cuisine_name can be fever food, chinese, italian, etc.
  • if the user is searching for "show me pizza premium restaurants", pass "pizza" as the keyword and set the filter is_gourmet=True
  • if the user is searching for "show me pizza gourmet restaurants", pass "pizza" as the keyword and set the filter is_gourmet=True
  • if the user is searching for "show me new restaurants for me", pass "new" as the keyword and set the filter new_for_you_filter=True (New For You means new restaurants or restaurants not ordered from before)
  • if the user is searching for "show me new pizza restaurants for me", pass "pizza" as the keyword and set the filter new_for_you_filter=True
  • if the user is searching for "show me pizza restaurants with great offers near me", pass "pizza" as the keyword and set the filter offers_tag="default"
  • if the user is searching for "show me pizza restaurants with good offers near me", pass "pizza" as the keyword and set the filter offers_tag="default"
  • if the user is searching for "show me pizza restaurants with DOTD offers", pass "pizza" as the keyword and set the filter offers_tag="DOTD"
  • if the user is searching for "show me pizza restaurants with GOLD offers", pass "pizza" as the keyword and set the filter offers_tag="GOLD"
  • if the user is searching for "show me pizza restaurants with BOGO offers", pass "pizza" as the keyword and set the filter offers_tag="BOGO"
  • if the user is searching for "show me quick delivery restaurants", pass "quick delivery" as the keyword and set the filter near_and_fast=True (near_and_fast means quick delivery or fast delivery)
  • if the user is searching for "show me pizza restaurants with quick delivery", pass "pizza" as the keyword and set the filter near_and_fast=True
Parameters (0 required, 6 optional)
Optional
address_idstring

Address ID of the user's saved delivery address. This should be obtained from the `get_saved_addresses_for_user` tool. If a saved address was selected earlier, always prefer passing `address_id`.

Default: null
filterobject
Default: null
keywordstring

The keyword to search for. It can be a restaurant name, cuisine, or any other relevant term

Default: null
page_sizeinteger

Number of restaurants to retrieve per page

Default: 10
postback_paramsobject
Default: null
precise_locationobject

Precise delivery location selected by the user when no saved address is used. This location must come from the `search_addresses_for_user` tool results. If `address_id` is provided it will be used first. If `address_id` is not provided, `precise_location` is required.

Default: null

Get Saved Addresses For User

get_saved_addresses_for_user
Full Description

Retrieves all delivery addresses that the user has previously saved in their Zomato profile. User must be authenticated to access their addresses.

Search Addresses For User

search_addresses_for_user
Full Description

Location Resolution Policy

Before performing any restaurant search, menu retrieval, cart creation, or order history query, the agent MUST resolve the user's delivery location.

Step 1 — Check Saved Addresses The agent MUST first call: get_saved_addresses_for_user

If any saved address matches or is relevant to the user’s query:

  • Present the matching saved addresses to the user.
  • Ask the user to select one.
  • Use the selected address_id for all subsequent tool calls.

Step 2 — Fallback to Address Search If no saved address matches the user’s request or if the user has no saved addresses:

  • Call search_addresses_for_user with the location query.

After receiving the search results:

  • Show the addresses to the user.
  • Ask the user to select one.
  • Use the selected address object as precise_location for future tool calls.

Important Rules

  • The agent MUST NOT call restaurant, menu, or cart tools until a location is selected.
  • Valid locations can ONLY come from:

1. get_saved_addresses_for_user 2. search_addresses_for_user

  • Never ask the user to manually type latitude or longitude.

If neither address_id nor precise_location is available from the address tools, the agent MUST NOT call any restaurant or order related tool.

Args: query (str): A search string for searching an address. This could be a partial address, landmark, or any keyword associated with the address.

Returns: SavedAddressesResponse: A response object containing the list of matched addresses and relevant metadata, or an error message if the operation fails.

Parameters (1 required)
Required
querystring